Harvard's Fun Intro to Computer Science


Here's a find. You can eavesdrop on Harvard's 'Introduction to Computer Science' .. without ever leaving your living room. Very cool. Both video & audio-only streams available. Videos available in both Quicktime & Flash formats.

Harvard University Wrought IronI'm using their Flash steam. No stuttering. Perfectly smooth video. Both the audio and video are decent quality. A quote from the Harvard OLI website:

This course is part of Harvard Extension School's Open Learning Initiative, which brings a selection of noncredit online courses featuring Harvard faculty to the public for free.

While the extension website refers to this course as » CSCI E-52 (an 'Intensive'), both the instructor (David Malan) & video call it » CS-50. The course is for people with "little to no" programming experience. They appear to be having fun.

CS-50 used to be taught by Brian Kernighan, the guy who co-authored the definitive K&R book. He now teaches CompSci at Princeton.

I like this instructor's delivery. He talks fast. Prevents my mind from wandering. My brain syncs nicely with his presentation.

The course is comprised of 24 separate lectures, each ~ an hour long. They use a combination of C, PHP & Javascript. The first video is 73 mins.

In continuing my foray into the wonderful world of Programming, I've been demo'ing IDE's (Integrated Development Environments). Wasn't crazy, for example, about Komodo Edit (free).

My fave so far has been » Aptana Studio (also free / open source). Based on Eclipse. Their PHP plug-in uses PDT (.. which Zend also uses). Works for me. I like the idea of becoming familiar with Eclipse, since it's so popular (and free).

Programming (I'm learning) is an unforgiving discipline. Leave out a measly comma or a single semicolon and your whole dang program crumbles to gobbledygook. Does not compute.

Mostly (it seems) I'm learning how to make mistakes .. something I'm becoming very good at. Gradually tho, I'm learning how to correct and even avoid these mistakes. Currently learning about arrays.

••• today's entry continues here below •••

For motivation to take the course, this instructor uses the 'control-your-digital-destiny' argument. Why limit yourself to programs created by others?

David MalanI've heard this line of reasoning before. It didn't resonate with me then, either. Seeing SO MANY programs exist. More than you could ever use in a lifetime. Chances are they'll do far more than you could ever dream of.

Programming is certainly a cool thing to learn, especially for those of us who live in the Information Age, where computers and computer-like gadgets play such a prominent role in our daily lives. But I never felt limited in any way by a lack of programming skills. Have you?

For me, learning ANYthing is about » WHY. Why do I want/need to learn this? To be honest, I've never found a compelling practical reason to learn programming (.. other than it being a marketable $kill).

So, why I am studying it? Mostly, a leap of faith. People I respect & admire tell me it's 'the way.' And what self-respecting geek can't program? So pride plays a part, too. (More than I'll ever admit.)

Malan says CS-50 is more time-consuming than academically challenging. I've found this the case with programming in general. It's similar to learning a foreign language (which it is). It's not very difficult, for example, to learn that 'agua' (in Spanish) means 'water'. But any language contains MANY words, which take time to learn, and all with their own rules of usage.

This is why my least-favorite classes were (by far) foreign language classes. For example, I could see no good reason why I ever needed to learn ('memorize') French. Now, if you air-drop me over Paris, that's a different story. Now I got a reason. Voulez-vous, baby!

Personally, I prefer to learn things that are difficult, but NOT time-consuming. I MOST ejnoy ideas that torque the mind, and stretch it. But here, with computer programming, I have no choice. So time-consuming it has been. I just keep plugging away. Making progress, yes. But not nearly fast as I'd like.

Kudos to the folks at Harvard for recording this course and posting it (freely) online. Good digital karma. Along these lines, you might also be interested in the legendary SICP course (from MIT), which some tout as the single best introductory course on Computer Science. Ever.

For more along these lines, here's a Google search preconfigured for the query-string » harvard university free computer science online extension course cs50


Utilitarian arguments for learning programming don't work for me either. Either you're interested and excited by it, in which case you'll go far and learn much, or you aren't. Only intrinsic motivation (i.e., the feeling that "this is fun") will get you all the way.

Normally I'd say a lot more, but this time I'll link to some related articles worth reading:

http://www.lambdassociates.org/blog/hackers.htm is pretty much right on the money, although bear in mind that as mentioned there, modern degrees aren't anything like the "classical" CS education of yore. The other articles at http://www.lambdassociates.org/blog/ are worth some of your time to look at too.

http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html is worth it too, although what's really interesting isn't the fact itself (or that this has been going on since the 90's) but the causes. There's some mental disconnects involved, too: clearly these people think programming is a good job (thus: extrinsic motivation) but can't be bothered learning about it (because of no intrinsic motivation). And yet, at the same time we know that society at large considers programming is something people want to become even more economically worthless (Free Software, mass piracy) than the low-status grunt job most managerial types think of it as.

http://www.codinghorror.com/blog/2009/08/the-only-truly-failed-project.html also speaks to the power of intrinsic motivation because really only intrinsic motivation can carry you through the inevitable failures (some of which can be epic in scope), learn from them, and carry on to do better.

Another thought-provoking link in respect of intrinsic/extrinsic motivation - in this case the context is games, but the article and comments refer to all kind of interesting research on this, much of which is relevant to software development too. Read it and follow the links!


By the way, since I'm posting anyway I'll toss in this link which you might find thought-provoking on a topic that isn't related but which I think you'll find interesting. Charles Stross is a respected science fiction writer (his book "Accelerando" is one my father, who has been a keen SF reader longer than I've been alive, rates as one of his favourites ever). Recently there was a big standoff between Amazon and a publisher, MacMillan press, about eBook publishing on the Kindle, which threw up some interesting things, one of which is of course the widespread misconceptions about what authors do and publishers do and books are priced (which leads into eBook pricing and what Amazon are doing).

Charlie is attempting to demystify this in a series of explanations of How Publishing Works, which I highly recommend, both as interesting in themselves but because this kind of production pipeline exists in pretty much every form of publishing (software development and computer games included) and most people don't register than it exists.


To digress even further, the last book I read was not science fiction for once but it was still absolutely cracking. It's not in print in the US at the moment, but it deserves to be and if you do ever see it, I recommend it. The book is Robert Ryan's "Death on the Ice", a fiction but built on meticulous research of Scott's fatal journey to reach the south pole: http://www.robert-ryan.net/books.html

About this Entry

This page contains a single entry by Rad published on February 13, 2010 2:13 AM.

Beginning of the End? was the previous entry in this blog.

Ciphers, Keys & Encryption Algorithms is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.