Should You Take CS50?
There is a popular opinion that no programming course is worth the money you pay for it and no free course is good enough to be worth your time invested into following it. Although it’s up to you to agree or disagree with this statement, I want to tell you about one programming course that is worth attention.
Harvard CS50 is one of the most popular Computer Science courses. It is promoted by many articles and roadmaps on programming. Unlike many boot camps or interactive programming courses that teach beginners several tricks for one programming language, CS50 focuses on concepts.
I started this course three times: first, when I was learning to program, then after I found my first job as a developer, and finally when I had 2.5 years of professional experience. I’m going to tell you how you can profit from it depending on your skills and qualification.
(Almost) No Coding Experience
The most motivating thing that you’ll find out if you follow along through all the lectures is the comparison of your knowledge and CS understanding before the first lecture and after the last one. At the final class, David J. Malan summarizes concepts taught during the course and reminds that even people, who identified themselves as ‘less confident’ at the beginning, accomplished a lot and asks to compare yourself not with other classmates but with a version of you from several weeks before. Such self-confidence and motivation cannot be overestimated at the beginning of your learning path because you’ll face hard-to-grasp concepts and get stuck on various problems and it’s much easier to keep going when you believe in yourself.
If you decide to complete the course assignments, you’ll have to use at least two programming languages. On the one hand, it opens new horizons, and you will see in what way compiled languages are different from interpreted ones and implement the same algorithms using C and Python. On the other hand, new syntax and language approach towards solving tasks may be difficult at first even for professionals and are extremely confusing for a beginner. The advice here is either concentrate solely on lectures and use other resources for practice or take your time, watch additional tutorials, read the documentation and get ready to spend more than 12 weeks on the course. Both options will be useful. Remember not to force yourself if you feel that CS50 is too challenging: you always can come back later with more background.
One more reason to take the course is that even if your income is not enough to allow paying for a verified certificate, you can take the course for free and even have your assignments graded.
Little Coding Experience
I think that the best time for CS50 is when you have some programming experience. For example, you’ve built a portfolio website, implemented a couple of study projects or just started an internship in an IT company. This means that you are already familiar with at least one programming language and can implement simple algorithms to solve tasks but still lack the understanding of a whole picture. You’ll get answers to questions like How does computer memory work? or How hash maps are implemented under the hood? This can be a step from programming solutions mechanically to understanding why you should choose one data structure over the other or whether your function should use recursion. CS50 won’t replace reading books about data structures and algorithms or documentation of the programming language you’re using but it will show in which directions to search for more information.
The course is represented on many social media. The group on Facebook is very active and extremely friendly. You can quickly get answers to your questions or help others to debug their code. The topics discussed there are not limited to CS50 lectures or assignmens, people also ask how to choose a PC for the course, how to find a first job or what interactive tutorials to use to learn SQL. You can to ask questions without being afraid and learn to formulate them in such a way that other people understand your problem.
Good Programming Skills
Why taking a beginner course if you’re a professional? Probably you already know how to implement insertion sort and the difference between left and inner SQL joins. If so, it means that you can (or should if your role implies that) mentor other programmers, but having profound knowledge doesn’t guarantee that you’re a good teacher and can clearly explain things. Teaching is difficult and, perhaps, more difficult than learning something yourself, and the ability to decide on what is important and how to make it understandable doesn’t come for granted. Remember the beginning of the article? Whether you’re going to launch your course or only mentor a junior colleague you need to know best practices of teaching.
CS50 can be used as an example and source of inspiration. You can analyze the course structure and evaluate how much material can be left outside of lectures for self-study. You can complete assignments to see how the submission process can be automated and in what way tests can help to correct the solution. If you haven’t used C or Python, you will remember the feeling of a beginner making the first steps and make your judgment on how difficult tasks should be. I’m not saying that CS50 is the best programming course but it has an enormous number of participants and every year the team is gathering the feedback to improve it so there are many things to learn and incorporate into your mentoring style.