Computational Thinking with Beginning C Programming

share ›
‹ links

Below are the top discussions from Reddit that mention this online Coursera specialization from University of Colorado System.

Offered by University of Colorado System. Enroll for free.

Reddsera may receive an affiliate commission if you enroll in a paid course after using these buttons to visit Coursera. Thank you for using these buttons to support Reddsera.

Offered by
University of Colorado System

Reddit Posts and Comments

0 posts • 4 mentions • top 4 shown below

r/greece • comment
1 points • unauthorized_feature

Όποτε έχεις λίγο χρόνο θα μπορούσες να ρίξεις μια ματιά σε αυτά τα δύο να μου πεις τη γνώμη σου; Σπουδάζω πληροφορική και για διάφορους λόγους διαβάζω μόνος μου, οπότε ψάχνω project-based projects για να μάθω προγραμματισμό.

https://www.coursera.org/specializations/c-programming

https://www.coursera.org/specializations/computational-thinking-c-programming

r/javahelp • comment
1 points • Cmgeodude

After learning Java, C basics will feel pretty familiar. Besides the boilerplate, the first times you'll hit major differences are:

  1. Strings. Java abstracts this away, but Strings are just arrays of chars. In C, there are libraries that can help you work around this.
  2. User input: You'll need to dereference values to save input values to them. This is as easy as putting an ampersand in front of the variable name you're saving the value to: scanf("%d", &myVar); // scans an int value to the (address of the) variable myVar. In my opinion, this is actually easier than in Java.
  3. Array sizes! Many of the most popular C compilers won't accept undefined array sizes. While I can store a variable as a size in Java and fill it in later, in C I cannot do that. You can get around this using pointers. Pointers are just variables that point to an address in memory rather than the value(s) in that address. Pointers are defined by adding a * before the variable name.
  4. Pointers almost immediately imply memory allocation. Both pointers and memory allocation are quite a bit easier than people make them out to be. Let the computer do the math. Need an array of numElements integer values?
  5. int* myArray = malloc(sizeOf(int) * numElements); // this works on all compilers
  6. int myArray[] = new int[numElements]; // works just fine in xCode and similar compilers. It is just like in Java.

​

Codecademy has a free C++ course. C++ is its own language with its own standards, but you almost necessarily have to learn the basics of C in the same process. Everything C works in C++, though the opposite isn't necessarily true. If you learn C++, you'll be able to adapt to C in a matter of hours.

Learn C - Free Interactive C Tutorial (learn-c.org) is not the most attractive/user-friendly tutorial, but it's free and gives you a playground to practice your new C skills.

Coursera has a Computational Thinking with C Programming specialization. It's paid, but you can theoretically learn the material without paying (you just won't get graded on the exercises).

If you're feeling ready to tackle data structures, this course (paid again, sorry) on Udemy has a fairly good review of C/C++. The very basics look so much like Java that you won't have to worry about missing those. There is a pretty good review of all the material I listed above at the beginning of this course, so you'll be off to a pretty easy starting point. Challenging yourself with data structures in C/C++ is a great way to take the plunge.

Once you're feeling pretty comfy in C/C++, this Coursera specialization (also paid) is challenging and amazing. If you get through this, you're effectively a C and C++ programmer.

I'm squarely in the camp that doesn't think that C is the best starting point for programming/CS, but I know that you don't have a choice with your course content. That said, if your interest is to learn CS and you already know the basics in a higher level language (Python, JS, Ruby, Java, or C#, among the most popular), take a few hours to learn the very, very basics of assembly. Assembly for architectures like the 6502 is simple and helps make C concepts make a lot more sense. That will give you a much clearer idea of what's going on under the hood and why C does things the way it does. If you just want to get to programming and don't care about Two's complement arithmetic, interrupts, Z-flags, and ALUs, you probably don't need to dig in that far and understand register-by-register/flag-by-flag what is happening in the processor. In that case, skip assembly and play with an Arduino or something to learn C.

r/learnprogramming • comment
1 points • ItisAhmad

Hi, I will develop a road map for you.

  1. Computational Thinking with Beginning C Programming Specialization (Coursera)
  2. Java Programming and Software Engineering Fundamentals Specialization
  3. Advanced-Data Structures in Java
  4. Game Design and Development Specialization
  5. Algorithms Specialization by Stanford

Now you have a good solid programming base, you can go in any field such as game development, machine learning and AI, web programming, cyber security, etc.

r/learnprogramming • comment
1 points • teknewb

Harvard's CS50 on edx.org is probably the most recommended course here and it starts with C (although they've implemented their own training wheels of sorts using their own library to make it easier to start with).

https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x

More courses:

https://www.edx.org/professional-certificate/dartmouth-imtx-c-programming-with-linux

https://www.zybooks.com/catalog/programming-in-c/

I like Zybooks, might have to email them to get access to buy outside of a college course but no biggie.

https://www.coursera.org/specializations/computational-thinking-c-programming

https://www.coursera.org/specializations/c-programming