COMP 105—Programming Languages
Tufts University
Spring 2015

Time and Place: MW 10:30–11:45, Anderson Hall, Room 206
Questions, answers, announcements: Piazza signup and course page
Other emails: (primarily to notify us about extension tokens)
Home page:
Instructor: Kathleen Fisher, Halligan 205
Office hours Monday 5:00–6:00, Tuesday 3:30–4:30, and by appointment.
Graduate TAs:Rob Ruenes
Jerett Sierad
Teaching Assistants: Arthur Berman (recitation)
Tony Cannistra (recitation)
Hannah Clark (recitation)
Will Clarkson
Jennifer Hammelman
Caleb Helbling
Michael James (recitation)
Andrew Mendelsohn (recitation)
Sid Prasad (recitation)
Shea Clark Tieche
Samneul Weiser
Recitations: Recitations start January 15. Details Notes
Office hours: Office hours are listed on a separate page. They may fluctuate with workload.
What we look like: Your course staff in pictures


COMP 105 is a survey course in programming languages. To succeed in this field, you will combine code and math. The goal of the course is to give you intellectual tools that will help you use, evaluate, choose, and design programming languages. You will learn to ask questions about language safety and classification of errors, type systems, formal semantics, and abstraction mechanisms for both functions and data.

COMP 105 provides an introduction to the study of programming languages as an intellectual discipline. The elements of this discipline include specifications based on abstract syntax, lambda calculus, type systems, and dynamic semantics. You must be comfortable with recursion and with basic mathematical ideas and notations for sets, functions, etc.

COMP 105 uses the case-study method to give you experience with languages that go beyond the simple imperative paradigm. Case studies will cover languages from the imperative, functional,and object-oriented families. Example languages may include Standard ML, Smalltalk, Scheme, and Prolog.

Case studies are reinforced by suitable programming exercises. COMP 105 assumes previous experience programming in imperative languages like C, C++, or Java. Good programming skills are essential, and we assume some knowledge of C. Plan to complete ten or twelve programming assignments over the course of the term. The more interesting or amusing assignments include Hindley-Milner type inference, arbitrary-precision arithmetic, and some game-playing programs.

COMP 105 is recommended for graduate students, especially those whose primary research interests lie in related fields such as compilers, software systems, or artificial intelligence. Graduate students whose primary interests lie in programming languages may find that COMP 105 overemphasizes programming practice and underemphasizes foundations.

Note: COMP 105 does not cover implementation of conventional, imperative programming languages, which are covered in COMP 181 (Compilers).

For more information

You can read what other students have said about Norman Ramsey teaching this material.

Results of testing class code

There are various visualizations from test results.