I completed Harvard's CS50 (Without Certificate) and You should try it once in your life
Firstly, I would like to thank the whole CS50 Community for delivering this awesome course. CS50 is the best quality course you could find on the Internet, it has a very high production quality, great teaching staff (David J. Malan Sir has a unique style of teaching which makes his lectures interesting) and great quality study material. I also appreciate that Harvard made this course free for all.
I also liked how this course helps students to get a taste of Computer Science Concepts in such a small time. It pushes students to learn new concepts on their own while solving Problem Sets. I also made hand-written notes while taking this course. I also liked the CS50's VS Code IDE it helped to get a taste of how to code IDE and color highlighting of code to understand code better.
I started this course in the third week of September and completed it in the last week of January. It took me more time because my college had started in October and I was not able to manage time in starting of my first semester of B.Tech, but I didn't left this journey inbetween and finally completed it.
It's Problem Sets were overwhelming in starting but we could learn many new things from them. I was not able to do all the Problem Sets. I will also not going to make the final project because my college end-term exams are near.
Now let's talk about this course in detail, it teaches many things in the span of 10 weeks, let's talk about them in detail,
Week 0 : Scratch
It's the introductory lecture of the course in which we are taught about bits, basic computer science things, the meaning of some technical terms and Scratch in a very interactive way. We also make a game in Scratch in the Problem Set. It was a fun and a bit small lecture. I already knew Scratch so I easily completed this lecture.
Week 1 : C
In this lecture we learn a statically typed low-level language called C. It is used to develop many system-level apps. In this lecture we learn what are for loop, while loop, printf function, basic data types available in C, CS50's made input functions, basic operators, if-else condition, making functions, do-while loop, printing basic patterns using for loop, integer overflow for float, and many other things. It took me 10 hours to watch and understand the lecture with making notes. It's PSet took some time but was able to complete it.
Week 2 : Arrays
In this lecture we learn how to take command line arguments, how to use a CS50 debugger, what is an array and how to use it (Arrays are the most important data type in C), manipulate strings and what are global variables. It's pset programs were hard but I learned a lot from them and completed them.
Week 3 : Algorithms
In this lecture we learn about some important algorithms in programming like binary search (in this David Sir uses a phonebook example), linear search, bubble sort, merge sort, selection sort, recursion (my favorite) and about time & space complexity. It's pset problems were long and hard but I completed them.
Week 4 : Memory
In this lecture, we learn about how to represent colors in RGB format using hexadecimal. We also learn about pointers (which is one of the most important concept of C). David Sir explains pointers in a very fun and awesome way. We also learn about custom data types called structures (struct) and Dynamic Memory Allocation. Its pset problems are overwhelming and here many people quit CS50, I was not able to do recovery.
Week 5 : Data Structures
In this lecture we learn about Insertion in Array and why data structures are important for making real-life applications. This lecture includes data structures like Linked List, Binary Tree, Stacks, Queues, Hash Table and Tries. It was a very good lecture for an introduction to data structures and how they function. David Sir teaches it very interactive way. I was not able to complete this week's pset.
Week 6 : Python
In this lecture, we learn about one of the most popular and high-level dynamically-typed languages called Python. We learn about its syntax and basic concepts of it. I already knew Python so pset problems were fairly easy for me except for DNA, in which I took the help of an internet solution. But I learned a lot from it.
Week 7 : SQL
It's about how to store data in databases. We also learn how to write SQL queries and relate tables in SQL databases. We also learn how to use SQL and Python together using the CS50 library. It's pset took time as I had to get comfortable with SQL queries but I was able to complete it.
Week 8 : HTML, CSS, JavaScript
In this lecture, we get an introduction to web development(mostly frontend) and we learn how to make a static website using HTML, CSS (using BootStrap Framework) and JS. I already knew HTML so I was able to do lab much easier. I didn't complete the pset. I also learned how to link CSS and JS with HTML.
Week 9 : Flask
In this, we learn backend development with a framework of Python called Flask. It was interesting to learn Flask from David Sir. I had completed lab but I didn't complete pset.
Week 10 : Emoji
It's the conclusion lecture on CS50, in this David Sir talks about the CS50 whole journey and takes a small quiz. After that David Sir's friend come and talk about how Emojis are made and talks about their importance.
Some Personal Talk :
I learned many things from this Course and it surely made me more passionate about Computer Science and gave me a strong foundation for my Software Engineering Career.
It helped me a lot in my B.Tech first semester, as I had a Computer Programming course in which we had to learn C and in CS50 1st to 5th week we learn C, so it helped me to learn concepts much better and made this college course easier for me.
I also like to Thank people on Reddit to introduce this wonderful course to me. I would also like to Thank my teacher and mentor for giving me an initial boost/motivation to do this course.
Also, this is my first blog on HashNode and my first on Computer Science. Hope it helps.
Subscribe to my newsletter
Read articles from Shreyansh Agarwal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Shreyansh Agarwal
Shreyansh Agarwal
๐ฉโ๐ป Computer Science Enthusiast | ๐ Programmer | ๐ Python | Always ๐ฑ learning and ๐ blogging about tech