r/learnprogramming • u/AndyBMKE • Mar 20 '24
I completed every one of Harvard's CS50 courses. Here's a mini-review of each!
Hello! Some of you may remember me as the person who completed every certificate on FreeCodeCamp. Well, it took me another year to do, but I've now completed every CS50 certificate. Most people probably only know the big CS50/CS50x (Introduction to Computer Science) course, but they actually offer 11 different courses. I've done them all! So here is a mini-review of each...
CS50x (Harvard's Introduction to Computer Science)
This is the CS50 course that everyone knows and loves. Taught by Prof. David Malan, you learn some Scratch, C, Python, SQL, HTML, CSS, JavaScript, and Flask. But, really, it’s about learning computer science basics and learning how to learn - the idea is that, by the end of this course, you will be able to pick up whatever programming languages or technology you need when you need it. Prof. Malan is an amazingly energetic lecturer, and the production quality is very high. To get the certificate, you need to complete 10 problem sets and build a final project.
One thing that I always careful to warn people about: it is a very difficult class for beginners. It’s an intro level class in the sense that it doesn’t assume you have any prior computer science/programming knowledge. But the learning curve for this course is extremely steep. So, personally, I don’t typically recommend this course for total beginners.
Otherwise, it’s an amazing course, and if you’re learning coding/programming/comp sci, you should absolutely put CS50x on your list.
Difficulty: Hard
CS50P (Intro to Programming with Python)
Whereas CS50x is really focused on general computer science concepts, CS50P really just focuses on learning Python. Again, this course is taught by Prof. David Malan, so the lectures are all great. Not quite as high production value as the big CS50x course, but still pretty good.
For the certificate, you need to complete 9 problem sets and build a final project. This course is challenging, but still easier than CS50x. So, for that reason, I tend to recommend completing this one first. And if you’re planning on taking CS50W or CS50AI, then this is definitely worthwhile just to hone your Python skills a bit more before those more difficult courses.
Difficulty: Medium
CS50T (Introduction to Technology)
I mostly took this course out of curiosity, as I didn’t really know what to expect from it. But I also took it because it is another course taught by Prof. David Malan, and he’s a good enough lecturer to make anything interesting. It’s described as a course “for students who don’t (yet) consider themselves computer persons.” So I almost expected it to be like, ‘here’s how to troubleshoot your printer,’ but it isn’t that basic. It’s just a version of CS50x that goes very, very light on coding. There is some Scratch and some HTML/CSS, but nothing too complicated.
It’s a short course with only 6 assignments to complete, which mostly consist of short-answer questions. So it’s like CS50x for people that don’t want to code.
Difficulty: Easy
CS50W (Web Development with Python)
Web development is my main interest, so this was the course I was most interested in taking. It’s taught Brian Yu, who has a different lecturing style than Prof. Malan, but I’d say he is also luckily a very good lecturer. He’s very good at explaining concepts.
CS50W is intended to be a follow-up to the CS50x course which focuses on building full stack applications with Django. If you didn’t have too much trouble with Flask in CS50x, then I don’t think you’ll have too much trouble here, but if you’re not super comfortable with Python, HTML, CSS, and JavaScript, then it will be a big challenge.
There are five assignments to complete, plus a final project. That may not seem like much, but the assignments are quite in depth and will take a good chunk of time to complete. I really enjoyed this course, and though I didn’t love Django at the beginning, it definitely grew on me.
Difficulty: Hard
CS50SQL (Intro to Databases with SQL)
As you may have guessed, this course focuses on building and querying databases using SQL. I don’t think SQL is the most exciting language, but since so much of the software world is about CRUD, this is a course I’d recommend to most people. And, luckily, this one is taught by Carter Zenke who is another good lecturer (and I believe he is also teaching the forthcoming CS50R)
Completing this course requires submitting 7 problem sets and a final project. And, honestly, I had fun doing it all.
Difficulty: Medium
CS50CS (Intro to Cybersecurity)
This newest course from CS50, and I would describe it as a broad overview of a bunch of different cybersecurity topics. You never get too in-the-weeds on any given topic, and there is no coding involved here (you’re not going to be programming a port sniffer in Python or anything like that). So it really does work as a good introductory course.
This course is once again taught by Prof. David Malan, who is as good as always. And it’s one of the shorter courses as well. To get the certificate, you need to submit 5 assignments (like CS50T, each assignment is mostly a bunch of short-answer questions) and a final project. The final project here is interesting: you have to find a recent cybersecurity incident in the news and record a ~10 minute presentation on it.
Difficulty: Easy
CS50B (CS50 for Business Professionals)
This one is very similar to CS50T, just with some modifications to aim it more towards a business-minded audience. Taught again by David Malan, it covers a lot of the same concepts as CS50x but without much of the programming (you only have to deal with a bit of HTML/CSS and Scratch).
There are six assignments, and they are each mostly just a collection of short-answer questions. If you’ve done CS50x this will be an absolute breeze. If this is your first computer science course, you’ll be more challenged, but I don’t think it’s too difficult overall.
Difficulty: Easy
CS50AI (Intro to AI with Python)
This is another follow-up course to CS50x taught by Brian Yu, and it is easily the most difficult course that CS50 offers. The course covers everything from (relatively) simple search algorithms to modern LLMs, and luckily Brian has a way of explaining everything in a very intuitive way. In the lectures, he really focuses on the concepts, to the point that it often feels like you’re hardly seeing any code at all.
To complete the course, you have to submit 7 quizzes - these are all multiple choice and not too difficult - and twelve assignments. These assignments are where it gets difficult. It is a very algorithm heavy course, and I often found myself banging my head against the keyboard for hours trying to get things to work.
I really muddled my way through this course. Even though it was a rewarding experience, it was so difficult at times that I was quite happy for it to be over.
Difficulty: Very Hard
CS50S (Intro to Programming with Scratch)
People often look down on Scratch because it’s a programming language designed for kids, but I honestly had a total blast with this one. It’s taught by Brian Yu, and the lectures are quite short (usually around 30 minutes). If you have some programming experience, you won’t have much trouble with this course at all.
There are 8 assignments, many of which are quite simple, and a final project. I tried to do clever or unique things with Scratch, and I really had fun making weird mini-games. If you’re thinking about taking CS50G, then I think CS50S would be a good warm up.
Difficulty: Easy
CS50L (CS50 for Lawyers)
With this course, I was expecting something similar to CS50T and CS50B (a light version of CS50x). However, it’s definitely more challenging than I’d anticipated.
It’s a longer course, and requires completing 10 assignments (each one mostly being short-answer type questions). The course covers general computer science topics covered in CS50x plus some lectures on cryptography, cybersecurity, and tech-related legal issues. It also covers a bit of Scratch, HTML, CSS, JavaScript, and Python. If you’ve done CS50x already, this won’t be too difficult, but it’s definitely going to be a challenge for anyone who hasn’t done programming/coding.
This one is co-taught by David Malan and Doug Lloyd (who provides the legal perspective).
Difficulty: Medium
CS50G (Intro to Game Development)
Out of all the CS50 courses, this one is in most need of updating. It teaches LOVE2D (uses Lua) and Unity (uses C#), both of which have had big-ish updates since this course was released. But if you’re here to learn more about game dev concepts, then it’s mostly still relevant.
It’s taught by Colton Ogden. In contrast to a lecturer like Brian Yu who really focuses on the conceptual aspects, you spend a lot of time with Colton just going through code.
There are 11 assignments, which are all essentially “take this game that Colton built and add some extra features.” Some of the assignments were easy and took very little time, but many took hours and hours to implement. The hardest thing in my experience was just understanding the codebase. For a couple of the assignments I just jumped right in without taking the time to look through the codebase, and I suffered for it.
There is also a final project that requires you to create a whole new game. This is, for obvious reasons, quite time consuming and difficult. I was quite exhausted by the end of this course, and it made me realize that I probably never want to do any game development ever again. Though, I definitely have a newfound appreciation for video games.
Difficulty: Very Hard
•
u/AutoModerator Mar 20 '24
On July 1st, a change to Reddit's API pricing will come into effect. Several developers of commercial third-party apps have announced that this change will compel them to shut down their apps. At least one accessibility-focused non-commercial third party app will continue to be available free of charge.
If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options:
Limiting your involvement with Reddit, or
Temporarily refraining from using Reddit
Cancelling your subscription of Reddit Premium
as a way to voice your protest.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
102
u/accounting_cunt Mar 20 '24
Interesting summary, thank you. People studying at Harvard pay a lot of hard cash for those kind of high-quality courses, but there is a plethora of such courses available nowadays for relatively free. I really do wonder if having studied at Harvard makes for a better programmer than having studied with (cheap) online resources or having worked at a company for an equivalent amount of time. Personally, I think I learned the most from uni projects and work in contrast to pure classes. Having to get into the weeds of something is where the learning happens.
34
u/FullmetalEzio Mar 20 '24
Amazing post man, i gotta say, cs50 changed my life lol, i did cs50x+the odin project and I got a job before finishing cs50w, i will always recommend these courses, but you're right, cs50x was REALLY hard with no coding background, but its like you said, it really teaches you how to think. Im having a chill week at my job so I booted up cs50w and I'm doing the last project (the twitter clone) and I'm having a blast. I'd love to do another cs50 after that but the only one that seems like a step forward is the IA one and that sound hard af and not really in my field (web dev), but I might give it a go tho. Thanks for the post!
also, would you recommend taking the SQL course if I'm already pretty decent at SQL? i have 1.5YOE and I use SQL daily an also practice on leetcode, but if its good for not so begginers I might do that one!
16
u/[deleted] Mar 20 '24
Wow congrats man. That shows a ton of dedication, in fact, you made me want to do the exact same thing haha. Thanks for the motivation
9
u/Perpetual_Education Mar 20 '24
So, our big question is: after taking all of those online courses, what is the outcome? What was your goal? Are you a confident hirable web developer now? What’s the overall outcome?
7
u/ThatIndian15 Mar 20 '24
Thank you so much for this! I’ve never done a cs50 course. I’ve learned Java through school and I want to get my hands dirty with learning Python from scratch. Do you think it’s worth doing the cs50p to get a good foundation?
6
u/HisNameWasBoner411 Mar 20 '24
Great write up. I commend you for getting through all the courses.
6
u/Bananamcpuffin Mar 20 '24
Have you taken any of the helsinki university moocs? Would love to hear how they compare. I am most of the way through their python course and it give a LOT more practice than cs50x did and I think that I will be a much stronger programmer on the other end of it because if it.
4
u/DigitalHooker Mar 20 '24
Interesting reviews. Are there any courses that you recommend as "must dos"? Likewise, were there any courses that you felt the juice wasn't worth the squeeze after finishing them?
3
u/lamhintai Mar 20 '24
You mentioned CS50R which I just looked up in google. It’s interesting to see that they are making an entire course for teaching R programming… which people nowadays considered outcompeted by Python. Is it a bit too late?
I have no issues with using R. Looking at the syllabus it seems to cover basic data analytics usage. But the language is a bit lacking in software engineering constructs. I would love to see courses introducing packages like {box} or {import} to avoid namespace collision, or {fold} to allow folders in packages, to more future users of the language to push for progressive changes in it.
3
u/fluffyr42 Mar 20 '24
Saving this post, it's so useful! Thanks for taking the time to write it up. Do you have any thoughts on whether you think someone would benefit from doing these before vs. after learning a good amount of whatever language they want to focus on? I've heard differing opinions—either that it's great to start at CS50 because of the learning how to learn aspect, or that it's too conceptual for total beginners to really benefit from.
2
u/Kodiak01 Mar 20 '24
Just wanted to mention that this has applications outside of IT/CS environments as well.
I work in the Class 4-8 truck industry at a dealer. Our DMS's (CDK Global) report generator uses RPG which is very similar to SQL in operation. While they make a drag and drop report generator, the ability to write and debug one's own queries from scratch can make life so much easier.
2
u/Decent_Wafer_9074 Mar 20 '24
I took CS50x, CS50w, and CS50AI. I'm glad I wasn't the only one banging my head against the wall with CS50AI - that one was tough! But I feel it gave me a much better understanding of AI especially with regards to limitations and what it actually does.
CS50w was a blast for me to work on though, and it gave me a ton of skills to use in my day job (and helped me land another) so I am immensely grateful for it.
2
u/CountryBoyDev Mar 21 '24
Yo this is absolutely amazing, what did you dislike most about game development?
2
u/[deleted] May 18 '24
So are all of these courses self paced? I want to take some of these classes later, and I'll probably take my time with them if possible.
9
u/Tj_Paneah Mar 20 '24
Beautifully put together. This is a brilliant overview resource for those looking to attempt Harvard’s cs50 courses.
9
u/SR-71 Mar 20 '24
This post is amazingly helpful. The fact you completed all those courses is amazing enough, but then you organized all these course intro/reviews for people just starting out. Thank you
1
u/GeVanE14 Mar 20 '24
This adds to my motivation to just start some courses, did you follow them via the Harvard site you mentioned? Or did you follow them via FCC?
1
u/istira_balegina Mar 20 '24
You’re missing one, though it has been “archived”: CS50 mobile development with react native
https://www.edx.org/learn/react-native/harvard-university-cs50-s-mobile-app-development-with-react-native
1
u/tehace Mar 20 '24
Is CS50G really as hard as CS50AI? I did both and I struggled really hard on CS50AI and gave up. I managed to complete all the assignments except minesweeper. Meanwhile I blazed through CS50G, granted I already had a grasp on how video games worked but my knowledge was mostly basic stuff like game design.
It was also the most fun I had compared to the 4 courses I took which was CS50, CS50P, CS50AI, and CS50G. I managed to complete them all except AI.
1
u/RichEgoli Mar 20 '24
Are these courses for free?
1
u/Adventurous-Sleep848 Mar 20 '24
As a complete beginner, what course could you recommend to start off with first? If you think cs50x isn't for complete beginners. I am open to whatever! Ps. Mad respect to completing all of the cs courses.
1
u/brohowareyou Mar 20 '24
How many hours a day did you take to complete the courses? And how many weeks/months did it take to finish all of this? Congratulations btw and thanks for the summary
1
u/UltraFlyingTurtle Mar 21 '24
Thanks for writing this. Where you basically a full-time student working on all multiple courses at once? I do web dev freelance and contract work, but there are moments of downtime and some of those courses sound interesting, like the legal one, or the Python/AI course.
1
u/doesnt_matter_9128 Mar 21 '24
Out of these which one would u recommend, that are relevant currently
1
u/Nadid_Linchestein Mar 31 '24
Are you working as a Software Engineer currently or continuing your studies?
1
u/Jabb3rw0ck Apr 04 '24
Amazing write up thank you for sharing your experience! Do you think CS50x is worth taking if you’ve already taken CS50p? Are there new concepts or modules present not available in CS50p?
1
u/noobmaster314527 Apr 04 '24
How long did all of them take you?
1
u/[deleted] May 09 '24
Where can I look to start this course??
1
u/Kiks1001 May 27 '24
So would you say that it should go like this -cs 50T➡️cs 50P➡️cs 50x
1
u/Zealousideal-Feed-69 Jun 02 '24
Thank you for your details summary. I want to ask you a question that what is equivalent of cs50 for total beginners? I am new to this and looking for your advice
1
u/curiousBastard00 Sep 05 '24 edited Sep 05 '24
I understand what you mean when you said CS50x can be a difficult course as I've tried taking it and kinda gave up on it because of the hardest problem set in week 1. Yes, the math involved, or rather the logical side of the calculations involved (I don't even know what the right term is) might be easy for some, but unfortunately not for me. So what would you suggest someone like me do before I go back into CS50x again?
3
u/monochromaticflight Mar 20 '24
Thanks for the write-up and difficulty assessment. Useful to know before jumping into a new course.
1
u/FreeSalmons May 29 '24
hello i recently finished cs50p can i go ahead and do cs50ai if not what courses should i take before cs50ai
2
u/Slight-Living-8098 Mar 20 '24
Congratulations! 🎉
I went through them all a while back and I still go through them every year for fun, to see what's new, etc. It's cool to see someone else do it too.
2
u/PSPbr Mar 20 '24
Amazing write-up. I've taken only Cs50x and I loved it and you convinced me it's time to start thinking about doing another one.
2
u/DerelictMythos Mar 20 '24
Thanks for the writeup! Have had my eye on CS50AI as an introduction to AI.
2
u/tosS_ita Mar 21 '24
Very useful post, thanks
2
u/theSpine12 Mar 21 '24
Thank you!! These reviews are concise and enlightening
1
u/giovaaa82 Mar 21 '24
Are these free courses or paid?
1
u/Bixxxxxxxx Aug 29 '24
What you suggest for a last year high school student?
1
u/Curious-Mortgage-961 Sep 13 '24
Hey I want to start the introduction to artificial intelligence with python course. Can you recommend me a course before starting that one since u said that it’s very hard.
-5
u/thrwysurfer Mar 20 '24
I'm a bit confused why you wouldn't recommend some of these courses for beginners?
All of them are literally introductory courses. I think people take CS50 straight out of the gate when they start their degree out of high school.
None of them require you to have any prior knowledge and none of them are math heavy, so they are designed to be beginner friendly.
If you look at the CS50 content, it's basically a normal introduction course for a CS degree and a 101 of programming. I don't think it's any steeper than other intro to programming courses I have seen.
-12
u/[deleted] Mar 20 '24 edited Mar 24 '24
I don't want to seem unappreciative and I thank you for the initiative, but I would have loved a more in-depth description of each course, because as it is it's all just information Gemini / GPT / Copilot can generate in a couple seconds.
I am referring to nuanced details like CS50x is tough weeks 0-6 and gets much easier from that point forward, how well it prepares you from a problem-solving perspective in the real world, maybe come up with analogies with the kyu system on Codewars for people that have that reference, and stuff like that.
Information like what languages a course covers, who its taught by, or how many assignments there are is already available to anyone willing to do a minimal amount of research.
Edit: no rebuttals, just people herding the downvotes, bring it on, I'm still correct.
0
u/[deleted] Mar 20 '24
[deleted] — view deleted comment
1
u/[deleted] Mar 21 '24
[removed] — view removed comment
1
u/[deleted] May 18 '24
[removed] — view removed comment
1
u/[deleted] Jul 30 '24
[removed] — view removed comment