General information

Instructor: Richard Eisenberg
Office Phone: 610-526-5061
Home Phone (emergencies only): 484-344-5924
Cell Phone (emergencies only): 201-575-6474 (no texts, please)
Office: Park 204
Office Hours: Wednesdays 2:30-4:00pm; Fridays 1:00-2:00pm
If these don’t work, do not fret. Email instead.
Lecture: MW 1:10-2:30pm in Park 336
Lecture Recordings: at Tegrity: access via Moodle; look for link on right side of screen.
Lab: M 2:40-4:00pm in Park 231
GitLab Repo:
Piazza Q&A Forum:

Goals of course

By the end of this course, you will be able to…

During the course, you will…

This course is an introduction to the art of designing a compiler. A compiler is a computer program that translates computer programs from one language into computer programs in another language. The language you use to implement your compiler is called the meta language. The language your compiler takes as input is called the object language or source language. The language your compiler uses as its output is called the target language. Source languages tend to be higher level (that is, closer to the way humans think) than target languages. Target languages tend to be lower level (that is, closer to the way machines operate) than source languages. In this way, a compiler translates a program produced by humans to a program executable by a computer.

Why study compilers?

Although most students will not go on to write compilers again in the future, the fundamental patterns learned while writing a compiler will surely come up in a career in computer science.

In this course, our meta language will be Haskell, our source language will be Tiger (as described in our textbook), and our target language will be HERA (as developed chiefly by Dave Wonnacott at Haverford).

Course Philosophy

This is a coding intensive course. You should plan for at least 10 hours of work outside of class per week. One of the goals of this course is to have students work on a large programming project; this can be done only with the requisite time demands.

Lecture will comprise a good deal of background material, helpful in coding up your assignments. Unlike other classes I have taught, most lectures will not have in-class-exercise time.

Aho et al. text cover Appel text cover



The required textbook for this course is:

Students wishing to get a more thorough background in compilers may wish to read:


HERA is the Haverford Educational RISC Architecture, developed chiefly by David G. Wonnacott of Haverford’s CS department.

Haskell resources