Spring 2019: 6.945 (grad AAGS), 6.905 (AUS)

Adventures in Advanced Symbolic Programming

Officially: Large-scale Symbolic Systems

3-0-9, Grad AAGS Level, AI Concentration

Gerald Jay Sussman, Leilani Hendrina Gilpin


Concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications. Means for decoupling goals from strategy. Mechanisms for implementing additive data-directed invocation. Working with partially-specified entities. Managing multiple viewpoints. Topics include combinators, generic operations, pattern matching, pattern-directed invocation, rule systems, backtracking, dependencies, indeterminacy, memoization, constraint propagation, and incremental refinement. Substantial weekly programming assignments are an integral part of the subject.

There will be extensive programming assignments, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or other "functional" language.

This subject is appropriate for undergraduates who have the prerequisite experience.

Prerequisites: 6.034, or comparable experience. Significant programming experience in functional languages recommended.
Time: MWF 2:00PM
Room:[Updated 2-13] Room: 24-307 Room: 26-168
Office Hours: Thursdays 4:00-5:00pm near 32-G514; Wednesdays 4:00-5:00pm near 32-G514.
Email gjs@mit.edu or lgilpin@mit.edu.


  • 15 March 2019: Guy Steele will be giving a guest lecture
  • Mon. 4/23/2019: We posted the Final Project Presentation Schedule. Let us know if you have any questions.

    Class materials:

    Reference documentation: