CS164, Spring 2009: Course Information

Personnel

-->
Instructor:
Paul N. Hilfinger
787 Soda Hall
Phone: 642-8401
Email: Hilfinger@cs.berkeley.edu, cs164@cs
Office Hours: M 2-3, Fri 3-4
 
Teaching Assistants:
James Hamlin
Email: cs164-tc@imail.eecs.berkeley.edu
Office Hours: M 4-5, Tu 5-6 in 611 Soda.
 
Michael Greenbaum
Email: cs164-tb@imail.eecs.berkeley.edu
Office Hours: Th 2-3, 246 Cory (IEEE Lab)

Purpose of this Course

CS164 is an introduction to the design of programming languages and the implementation of translators for them. In the process, we'll do some general exploration of programming language design and its implications for implementation, and look at a dialect of at least one particular language, which this semester is Python.

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.

Prerequisites

Please do not take this course unless you have the prerequisites: CS61B and CS61C, or equivalent courses (at a junior college, for example). You should be familiar with Java or C++. You need not be familiar with Python.

Reference Material

There is no required textbook for this course, since none is altogether satisfactory, and all tend to be ridiculously expensive. Officially, we'll rely on notes that I provide (on paper and on the web), but many people feel more comfortable if they can supplement this information with other treatments. You might want to take a look at the following books: