Harvard, MIT & Stanford introduce computer science to the world

In the 1970s I worked for a few years as a computer programmer, writing applications in the now obsolete COBOL language on an IBM mainframe that had a whopping one megabyte of memory. It was clearly the stone age of computing. I was curious about what the state of programming has become in the intervening years, so I recently dipped into three attractive online courses. The first two are traditional introductory courses that teach computer fundamentals through exposure to one programming language. The third course is a whirlwind tour of computer science, covering multiple languages and topics.

Introduction to Computer Science | Programming Methodology (website, iTunes, YouTube) Mehran Sahami, Stanford University.
Mehran Sahami is the kind of teacher we all wish we’d had in school: enthusiastic, funny and clearly in love with his subject. He has a bag of candy on his desk to reward students who ask good questions, and it seems like all the questions are good. The course focuses on programing fundamentals using the Java language, and it starts out gently using a programmable online robot named Karel. Each lecture is also available in transcript, which is a big plus for non-native English speakers. The website has links to the free software you’ll need to do the homework, and if you want to really learn the material, you’ll have to do the problem sets. The website also has solutions to some of the problems, so you can compare your work with actual programs that work. All in all, you get 28 class sessions that set you up for the sequels, Programming Abstractions and Programming Paradigms. But unlike the two other offerings below, there is no online support group for when you (inevitably) get stuck.

Introduction to Computer Science and Programming (website, iTunes) Eric Grimson, John Guttag, Massachusetts Institute of Technology.
This course focuses on programing fundamentals using the Python language, a modern open source language often used in web development. Grimson starts out the course with an interesting overview of computing philosophy and theory before plunging into how to program in Python. The website has links to a free textbook on Python and to the free software you’ll need to do the problem sets, and to a very helpful and active study group website where your fellow students can answer questions.

Introduction to Computer Science I (website,  iTunes) David Malan, Harvard University.
With his leading-man good looks and flamboyant style, it’s easy to see why David Malan’s Harvard courses are so popular. He starts out this course by getting a student to rip a phonebook in half to illustrate the power of computer algorithms. His videos are a lot of fun to watch, but they’re only the beginning of the educational journey. You get links to the software you’ll need to do the projects, as well as detailed problem set specifications. The website also includes videos of section meetings where a grad student delves deeper into programming nitty gritty, and videos of problem set “walkthroughs” that help you get started on each problem set. Other helpful materials include lecture transcripts and detailed lecture notes.

The course starts out with the fun and easy Scratch programming environment, where you learn programming fundamentals like loops and conditions. But all too soon you switch to the hard-core C language where you have to cope with a compiler and arcane programming syntax. Fortunately there is a very active and helpful CS50 Google Group of other course participants that can help you over the tough spots. Unlike the other 2 courses, Malan’s course ventures into other topics besides programming, including cryptography, and web site creation.

Malan also teaches Building Dynamic websites (website, iTunes) and Building Mobile Applications (website, iTunes).

Advertisements
This entry was posted in Computers, Courses, Engineering, Five-star professors, iTunesU, YouTube courses and tagged , , , , , , , . Bookmark the permalink.

4 Responses to Harvard, MIT & Stanford introduce computer science to the world

  1. jean phillipe says:

    The intro courses at MIT/Stanford/Harvard are geared towards people who have never programmed. As you know, programming takes a long time to master, and it’s easier to teach imperative languages to students for their first programming course. You should know that in France, the caml (ML) functional programming language is taught as the first language.

    If you really want to know where programming is now, there are two books I can recommend.
    1.) “Concepts Techniques and Models of Computer Programming” by Peter Van Roy and Seif Haridi, http://www.info.ucl.ac.be/~pvr/book.html This book gives a good overview of multi-paradigm programming which has replaced the object oriented approach of the 90s and early 2000s.
    2.) “Verification of sequential and concurrent programs” by Apt, DeBoer, and Olderog http://homepages.cwi.nl/~apt/ps/abo-cont.pdf This book details the latest advances in program verification which along with code reviews and test suites is the way you can make sure your program performs the way you intended it to.

  2. mark says:

    I really like the fact that iTunes U contains some fascinating materials. From your blog post, “The Epic of the Epic”, I added “English 180E” to my library.

    What I don’t like about iTunes U is the interface!

    Do you have any suggestions on how to get iTunes to correctly organize the files under my Library – iTunes U – Collections – Programming Methodology

    I found the course “Programming Methodology” (http://itunes.apple.com/us/course/programming-methodology/id495054181) and subscribed. It contains 84 items/episodes, video lectures and course material. e.g. Under the iTunes U store, I see:

    1. 1. Programming Methodology Lecture 1
    2 General Information
    3 CS106A Syllabus
    4 Course Placement
    5 Honor Code
    6 Karel the Robot Learns Java
    7 2 Programming Methodology Lecture 2
    etc.

    A logical progression of material, videos and handouts.

    Under my Library – iTunes U – Collections, I have 2 collections for this course! What!? Why!?

    1st directory contains just the video of the lectures, and the 2nd collection contains the course material.

    The videos are not in order. The only way to get them listed in order is to select the collection “Programming Methodology” and then to select the 2nd button of the 4 “view your library in different ways” buttons.

    This trick does not work for the course material, they are listed as:
    Final Exam Solutions
    Final Exam
    Problem Set 9 Solutions
    Problem Set 9
    Packaging JAR Files
    Assignment 7
    etc.

    Not intuitive, nor helpful.

    This happens with most (all) iTunes U collections. They do not display under my Library as they were displayed under the Store – iTunes U

    I’ve searched for solutions. People either suggest “make sure they are of type iTunes U” – they are, or they say to use playlists, or to edit the info fields “1 of 84”, “2 of 84” etc. This wastes a lot of time.

    I updated to the latest iTunes (10.6 under Windows Vista), and deleted and resubscribed to the Programming Methodology collection. It made no difference.

    What I want, and expected, was to have the items in my Library, as they were displayed under iTunes U. That way, I can easily view the lectures and the associated handouts.

    I checked your “Guide to” and “Getting Started” and didn’t find a solution.

    Have you experienced this problem when you download material? How do you easily reorganize items into their logical order for easy viewing/reference?

    thank you

    Mark

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s