Adventures in advanced symbolic programming

Master

In Maynard (USA)

Price on request

Description

  • Type

    Master

  • Location

    Maynard (USA)

  • Start date

    Different dates available

This course covers 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. 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.

Facilities

Location

Start date

Maynard (USA)
See map
02139

Start date

Different dates availableEnrolment now open

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

Subjects

  • Programming
  • Systems
  • Project
  • Design
  • GNU

Course programme

Lectures: 3 sessions / week, 1 hour / session


Concepts and techniques for the design and implementation of systems that are evolvable—that are easy to adapt to variations in the set of problems that they are designed to address. Exploratory behavior—means for decoupling goals from strategy. Escape from the constraints of expression-based language. Working with partially-specified entities. Managing multiple view points.


Strategies include language layering, generate-test separation, and propagation. Techniques to be discussed are generic operations, combinators, backtracking, dependencies, and incremental refinement.


The readings for this subject will be taken from a variety of sources. There will be assigned readings with each problem set. All of the books we need will be on reserve in the library. You will need SICP (Abelson, Sussman, and Sussman; Structure and Interpretation of Computer Programs). Material from that book will be referred to quite often. This book is available online, but dead trees are often easier to work with.


Abelson, Harold, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. 2nd ed. Cambridge, MA: MIT Press, 1996. ISBN: 9780262011532.


You will also need to consult the MIT/GNU Scheme documentation.


We will distribute an assignment on Wednesday almost every week. The default arrangement is that the assignment is due on Wednesday the next week. Most of the assignments will require the use of a computer running MIT/GNU Scheme, which runs on most systems, including GNU/Linux, Windows, and Mac OS. This is free software. We will provide any other software needed.


See this link to find out what is meant by "free software".


Just before spring break you will propose an extended project, which will be due by the end of the term. In this project you will design and build a significant piece of symbolic-manipulation software. If you don't come up with a great idea yourself, we have some ideas that you might pursue. You will be expected to write elegant code that can be easily read and understood by us. You must supply a clear English explanation of how your software works, and a set of test cases illustrating and testing its operation. You will present a brief summary and demo in class near the end of the term.


The grades for this subject will be determined by a combination of classroom participation, homework, and project work. There are no examinations in this subject. We expect you to be at every class and to work every problem set.


Many people learn more effectively when they study in small groups and cooperate in various other ways on homework. We are very much in favor of this kind of cooperation so long as all participants actively involve themselves in all aspects of the work. When you hand in a paper with your name on it we assume that you are certifying it as your work and that you were involved in all aspects of it. Even if you work with others you should do the write up separately, and you should indicate the names of any collaborators for each part of the assignment. However, we encourage you to make the final project a team effort with a joint presentation and write up, so please try to find collaborators early in the term for this work.


Don't show me this again


This is one of over 2,200 courses on OCW. Find materials for this course in the pages linked along the left.


MIT OpenCourseWare is a free & open publication of material from thousands of MIT courses, covering the entire MIT curriculum.


No enrollment or registration. Freely browse and use OCW materials at your own pace. There's no signup, and no start or end dates.


Knowledge is your reward. Use OCW to guide your own life-long learning, or to teach others. We don't offer credit or certification for using OCW.


Made for sharing. Download files for later. Send to friends and colleagues. Modify, remix, and reuse (just remember to cite OCW as the source.)


Learn more at Get Started with MIT OpenCourseWare


Adventures in advanced symbolic programming

Price on request