MOOC review - CS50, from Harvard and edX.
Jul. 22nd, 2014 11:16 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Version: I took the January 2014 offering which ran in tandem with the Harvard online and in-class versions of the course. The course has been converted to an always available offering. CS50 at edX.
Status: Did not do the last assignment or the final project.
Who should consider this course? Anyone serious about learning programming. Anyone who wants to see if programming is really for them. Anyone who does frontend web development and wants to learn what the backend is all about.
Who shouldn't bother? Anyone who wants to tell their friends they can code, like, for real. That's what codacademy is for.
Review: This is one of the most famous massive open online courses (MOOC), particularly in the CS field. David J. Malan is a rockstar teacher and a lot of the presentation used in the course is copied on other courses and other platforms.
The presentation is better than the standard edX fare. Each assignment is set up in a separate webpage that embeds video content, has a simple table of contents and avoids the double navigation menu issue that the rest of the content presentation on edX suffers from.
The accessibility of the content is high - all videos have quality captions and transcripts, sound quality is good, visibility of textual information within videos is good and the options for viewing the videos are about as numerous as possible.
The technical requirements for the course (something all MOOCs do a spectacularly poor job of making clear to prospective students) are modest, but there are some hard minimums.
1. The last assignment requires you to have access to either a Windows PC or Mac that can run the Google Earth plugin for Chrome. This is a notorious resource hog and absolutely does not work in any Linux system.
2. The course is set up to work best via a virtual machine (VM) that runs a Ubuntu distro. You can apparently get everything running directly on a Linux system, but it's a hassle and likely over the head of someone taking this course. Virtual machines are resource hogs, so a modest computer can run the necessary software, but it might have performance issues, particularly for the web site development assignment. (The Google Earth assignment is run outside the VM.)
The instructional content is offered almost exclusively via video. There is no textbook, but there are some suggested readings, all of which have free online options.
The course is built around videos of the lectures given in the fall of 2013 at Harvard. They are very fast-paced, fun and informative, and like a true university course, they offer the more abstract and formalized view of the topics covered.
In addition, there are detailed videos of specific topics with code samples that get down out of the abstraction layer and into the real meat of the course.
There are also help videos for each assignment and a video of the "Section" run by the Harvard TAs. I rarely watched these, the Section is the only poor quality video, and the help videos were often not needed.
The suggested readings are mostly very good. The presentation of the tutorials for C is horrible, but it's hard to find anything online any better.
CS50 is aimed at students with any level of computer science experience. It does not do what almost every other course does, and pick one language to teach the standard set of programming basics in.
Instead, it starts you out by really digging beneath the abstraction layers that modern programming languages are made of and makes you learn in C. This is both horrible and fabulous. This part of the course is the best part, and I would recommend this class to anyone who wants to be serious about programming.
If you already know some language like Ruby or Python, you will hate C and then you will suddenly have lightbulb moments where the things you love or hate in Ruby or Python suddenly make sense.
This course is responsible my so far unshaken belief that only learning CS via the highly abstracted languages and frameworks like Ruby, Rails, jQuery etc. is a gigantic mistake. If you don't understand what's going on "under the hood" you will be floundering around unable to fix things when they go wrong.
CS50 is fast-moving and difficult. You get moved through C to a nifty invention of Stanford's that emulates how JavaScript interacts with webpages, then you are suddenly making a PHP web app.
Again, the choice of an old fashioned system like PHP is the right choice. You will learn and understand how web pages are rendered and how servers interact with browsers. There's no Rails magic abstraction here, because you're not ready for that yet.
The grading mechanism for the course is very good, perhaps the best I've yet seen. You can't get away with much crap code, which is a flaw in a lot of these, but it also doesn't have a host of arbitrary requirements that don't really matter, the other common flaw.
No human looks at your code unless you are paying for the $2k for a Harvard credit. I am guessing no human ever looks at your final project either. This is what a free MOOC is, distributed content and automated marking, and CS50 does this very well.
The community for the course is set up on Reddit, which I found very effective. The TAs stay out of all conversations unless they are needed for technical problems, they don't fuss over that fact that questions get asked again and again, and the community is large enough that you can get answers quick. I liked it and found it really helpful.
Best and Worst: The overall cohesiveness of the course is the best thing about it. Lessons you learn in the beginning, both explicit and implicit, are things you will use later on.
The front-end weight of the video content is heavy. For each assignment, you're watching at least 2 hours of video, possibly more. It was a relief for me when we hit topics I knew and I could skip some videos.
Kvetching: The choice of Google Earth for the last assignment is not a good one. Beyond assuming everyone has a Windows box capable of handling the demands of the plugin, the thing is buggy as shit. The point is to teach the AJAXy use of an API, and there are a lot of ways of doing that without these restrictions.
The web app assignment uses Bootstrap to avoid having to teach any meaningful CSS. Backend folks hate CSS, I guess. It could be worse, I know, I've seen worse.
Web accessibility is never mentioned ever in the course.
David J. Malan's somewhat tight nervous voice was grating, as was his look at me persona.
Kudos: Actual women and the occasional non-white person doing videos.
Really clear and concise assignment instructions. They seem long, but they are not the mess of incoherence I've seen elsewhere.
No waiting on a release schedule now that it's completely self-paced.
It's hard. Really challenging at times. Most MOOCs are way, way too easy.
Disclaimer: So, you hate MOOCs, think they're ruining education. Can't even stand the sight of the horrible acronym. Everyone needs the bricks and mortar experience. Just like ebooks ruin the whole concept of reading, so too do MOOCs remove the essential je ne sais quoi of learning. Plus, they're all just skater courses for people who can't handle the real thing.
If this is your feelings, you have my absolute blessing to go get a blog and tell the world. Just don't try my patience with it here.
Status: Did not do the last assignment or the final project.
Who should consider this course? Anyone serious about learning programming. Anyone who wants to see if programming is really for them. Anyone who does frontend web development and wants to learn what the backend is all about.
Who shouldn't bother? Anyone who wants to tell their friends they can code, like, for real. That's what codacademy is for.
Review: This is one of the most famous massive open online courses (MOOC), particularly in the CS field. David J. Malan is a rockstar teacher and a lot of the presentation used in the course is copied on other courses and other platforms.
The presentation is better than the standard edX fare. Each assignment is set up in a separate webpage that embeds video content, has a simple table of contents and avoids the double navigation menu issue that the rest of the content presentation on edX suffers from.
The accessibility of the content is high - all videos have quality captions and transcripts, sound quality is good, visibility of textual information within videos is good and the options for viewing the videos are about as numerous as possible.
The technical requirements for the course (something all MOOCs do a spectacularly poor job of making clear to prospective students) are modest, but there are some hard minimums.
1. The last assignment requires you to have access to either a Windows PC or Mac that can run the Google Earth plugin for Chrome. This is a notorious resource hog and absolutely does not work in any Linux system.
2. The course is set up to work best via a virtual machine (VM) that runs a Ubuntu distro. You can apparently get everything running directly on a Linux system, but it's a hassle and likely over the head of someone taking this course. Virtual machines are resource hogs, so a modest computer can run the necessary software, but it might have performance issues, particularly for the web site development assignment. (The Google Earth assignment is run outside the VM.)
The instructional content is offered almost exclusively via video. There is no textbook, but there are some suggested readings, all of which have free online options.
The course is built around videos of the lectures given in the fall of 2013 at Harvard. They are very fast-paced, fun and informative, and like a true university course, they offer the more abstract and formalized view of the topics covered.
In addition, there are detailed videos of specific topics with code samples that get down out of the abstraction layer and into the real meat of the course.
There are also help videos for each assignment and a video of the "Section" run by the Harvard TAs. I rarely watched these, the Section is the only poor quality video, and the help videos were often not needed.
The suggested readings are mostly very good. The presentation of the tutorials for C is horrible, but it's hard to find anything online any better.
CS50 is aimed at students with any level of computer science experience. It does not do what almost every other course does, and pick one language to teach the standard set of programming basics in.
Instead, it starts you out by really digging beneath the abstraction layers that modern programming languages are made of and makes you learn in C. This is both horrible and fabulous. This part of the course is the best part, and I would recommend this class to anyone who wants to be serious about programming.
If you already know some language like Ruby or Python, you will hate C and then you will suddenly have lightbulb moments where the things you love or hate in Ruby or Python suddenly make sense.
This course is responsible my so far unshaken belief that only learning CS via the highly abstracted languages and frameworks like Ruby, Rails, jQuery etc. is a gigantic mistake. If you don't understand what's going on "under the hood" you will be floundering around unable to fix things when they go wrong.
CS50 is fast-moving and difficult. You get moved through C to a nifty invention of Stanford's that emulates how JavaScript interacts with webpages, then you are suddenly making a PHP web app.
Again, the choice of an old fashioned system like PHP is the right choice. You will learn and understand how web pages are rendered and how servers interact with browsers. There's no Rails magic abstraction here, because you're not ready for that yet.
The grading mechanism for the course is very good, perhaps the best I've yet seen. You can't get away with much crap code, which is a flaw in a lot of these, but it also doesn't have a host of arbitrary requirements that don't really matter, the other common flaw.
No human looks at your code unless you are paying for the $2k for a Harvard credit. I am guessing no human ever looks at your final project either. This is what a free MOOC is, distributed content and automated marking, and CS50 does this very well.
The community for the course is set up on Reddit, which I found very effective. The TAs stay out of all conversations unless they are needed for technical problems, they don't fuss over that fact that questions get asked again and again, and the community is large enough that you can get answers quick. I liked it and found it really helpful.
Best and Worst: The overall cohesiveness of the course is the best thing about it. Lessons you learn in the beginning, both explicit and implicit, are things you will use later on.
The front-end weight of the video content is heavy. For each assignment, you're watching at least 2 hours of video, possibly more. It was a relief for me when we hit topics I knew and I could skip some videos.
Kvetching: The choice of Google Earth for the last assignment is not a good one. Beyond assuming everyone has a Windows box capable of handling the demands of the plugin, the thing is buggy as shit. The point is to teach the AJAXy use of an API, and there are a lot of ways of doing that without these restrictions.
The web app assignment uses Bootstrap to avoid having to teach any meaningful CSS. Backend folks hate CSS, I guess. It could be worse, I know, I've seen worse.
Web accessibility is never mentioned ever in the course.
David J. Malan's somewhat tight nervous voice was grating, as was his look at me persona.
Kudos: Actual women and the occasional non-white person doing videos.
Really clear and concise assignment instructions. They seem long, but they are not the mess of incoherence I've seen elsewhere.
No waiting on a release schedule now that it's completely self-paced.
It's hard. Really challenging at times. Most MOOCs are way, way too easy.
Disclaimer: So, you hate MOOCs, think they're ruining education. Can't even stand the sight of the horrible acronym. Everyone needs the bricks and mortar experience. Just like ebooks ruin the whole concept of reading, so too do MOOCs remove the essential je ne sais quoi of learning. Plus, they're all just skater courses for people who can't handle the real thing.
If this is your feelings, you have my absolute blessing to go get a blog and tell the world. Just don't try my patience with it here.
Awesome Review!
Date: 2015-04-06 09:45 am (UTC)