FRAMES
NO FRAMES
Course Description
This course introduces students to fundamental
principles
and techniques in the design and implementation of modern programming
languages.
The course covers these issues mainly as they relate to functional
programming
and object-oriented programming. The emphasis is on rigorous
mathematical
formalism and reasoning, both in describing programming languages
(their
syntax) and in analyzing their behavior (their semantics).
Topics include, but are not limited to: the
lambda-calculus
(LC) as a foundational language, type systems for LC, extensions of LC,
references, exceptions, evaluation contexts, continuations, approaches
to formal semantics (operational, axiomatic, domain theoretic), type
checking
and inference.
Lectures
Tue, Thur 9:30 am - 11:00 am, in Room MCS B29.
Prerequisites
According to the BU catalog, CS 320 and CS 332
should
be sufficient preparation for taking this course. This is the
formal requirement, but the course also presumes a level of
intellectual
maturity acquired by completing all 300-level courses in the BU
CS curriculum, or equivalent courses elsewhere. In addition to learning
the theoretical material, from the course textbook and handouts,
students
will be asked to implement (in Objective CAML) various algorithms
presented
in lectures. The transition to Objective CAML, a strongly-typed
functional
language with object-oriented features, should be relatively
straightforward for students who have a good programming experience in
other languages.
(Objective CAML is installed on csa2.bu.edu and csa3.bu.edu, but as of this
writing, not yet installed on csa.bu.edu. Objective CAML is also installed on the Linux
machines in the CS Lab. To start an interactive Objective
CAML session, type "ocaml" at the prompt and hit the "enter" key. To stop the interactive session, type "#quit;;" and hit "enter", or else press the "CTRL" key and hit the "d" key.)
Exams
Midterm Exam: Thursday, October 26,
9:30-11 am.
Solutions
Final Exam: Saturday, December 16, 9-11
am.
Solutions
The exams are closed book. You may, however,
bring
one 8.5 by 11 sheet of paper (i.e. one regular-size sheet of paper) as
a crib sheet. Preparing a crib sheet can be a useful study aid, so take
time in selecting material for it. You may use both sides of the paper
and write as small as you like, but in any case, you are allowed only
one
sheet. No mechanical or electronic reproductions are allowed; the crib
sheet must be hand written. If you hand in your crib sheet with your
exam,
you will get credit for it in your total grade for the exam.
Teaching Staff
Instructor -- Assaf Kfoury
Office
Hours:
Tue, Thu 12:00-2:00 pm
Location:
MCS 176, e-mail: kfoury@cs.bu.edu
Teaching assistant -- Rui Shi
Office
hours:
Mon, Wed 3:00-5:00 pm
Location:
MCS 174, e-mail: shearer@cs.bu.edu
Mailing List
The course mailing list is named cs520 and
is managed by IT's majordomo engine. All students registered for the
course
should add themselves to the mailing list. To join the course mailing
list,
type "csmail -a cs520" at the Unix prompt. To inspect who else
is on the mailing list, type "csmail -p cs520". To remove
yourself
from the mailing list, type "csmail -r cs520".
Students are welcome to post messages and
questions
to the mailing list. All messages to cs520@cs.bu.edu
are
archived (click here).
Books and Reading Material
Required:
-
Benjamin C. Pierce, Types and Programming
Languages.
MIT Press, 2002.
-
Various handouts posted on the course
webpages.
Programming Reference:
-
Download appropriate chapters on Objective
CAML from
here.
-
L.C. Paulson, ML for the Working
Programmer.
Cambridge University Press, 1996.
Webpages of CS520 in past years:
Maintained by Assaf Kfoury
Created: 2006.07.25 Last modified:
2006.10.26