Course Poll

maybe VueJs too ? javascript frameworks are growing fast

1 Like

Hi, Does codecademy currently have any C programming courses? I’m a computer scientist student, I’ve been studying for 3 years now, I took a placement year doing User Research which took me away from programming.

I’d like to get back into programming with C as my final year pathway is Embedded systems which I will be using the C language for.

Any advice would be much appreciated

1 Like

So far, CC doesn’t have a C programming course due to the focus on web technologies as you can check the course offer. I would recommend searching another learning platform to learn C but I’m afraid there aren’t enough courses related to that.

1 Like

GNU-C-Manual-HTML
GNU-C-Manual-PDF
https://www.learn-c.org/
https://www.cprogramming.com/tutorial/c-tutorial.html

https://devdocs.io/c/
One of my go to language docs

These are a few cites I’ve come across as free tutorials.
Other than those i’m not to sure would have to do more digging.
I’m sure there are plenty of essential books/references
all depending on if your willing to spend money or free pdfs

You maybe right that not most ’casual’ users will dive into C at all, or possibly right away. Even though the majority of the courses are based solely on web development… IMO this site is one of the best tutorial/educational programming websites that can be found on the internet. With that being said, I don’t see how it would hurt to diversify some program courses that tailor to a more broader spectrum, especially for consecutive active users that are looking to progress with a more in-depth high-level language.

You can do it now! You’ll need some knowledge about C or Assembly(I would recommend Assembly as there’s almost no abstraction) and a hex editor.
Step 1: Write some stuff.
Start with a something simple. This is something you could try to do in assembly(save it under example.s):

.code32
.section .text
.globl _start
_start:
movl $1, %eax
movl $0x55, %ebx #You can put any number between 0 and 255(0xff) here.
                 #I've only moved 0x55 into the register because it's easy to see.
int $0x80

Step 2: Assemble, link it, run it, read its return value and read the binary file with your hex editor($ here shows that you’re running a command in a command prompt and I’m assuming that your hex editor is called hexedit):

$ as -o example.o example.s
$ ld -o example example.o
$ ./example
$ echo $?
85
$ hexedit example

You should now be seeing the data in the example file. You now can try to make out what every instruction you wrote in example.s means in example.

You can also try doing something similar with C. Here’s an example program(save it as example2.c):

int main(void) {
  return 0x55;
}

Now compile it, run it, read the return value, create a file with this same code just in assembly, read the file with assembly code and open the binary file in your hex editor:

$ gcc -o example2 example2.c
$ ./example2
$ echo $?
85
$ gcc -S -o example2.s example2.c
$ cat example2.s #Edit: I compiled it on a x86_64 system. That's the reason why the q suffix is used 
                 #on some instructions and why there're some registers like %rsp and %rbp. All the other stuff was done on a x86 system.
	.file	"example2.c"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$85, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4"
	.section	.note.GNU-stack,"",@progbits
$ hexedit example2

Now compare all three files. You may get some interesting conclusions.

If you say “hey! This is in the ELF format. The executable is so full of garbage that isn’t part of my code!” then you can try to make it a bit differently. We’re going to write an MBR instead of a program run by the OS.

Write this in boot.s:

.code16
.section .text
.globl _start
_start:
movw $0x55, %ax

loop_begin:
jmp loop_begin

.fill 510 - ( . - _start), 1, 0 #An MBR has to be 512 bytes big. We're going
                                #to fill the not occupied space with zeroes

.word 0xaa55                    #Magic number

Assemble it, link it, boot it(i’m assuming that you will be using qemu) and read the binary file with your hex editor:

$ as -o boot.o boot.s
$ ld --oformat binary -Ttext 0x7c00 -o boot.bin boot.o
$ qemu-system-i386 boot.bin
$ hexedit boot.bin

Now compare boot.bin with boot.s and study them.
Happy hacking! :slight_smile:

I would like to see PHP. There are quite a few jobs for front-end developers that require knowledge of it.

Unfortunately, PHP got removed from Codecademy due to low demand, as you can check the official post:

I read that but the idea that PHP is declining in popularity can’t be true if you search for work. PHP is requested as often as JS. Often PHP is requested instead of JS.

Guys please please please! I really love your platform and C# is a great language which I want to learn. I do not want to go to other schools and websites for it, but you leave me no other options. If there will ever be great courses on C# here (and not just basic stuff) Codecademy will grow even faster than it is right now.
also Xamarin! why you need to bother with Java, C, Swift and a bunch of third party extensions when you can just use C# and Xamarin platform for a decent multiplatform. :Let’s leave biases about microsoft and embrace multiplatform! :slight_smile:

1 Like

It’s good that C++ is winning because C++ is VERY useful, heres somethings made with it:
-Unity
-Unreal Engine
-Notepad++
-Music Maker
-eh most creators (by creators I mean things like unity and stuff)

Would love to see R in the course options too!

My vote would go to R!

I’d love to see Golang, and I’d be happy to write some of the projects.

1 Like

Can’t wait for the new C++!!! looks like its winning and hopefully Codeacademy takes this seriously.

2 Likes

C’mon let’s get some more mobile compatible languages like Swift.

I feel Lua is needed, because a lot of people play Roblox now, and it requires Lua to code games, so it would be a good thing to have here.

1 Like

Old post. If needed, we can create a new one.