OCW Website link: see.stanford.edu/see/courseInfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111
Regular Course link: www.stanford.edu/class/cs106a/cgi-bin/
It covers Java. Uses the acm library and ‘Karel the robot’ as teaching aids. If you’re new to programming, this course is for you!
28 Lecture videos (available as .mp4,.wmv or Streamed online) (+Transcripts)
.pdf Handouts & Assignments
Assignment Demos (Applet versions of the assignments, Note: you can find the links to those if you download the ‘complete set of course materials’, they’re not on the OCW website)
Slides and Lecture sources are not available on the OCW site, but you might find them here.
..The books are available here
One thing to note is that early in the course (first ~4 lectures and first assignment), I had some trouble getting Karel the robot to work, in order to get the first assignment done. That’s because the Karel.jar provided is pretty ancient (made in ~2005) and it doesn’t work well any more.
It’s a silly introductory assignment and you may skip it if you’re having trouble with Karel itself. I worked around the issue by making a throw-away VM, inside which I run the Stanford-Eclipse version they provide on the OCW site, which is archaic now.
Unfortunately the entire course focuses on the usage of the acm library. The end result is that you may learn how to work with the acm library, but you will not learn how to work in a generic Java environment.
If you enter this course with no knowledge of Java whatsoever; and only use the materials provided, you will exit this course with little generic Java knowledge, but you will get a good sense of the syntax involved so when you do want to jump into ‘proper’ Java you won’t be going in blind. You probably want to look at a secondary source for information (ie. Berkeley CS61B).
Successes: If you’re new to programming, it’s perfect for you! You get to do things with graphics very early on — this is because the acm library helps you by abstracting away all the minutia you would normally deal with yourself. — which is something most introductory programming classes don’t get to give you a taste of.
Failures: If you’re already familiar with programming (just not Java), it might be a bit of a snore… They really focus on the easy bits and the assignments are quite easy. They only mention the main() function, in passing, on lecture 26 (of 28). That little detail alone is very annoying IMHO. They don’t go into the details of what you would have to worry about in a generic (ie. non-acm) graphical application outside the acm library. If you’re already familiar with Java, you’ll probably want to do all the assignments without the acm library just to make it a little bit less of a bore, tho not by much.