- 1 review
- 1 completed
First of all, I need to say that I had previous knowledge in programming languages, and even though I hadn't written in pure C for almost 2 years, it might have been easier for me. I've learned everything I know about CS on the internet and tried most of the different types : \- Written tutorials, some small around one notion, others on a whole language. \- Walkthroughs and videos (like The New Boston). \- Interactive and gamified tutorials (Codecademy's Python, Codeschool, CodeAvengers, and many others). \- iTunes U lectures (Stanford's CS193P - iPhone development) \- Online courses such as Coursera's CS215. \- I've never bought books and never had the need to. And yet, none of this was quite like CS50x. # The lectures The lecture are one of the most important parts of the course, David J. Malan is a great lecturer. He uses clever real life examples to make complicated notions easier, in fact, you don't need any programming experience and it's still useful in non- programming jobs. Unlike many other programming courses, there is a balance between explanations and the actual code itself, not just slides without any context. Because Malan writes the code during the lectures, there are some unexpected events, bugs and typos. And indeed making errors is an important part of the process, so by showing mistakes we can encounter that makes the lectures interactive and close to real life programming. Moreover, there is an emphasis on explaining how stuff really works under the hood while most programming tutorials don't provide this kind of knowledge. There is here little focus on syntax but more on the logic behind computers. # Problem Sets Without a doubt, psets were the other important part of the course. They always involved finding a solution to a given problem, making some task easier using technology, and there often tackled new notions around CS like the structure of a bitmap or how corrupted data is retrieved. The use of the CS50 Appliance, a virtual machine made with all the necessary tools built-in, avoids all the pain related to cross-platform compatibility so we can focus of the code. Like a real life course, you can't gloss over some requirements. The psets are always challenging but doable because we are always taught how to break it down and given a starting point. In the specifications, we are aslo encouraged to write efficient and elegant code. The psets are the core of the course but can even make great challenges for a programmer outside this context. Most of the time is spend using, applying and actually working with the notions so we end up naturally knowing them. I used to struggle a bit with pointers and now they look so easy. # Additional Content Sections: I haven't watched any of them, I guess they are different way of learning. Shorts: They were an in-depth look at either one of the lecture's notions or a new one. Their short format made them interesting to watch. Walkthrough: I never used them for the first half of the psets, but once we moved to harder stuff they were very useful as a guide for the code design and never gave up the solution. # Community The lecture and psets elements already made it a great course, but the novelty here and the important part was making it an online course. And the community part, CS50x Discuss was available on EdX's website, made it the closest you can get to real-life course. There's this real spirit of help that brings people together to find solutions to the psets or discuss around the course's content. What you will learn (among other) \- C \- PHP \- MVC \- Data Types \- Search and sort algorithms \- Asymptotic notation \- Scratch It was memorable and much more than any other learning experience I've ever had online because it successfully managed to make it a journey. CS50x isn't just the quintessential Harvard course, it's now the quintessential online course.