Python Master Classes
Structure and Interpretation of Computer Programs
[5 days] One of the most well-regarded textbooks in all of computer science is "Structure and Interpretation of Computer Programs" by Abelson, Sussman, and Sussman. This is the same book that was long taught to undergraduates at MIT. It was the same material taught to undergraduates when I was a professor at the University of Chicago. One of the more interesting things about this book is that it offers insights to programmers at all levels. For undergraduates, the book introduces important concepts about the nature of computation and exposes students to topics such as functional programming, LISP programming, iterative vs. recursive processes, and computational complexity. At a more advanced level, the book teaches you almost everything you need to know to write your own interpreter.
In this intense week, we're going to attempt to cover the essential topics in the book cover-to-cover with the goal of implementing our own LISP/Scheme interpreter. This will involve a mix of problem sets from the book, coding in Scheme, and writing a scheme interpreter in Python (or other language of your choice). Why would you take this class? Because it's fun of course. Plus, you'll learn a lot of neat stuff and understand programming languages with a new awareness.
This course is aimed at experienced programmers and attendees should already be familiar with common programming topics such as functions, object orientation, and concurrency. Many of the exercises in SICP also involve topics from calculus and number theory (e.g., computing derivatives, numerical methods, primes, etc.) as well as topics related to computational complexity. Although it not my intent for this class to be highly mathematical (i.e., it's not a week of proofs), I'm not going to shy away from those topics either. Participants should be ready for just about anything. Prior programming experience in Python or some other high-level language is assumed.
5 days, are you crazy?
Perhaps it's a bit crazy, but at the University, SICP was taught to first year CS students over a 10 week quarter in a class meeting 3 days a week, 50 minutes each session. That's only 25 hours of class time. Add in a midterm, quizzes, waiting for people to show up, and everything else that goes along with a class and maybe it works out to about 20-22 hours of material.
This course is being taught to just six experienced software developers over five days. We'll be in my office for about 40 hours. Everyone will be so worked up that they'll go home each night thinking about it and working on it even more. On the whole, it should be possible to cover all of the big ideas of that book, code some exercises, and do some cool projects. It will be intense, but fun.
About the Instructor
The workshop is led by David Beazley, author of the Python Essential Reference and Python Cookbook. A little known fact is that Dave actually taught a course using SICP when he was a professor at the University of Chicago. That was the same semester as 9/11 though--this workshop will probably be a bit more focused and well, a lot better.
You can register here.
|Copyright (C) 2009-2018, Dabeaz LLC. All Rights Reserved.|