This post is about MIT’s 6.004 Computation Structures course and the edX version of Stanford’s CS143 Compilers.

6.004

6.004 computation structures is available in many different formats:

  • OCW carries versions from 2017 and 2009,
  • the Fall 2018, Spring 2019, and Fall 2019 lecture videos are on Silvina Hanono Wachman’s YouTube channel. The websites for these versions seem to come and go (partly I guess because they publish solutions to their weekly worksheets), I’ve got an archive of the Spring 2019 version.
  • edX has 6.004.1x, 2x, and 3x (based I think on Chris Terman’s 2017 course) but they’re not active at the moment - you can watch the videos and do the quizzes, but the labs/assignments aren’t available. I don’t know exactly how these would have worked but presumably they need human input to the marking process. You can find labs and worksheets at computationstructures.org but the videos there are broken.

There are significant differences between the versions: in 2017 they used a circuit simulator called Jade and a BSim for emulating their beta computer, some time before Spring 2019 they moved to using the closed source Bluespec Haskell-based hardware design language, which is obviously not available to outsiders. For Fall 2019 they used something called minispec.

If you want to get a good idea of how a computer works on a hardware level and some of the basics of assembly programming, I really recommend 6.004. It would be massively more valuable if you could do the labs/assignments, but for me it was still worth it.

Part of my motivation to take these courses was to understand more about what works well in online learning. I found edX’s short videos with mini quizzes in between much more digestible than watching 50 minute recordings of traditional lectures (Chris Terman talks about this in the instructor insights part of the OCW site). I used to wonder why there isn’t more completely online university math/cs teaching (ignoring dropout rates), and 6.004 partly answered that for me. They must have made an absolutely enormous effort creating the course materials, far more than producing slides and problem sheets for a typical lecture course. What’s more, full versions of the edX courses were not fully-automated - there was a lot of interaction with TAs in the discussion sections for example (and some assignments may have been partially human-marked). Also the speed that web technology moves (e.g. death of flash) is already causing code rot even though these courses are fairly recent. Online instruction definitely doesn’t let you create a course once and then never have to change it.

CS143

I’m taking the edX version of CS143 at the moment but have only got to week 3. You can audit this like I’m doing - you still get access to the assignment autograder - or you can pay them 150 dollars for a certificate and for official marking. I wouldn’t recommend doing that due to the state of the online materials though. They provide a VM image which is very old and pretty much unusable (no SSL, you can’t change the keyboard layout easily), and installing the software you need on a modern linux machine is tricky because of the old versions required. I couldn’t get their makefiles working in the intended way (probably down to my ignorance of makefiles), though in the end I have managed to complete the first assignment (writing a lexer using flex).