6.001
Structure and Interpretation
of Computer Programs
Learning
Objectives:
Upon
completion of 6.001, students will be able to explain and apply the basic
methods from programming languages to analyze computational systems, and to
generate computational solutions to abstract problems. In particular, students will:
·
Be
able to explain and apply the major mechanisms for control of complexity in
large programming systems:
o building abstractions,
o controlling interaction
through conventional interfaces, and
o designing new languages.
·
Be
able to discuss issues of programming style and programming aesthetics.
·
Be
able to read and modify a substantial (20 pages) Scheme program, if it is
written in exemplary style.
Measurable
Outcomes & Assessment Methods:
Students
completing 6.001 will have demonstrated an ability to:
·
Design,
implement and test short (1/2 page) recursive programs in Scheme that
demonstrate the following concepts (measured by problem sets and quizzes):
o Building abstractions:
·
computational
processes;
·
higher-order
procedures;
·
compound
data;
·
data
abstractions.
o Controlling interactions:
·
generic
operations;
·
self-describing
data;
·
message
passing;
·
streams
and infinite data structures;
·
object-oriented
programming.
o Meta-linguistic abstraction:
·
interpretation
of programming languages;
·
machine
models of language interpretation;
·
compilation;
·
embedded
languages.
·
Analyze the operation of a Scheme-like
interpreter using the substitution and environment models (measured by problem
sets and quizzes).
·
Design,
implement and test at least one substantial (5 pages) program (measured by
project).
Return to 6.001 Home Page