Tufts University

Spring 2013

Time and Place: | MWF 1:30–2:20, Lane 100 (Geology building) |

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: | Norman
Ramsey, Halligan Extension 006 Office hours Monday 3:30–4:30, Thursday 2:00–3:00, and by appointment. |

Graduate TAs: | Bilal Ahmed |

Andrew Gallant | |

Teaching Assistants: | Max Alexander |

Matt Frey | |

Ariel Hamlin | |

Sam Haney | |

Andrew McGlathery | |

Juan Carlos Montemayor Elosua | |

Marshall Moutenot | |

Alex Polyakov | |

Matt Russell | |

Office hours: | Office hours are TBA |

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 functional, logic, 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
- Lecture notes
- Information about readings
- Homework assignments and solutions
- Information about the midterm and final exams.
- Grading standards
- Information about the course that
**every student must know**- Prerequisites
- Policies and procedures (homework, quizzes, etc.), including what sorts of collaboration are permissible.
- 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 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