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
Mon, Wed, Fri 10am - 11am, in Room MCS B29.
Prerequisites
According to the BU catalog, CS 320 or CS 332 will
be sufficient preparation for taking this course. Although this is the
formal requirement, the course presumes that students have successfully
completed a 4-year undergraduate program in computer science. In particular,
students are expected to have completed 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 Standard ML) various algorithms presented
in lectures. The transition to Standard ML, a strongly-typed functional
language, should be relatively straightforward for students who have a
good programming experience in other languages.
Exams
Midterm Exam: Friday, October 29, 10-11 am.
Solutions
Final Exam: Monday, December 20, 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
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:
-
L.C. Paulson, ML for the Working Programmer.
Cambridge University Press, 1996.
Webpages of CS520 in Fall 2002 and Fall 2003:
Maintained by Assaf Kfoury
Created: 2004.07.25 Last modified:
2004.12.22