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: | comp105-staff@cs.tufts.edu
(primarily to notify us about extension tokens) |

Home page: | http://www.cs.tufts.edu/comp/105/ |

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 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).
*

- Complete abbreviated syllabus.
- Detailed syllabus and schedule. Calendar format: January, February, March, April. Old format
- Lecture notes
- Recitation notes
- Readings
- Homework assignments and solutions
- Information about the midterm final exams. Pages are created after exam results are available.
- Grading standards
- Information about the course that
**every student must know**- Prerequisites
- Policies and procedures including what sorts of collaboration are permissible, late policies, and participation requirements.
- Computer software and accounts for the course

- We highly recommend that you prepare your theory homework using
LaTeX.
We also recommend the
`mathpartir`. It should already be installed on the departmental computers. For a personal machine, you can download it directly or install it as a Debian package. For an example of`mathpartir`in use, you can look at the LaTeX source code for a simple proof system. You can also look at LaTex source code for typesetting operational semantics (Thanks to Sam Guyer for providing this example file).You can find out about many other useful LaTeX packages from the LaTeX Companion. There is a second edition, but I've linked to the first edition because it's almost as useful and a lot cheaper.

- For the Boolean-formula solver, a payoff matrix shows the number of francs earned by each test
- For the Typed μScheme type checker, there is a payoff matrix sorted by student, a payoff matrix sorted by francs earned, and a fault graph
- uML type inference payoff matrix, matrix sorted by earnings and fault graph
- Smalltalk bignum payoff matrix, matrix sorted by earnings and fault graph