Principles of Programming Languages

Course Description

Overview

The course teaches essential aspects of the design and implementation of programming languages. Topics include binding time, strong typing, control and data abstraction, higher-order functions, and polymorphism. The course also provides an introduction to syntax and semantics, interpretation, and storage management. The programming language used to illustrate these various aspects is OCaml, a modern strongly-typed functional language, which also provides an appropriate platform for comparing programming paradigms (functional, imperative, declarative or logic programming). The course is an introduction, rather than an in-depth study, of these topics, several of which are encountered or examined in more depth in several later courses in the CS curriculum.

Prerequisites

There are two formal prerequisites: CS 131 and CS 210 (in the Boston University Course Bulletin). However, to make the best of the intellectual contents of this course, students should have the preparation and maturity acquired by successfully completing the required computer science courses up to at least 200-level. Prior programming experience with at least one high-level programming language is essential.

Workload and Evaluation of Student Performance

Performance in the course is measured by a combination of 3 programming assignments (15% of final grade), one term project with 3 programming parts (24%), 4 written homework assignments (8%), lecture and lab participation (8%), one mid-term exam (15%), and one end-of-term exam (30%).

To master the material presented in lecture, lab, reading, and assignments, students should expect to spend the time and energy normally required by a 4-credit 300-level course, which means an average of between 12 and 15 hours per week (including attendance of two 75-minute weekly lectures and one 50-minute weekly lab) over a 14-week semester.

Logistics

Instructor: Assaf Kfoury, MCS 118, office hours on Tuesday and Thursday, 2:30 - 4:00 pm, or by appointment.

Teaching assistants: Mark Lemay, office hours on Wednesday, 3:00 - 5:00 pm, or by appointment, and Qiancheng ("Robin") Fu, office hours on Friday 10:00 am - 12:00 noon, or by appointment.

Meeting times and places: Lectures on Tuesday and Thursday, 12:30 pm - 1:45 pm, in Room WED 130 (in the Wheelock College of Education building). Lab Tutorials on Wednesday, 9:05 am or 10:10 am or 11:15 am or 12:20 pm or 1:25 pm, in Room MCS B37N (in the Mathematics and Computer Science building).

Piazza: All documents for the course (lecture notes, homework handouts, references, textbooks) will be posted on the Piazza website for the course. We will also use Piazza for announcements, queries from students to the teaching staff, and queries between students. You will get an email from Piazza with a link inviting you to create an account during the first week of the Spring 2020 semester.

TopHat: Participation will be assessed through quizzes supported by the platform TopHat, which will require that you sign up for a TopHat account.

Further Details on the logistics of the course are in the full Syllabus for the course, posted in the Piazza website for the course.

Course Schedule