Introduction
Over 3.5 million people have enrolled in this course, but less than 1% complete it. This article is about my journey through Harvard University's CS50x: Introduction to Computer Science - and why I became part of that 1%.
Hello World! I'm Sanket Jawali, a tech enthusiast seeking deep understanding of computers and also a CS Major student at a local university. Being a university student and taking CS50x simultaneously showed me two different paths to becoming a Programmer. Which has given me a lot of insights about Online courses and University courses.
What makes my perspective worth your time? I'm not here as an expert showing off solutions. I'm here as someone who recently conquered the same challenges you're facing, not knowing what to do and probably stuck in the Tutorial Hell. I am here to tell you why CS50x is worth your time, I'll share the insights I wish I had when I started.
What is CS50?
CS50 is Harvard University's flagship computer science course, with CS50x being its Free, online version. While it's labeled as an Introduction to Computer Science, this course goes far beyond teaching you how to code.
This course will teach you how Computers think and work in Binary, how can we give it instructions using programming languages to achieve our goals. It's like learning to drive a car but you first learn about how engine works instead of which pedal to press and how to steer.
What you'll learn (in CS50x)
- A broad and robust understanding of computer science and programming
- How to think algorithmically and solve programming problems efficiently
- Concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development
- Familiarity in a number of languages, including C, Python, SQL, and JavaScript plus CSS and HTML
- How to engage with a vibrant community of like-minded learners from all levels of experience
- How to develop and present a final programming project to your peers Source - edX
Other CS50 courses:
- CS50x: Introduction to Computer Science
- CS50W: Web Programming with Python and JavaScript
- CS50P: Introduction to Programming with Python
- CS50AI: Introduction to Artificial Intelligence
- CS50M: Mobile App Development with React Native
- CS50 Cybersecurity: Introduction to Cybersecurity
Note: This course also offer a free certificate on completion of all the assignments and one final project. This certificate is offered by Harvard itself and you don't need to pay for the edX certificate
How I started CS50
I was very lucky that I found this course through FreeCodeCamp's YouTube channel (This is also a great resource to learn btw) while scrolling through YouTube one day. Time couldn't have been better, I was just about to take my admission in my university, and I was looking for a course to start my coding journey.
I was like many others stuck in this loop many of you might be familiar with:
- Click on "Learn Python in 1 Hour!" video on YouTube
- Follow the video and write a bit of code
- Build nothing
- Click on another video
- Repeat
Like many other beginners my learning path was very messed up. After I first came across the term CS50 I did a quick Google research on "what is CS50" and found myself diving into countless articles and videos, all with tons of Positive Reviews. This led me to checking this course on edX(An online platform where many great universities, such as Harvard and multiple IITs post their course content).
The Lectures
To be frank, his course is Hard - and that's what makes it Good.
How so, you may ask? The lectures are filled with very condensed knowledge about many computer science concepts. The lectures are Simple and Hard at the same time. Note that Simple doesn't always mean Easy.
Professor David J. Malan, the main course instructor has a very fun and engaging way of teaching this course. With many demonstrations and real life examples he creates an environment that makes students genuinely want to attend the lectures. The desire to learn new concepts is one of the most important thing any person needs to become great at something. Combine that with a bit on curiosity and you have the perfect environment to master anything.
The Assignments
The lectures may feel manageable, but the real challenge comes when you look at the assignments after the lectures. And here is where majority of people get stuck and potentially drop this course.
True learning happens when you’re under Stress.
I heard the above quote once and I couldn't agree enough. This course also abides with this quote. You will get stuck, You will need to try out different things, You will need to rewatch one lectures multiple times , and this will teach you how to program.
Programming isn't just typing out colorful words and seeing results; programming is more about solving a problem with the help of computer. Programming languages are merely tools to solve those problems.
In fact, you learn more through these assignments than you ever could by passively watching lectures. This is also True with any other video/course. You learn more with hands on experience then just watching lectures. The assignments are designed to make you think critically and push your limits. At times, you will want to just giving up, but if you persist and complete these assignments, the final result will be worth every effort!
The Final Project
This course needs you to submit a final project applying all the knowledge and skills you have learnt in this course in real life. This will test your skills further and gives you a sense of your personal growth and progress.
My Final Project was a Chat webapp using Flask (a python library covered in this course). I intentionally chose something challenging - for a beginner at least - because, I wanted to see how far I can push myself and I wanted to see my progress, Before and After this course.
Thankfully, I was successful, and I implementing it!
The satisfaction, and the concepts and other valuable skills I learnt along the way are invaluable. Now it's clear to me, why experienced programmers always say, “Just build something, even if you’re not entirely sure how.”
Although I had a lot more features I wanted to implement, but I already had spent over a month on this project and it was getting overwhelming to implement all the other complex features. But I am still satisfied with the final product.
You can check my final project here
Key Takeaways
I leant a ton of things from this course:
- What programming is and how it works
- How computers function under the hood
- How to create projects that take advantage of computer resources to accomplish cool tasks
- How the modern internet operates and how websites are built
- And much more…
But the Most important thing I gained was the Confidence.
Before this taking this course I lacked the confidence to build anything. I felt that I didn’t know enough or wasn’t skilled enough to create something on my own. But after implementing the final project I have gained the confidence that I can build anything!
Tips for Beginners
Completing this course taught me a lot, and the challenges were some of my greatest teachers. To make your journey a bit easier, here are my top tips for tackling CS50x:
- Keep a pen and paper handy. When working through assignments, jot down your thought process and sketch out ideas. Visualizing concepts on paper can help you work through complex problems.
- Resist the urge to look up solutions. There will be moments when you feel stuck or have no idea where to start. Avoid looking up answers, doing so k!lls your thought process and starves you of the learning experience. Struggle a bit; it’s part of the journey.
- Avoid using AI. With AI tools able to solve complex problems in seconds, it might seem tempting to use them to reduce the burden. But like looking up solutions, using AI k!lls your learning. You’ll gain much more by solving the problems yourself.
- Plan ahead. For larger assignments or projects, take time to plan before you start the implementation. Trust me! I spent a month on my final project, which could have taken just ten days or so, if had I planned ahead of time and clarified my concepts.
Conclusion
CS50x is a game changer for me and for many other who have completed it. I totally understand why people love this course and I agree with all those points. This course takes a deep dive into how computers work, how to solve problems, and, most importantly, how to think like a programmer. This journey wasn't easy but at the end it worth the efforts. From engaging lectures to hands-on assignments and a rewarding final project, this course pushed me to my limits and gave me skills I never knew I could achieve.
Now, I’m part of the small percentage of people who completed it. It’s an experience that builds not only your technical knowledge but also the confidence to tackle anything that comes my way in the world of programming.
I personally recommend this course to every friend of mine looking to start their programming journey and I thing you should take it too.
Start your Computer Science journey with CS50 now, it will be worth it!
Top comments (0)