BU CAS CS 320
Concepts of Programming Languages
Semester: Fall 2004
Concepts of Programming Languages is a course that introduces
students to some fundamental concepts in programming language design and
implementation. The primary goal is to allow students who complete this
subject to have a good feel for the elements of style and aesthetics
of programming and a good command of the major techniques for controlling
complexity in a large system.
The programming language Scheme, a dialect of Lisp that we use in this
course, is an attempt to bring together the power and elegance of List
and Algol. From Lisp we take the metalinguistic power that derives
from the simple syntax, the uniform representation of programs as data
objects, and the systematic management of heap-allocated data. From
Algol we take lexical scoping and block structure.
Standard ML (SML) is a functional programming language that makes extensive
use of types in capturing programming invariants. We are to explain how
datatypes in SML can be employed to conveniently model data structures and
how pattern matching can facilitate programming with datatypes. Also, we
are to make use of the module system of SML in the construction of
(relatively) large programs.
Ultimately, we would like to make a convincing argument that programming
can be a great of deal fun.