The Fall 2006 semester of Berkeley’s Programming Languages and Compilers class has ended, and the lucky guys who took it this semester got a nice up close and personal look at Python.
From the course description:
One goal of this course is to explore the structure of programming languages and to consider alternatives to familiar programming language features. We’ll also study the problem of translating programming languages into machine-executable forms, using Python as a concrete example of a language to be translated, and the assembly language of the Intel ia32 family (used in PCs and some of our Solaris workstations downstairs) as a concrete example of a target machine. We study language translation first to learn some of techniques used that are useful for many programming problems outside of language translation, second to gain a better intuitive feel for the tools we use when programming and the costs of the programs we write, and third (possibly most important) to gain experience with the engineering problems associated with building and validating a substantial piece of software.
Man, that is too cool, given how widely Python is used today. When I took this course, the language we studied and used for our projects was called COOL , which stands for Classroom Object-Oriented Language. Pretty decent language, but not exactly the language that amongst other things, is the primary language of choice for Youtube. The jokes about Cool’s name being a misnomer started to wear thin a couple weeks into the semester
.
I noted with interest that this incarnation of CS164 is taught by Prof Hilfinger, who has a reputation amongst computer science students at Cal as having very challenging courses and exams. Which means many GPA-conscious students (the kind who pull out all stops to protect their honors GPA) would avoid classes he taught. I don’t know if this perception has changed. Would be a pity if anyone avoided this course primarily for this reason1.
But hey, those of us who aren’t taking the course can benefit somewhat too, through the online lecture notes, which are just a “wget -r” away from the course site. The notes are mostly language-agnostic, as they should be! The pythonic part comes mainly from the projects, which are to implement phase by phase a compiler for Pyth, a dialect of Python. I don’t think I have the time to redo a project I did close to four years ago (albeit for a different language). But for the intrepid folk who do take a shot at it, it should be quite an experience!
1 I never had the privilege of taking a course under Prof Hilfinger myself, but I assure you this is more a case of coincidence due to my path of progression through the department and the courses he happened to be teaching each semester.

