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: Programming Reference: Webpages of CS520 in Fall 2002 and Fall 2003:



Maintained by Assaf Kfoury
Created: 2004.07.25    Last modified: 2004.12.22