"Demanding, but definitely doable. Social, but educational. A focused topic, but broadly applicable skills. CS50 is the quintessential Harvard course."
Those were the words of an ex-CS50 staff member, describing CS50 in a truly apt manner. So what is CS50 really, and why is it on this blog?
CS50, in the words of its instructor David J Malan is "an introductory course to the intellectual enterprises of computer science and programming". Its a course taught to undergraduates at Harvard University, but is in no way limited to an undergraduate audience. It is a course intended for people with no prior programming experience, and has audiences all the way from the age of 8 to 70+.
For those of you already excited to close this tab, and google cs50, I'll save you the pain of scrolling by quickly describing the ways to take CS50 online, at the comfort of your homes!
How does one take up CS50? ( Link )
The course is primarily taught to harvard undergraduates on campus, but it is also offered online, for free on the edX, platform (A joint initiative by MIT and Harvard, to offer courses from various universities online.). There are two ways to approach this course on edX, either go for an ID verified certificate ( Costs a few dollars, you will get a certificate on completion of the course, which verifies your identity), or go for the Honor - Code certificate ( Free of cost, but they don't verify your identity, but give you a certificate in your name if you successfully complete the course.), or just audit the course (Watch the lectures in your free time, and not really aim at finishing the course as per the deadlines). The on-campus version of the course contains lectures, and other sessions, which are recorded, and put up on edX, for the edX version of the course called CS50x. To use edX,, you will need to sign-up for an edX account or login through either a google or a facebook account.
Links to CS50x's homepage on edX.
Course's official harvard website: cs50.net
The course will begin on edX in January 2015, with updated content from this year's course iteration at harvard. The current course on edX is based on last year's version of the on-campus course.
I suggest that those of you interested in completing CS50, start from 2015, as the course will contain the latest content.
Note that the course doesn't have any fixed deadline for the problem sets on edX, but the entire course has 1 hard deadline (usually the end of the year), where you will need to submit all the problem sets, and 1 final project.
About the course ( In more detail now)
The course is structured over a period of 12 weeks, each week covering a new topic. Every week contains 2 lectures ( each about an hour in length, taught mostly by the course's instructor Prof. David J Malan, briefly going over the topic for that week ), sections ( A more detailed approach to concepts highlighted in the lecture taught by the course's awesome teaching fellows), and a problem set.
Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for people who want to pursue computer science and those who just want to get to know the field better, with or without prior programming experience.
The course starts from scratch, diving into the world of computer programming, using a nifty tool from MIT, called Scratch. Scratch is a graphical programming language, allowing one to build interactive, visually rich programs by using puzzle pieces which only fit together, if the order makes sense, akin to real world puzzle pieces.
Then the course transitions from the world of scratch ( which one can get too familiar with, in a matter of hours), to the world of system programming, with C. Various concepts learnt in scratch are easily extendable to C and any other programming language in general, and this course will highlight the similarities across many languages in the domain of programming. The C part of the course which lasts around 6 weeks, will cover all the fundamentals of programming, and also teach you to read, understand and modify code written by others (which is a must when you actually work on projects with lots of people coding). They will also introduce you to programming graphics in C thereby introducing you to the concept of libraries and APIs, that let you create windows like the one you are reading this blog post in. After C, the course becomes a bit more fast-paced so to speak, moving away from C, to the rich interactive world of web development. The objective of this part of the course, is not so much to teach you web-development, but to teach you how to teach yourself web-development. The course will introduce you to the internet world, and give you an overview of the various methods you can use to create interactive, dynamic web pages, that look stunning.
The climax of the course, is its Final Project. The final project, is where you will be able to put together everything you have learnt from the course, and come out with your own software application. The nature of the project and its implementation details is entirely your choice, and the edX version requires you to only upload a video of yourself, describing and presenting your project.
Though the course might seem a bit overwhelming, especially if you are just starting to understand programming, remember that Google and Wikipedia are your friends, and members of this community will be able to help you out if you get stuck.
As a side note for those who do take up CS50 on edX seriously, ensure you watch the sections thoroughly, even if you feel its a bit long, as they contain the most amount of details on the various topics. The on-campus version of the course will have quizzes (like a test paper), but the online version omits this part of the course.
For a more in-depth details about the syllabus, click here.
While, the purpose of this article was to introduce you to CS50, and hopefully inspire you to take this course, we also want to create a group for takers of CS50 in this community, this is only to help you guys out if and when you get stuck, and possibly create an opportunity to showcase your final projects, at school during the annual IT fair. To be a part of the cs50 community, just fill in this google form (Link).
Lastly, check out this video of Prof. Malan, talking about CS50x and what's in store.