Spring 2015: 6.945 (grad H), 6.905 (AUS)

Adventures in Advanced Symbolic Programming

Officially: Large-scale Symbolic Systems

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

Gerald Jay Sussman, Lars E. Johnson


Overview:

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 11:00AM - Noon
Room: 4-261
Office Hours: Mondays 1:30-3:30pm near 32-385 or by arrangement. Email gjs or larsj.


Announcements:

Wed. 3/4/15: MIT Scheme on Athena updated: The version of MIT Scheme provided in the 6.945 Athena locker has been updated to the latest version, MIT Scheme 9.2.

Mon. 3/2/15: Minor changes to PS3 text: Based on conversations during office hours, we fixed some minor typos in ps3.pdf. In particular, we (1) fixed the ordering of the arguments in the sample call to make-generic-operation on page 1, (2) suggested using the add-rule! infrastructure when making your vector arithmetic, and (3) asked you to support magnitude on vectors so that 3.3b can be tested. There have been no changes to the provided code, and the updated pdf has been posted. Feel free to report any other bugs with the problem set-- this is a new pset that we tested ourselves, but you are the first set of students to work through it.

Wed. 2/11/15: Some students and I found a minibuffer bug in the xscheme debugger used in Emacs that prevents one from submitting expressions to evaluate in the debugger. This can be fixed by copying this definition to the bottom of your .emacs file.

Fri. 2/6/15: I've made a few minor changes to the provided .emacs files. In particular, a few students were asking about how to get the REPL style I used in lecture this morning: In that style, the value is printed immediately below the expression rather than being an interaction with a => prompt. To enable this, the xscheme library must be loaded. I added (load "xscheme") to the provided .emacs file in the don't panic guide and set the completion and documentation shortcuts accordingly. Email larsj@ if you have further questions setting up your environment.

Wed. 2/4/15: If you didn't pick up a handout in class, please email your answers from the final page of the Red Tape Memo to larsj@mit.edu.


Class materials:


Reference documentation: