FRAMES    NO FRAMES

Course Description

Scope and Topics Covered

The course will teach essential aspects of the design and implementation of programming languages. Some general topics to be covered in the course (not necessarily in this order):
The course will be a brief introduction to each, rather than an in-depth study. Several of these topics are encountered or examined in more depth in several later courses in the CS curriculum.

In the Fall 2008 term, we choose one programming language, Haskell, as a means to present the forementioned topics. Why Haskell? This is one of the modern functional languages, which generally make the semantics (i.e. the meaning) of programs easier to understand. Moreover, Haskell is designed on principles of strong static typing, a trend which has been followed in the design of other (not only functional) modern programming languages, such as Java. Some distinctive elements of Haskell:

The course requires a substantial amount of programming, all in Haskell. If this is your first encounter with functional programming, it may seem unnatural or counter-intuitive at the beginning. If you complete programming assignments by their deadlines, you should be able to make the transition from earlier imperative languages (C, C++, Java, etc.) to Haskell smoothly. And you will quickly appreciate many advantages of functional programming.

Lectures

Tue, Thu 11:00 am - 12:30 pm, in Room MCS B33.

Laboratory Sections

Prerequisites

According to the BU catalog and the BU CS course map (click here), CS 112 and CS 113 (or equivalent) will be sufficient preparation for this course. CS 112 gives you the necessary programming background and CS 113 the necessary theoretical background. Although these two courses are the formal requirement, students are normally expected to have completed 200-level courses in the BU CS curriculum successfully. If you think you miss some of this background, please consult with the teaching staff.

Exams

Midterm Exam: Tuesday, October 21, 11:00 am - 12:30 pm.    Solutions
Final Exam: Tuesday, December 16, 9:00 am - 11:00 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:30 - 2:30 pm
       Location: MCS 176, e-mail: kfoury@cs.bu.edu

Teaching Assistant -- Andrei Lapets
       Office Hours: Mon 1:00 - 2:00 pm, Wed 12:30 - 2:30 pm
       Location: MCS 183, e-mail: lapets@bu.edu

Mailing List

The course mailing list is named cs320 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 cs320" at the Unix prompt. To inspect who else is on the mailing list, type "csmail -p cs320". To remove yourself from the mailing list, type "csmail -r cs320".

Students are welcome to post messages and questions to the mailing list.  All messages to cs320@cs.bu.edu are archived (click here).

Book and Reading Material

Required:  



Maintained by Assaf Kfoury
Created: 2008.07.15    Last modified: 2008.09.03