Announcements
- 21-Apr: Prof. Chong's office hours on Thursday April 25 are cancelled. If you'd like to meet with Prof. Chong this week, contact him to make an appointment.
- 18-Apr: Final exam is Monday May 13. College students: 9am-noon; local extension school students: 6pm-9pm. Extension school students, see the Extension school page for more details.
- 17-Apr: Assignment 6 released, due Apr 30.
- 13-Apr: Bug in pprint.ml is now fixed. See Piazza for the new file, or download new version of lam-records.zip from iSites.
- 11-Apr: Solution code for Homework 4 is now available on iSites.
- Old news...
Course information
This course is an introduction to the theory, design, and implementation of programming languages. Topics covered in this course include: formal semantics of programming languages (operational, axiomatic, denotational, and translational), type systems, higher-order functions and lambda calculus, laziness, continuations, dynamic types, monads, objects, modules, concurrency, and communication.
See the lecture schedule for more detailed information on topics covered.
Course staff
- Instructor: Stephen Chong
Office hours: Thursdays 11:30am-12:30pm, 2:30pm-3:30pm (MD 145) - Teaching Fellows:
-
David Darais
Office hours: Mondays 9am-11am (2nd floor lounge of MD) -
Andrew Johnson
Office hours: Wednesdays 10am-12pm (2nd floor lounge of MD) -
George Kulakowski
Office hours: Tuesdays 3pm-5pm (2nd floor lounge of MD)
-
David Darais
Contacting course staff
All questions and issues related to assignment, course content, etc., should be sent to Turn on JavaScript to view the email address or discussed on Piazza. Questions related to grades, special consideration, etc. can be sent directly to Prof. Chong. In general, sending email to individual course staff will delay a response. Note that course staff may take up to 48 hours to respond to email and Piazza.
Time and place
Tuesdays and Thursdays, 10:00am-11:30am. Maxwell-Dworkin G 125.
Prerequisites
Computer Science 51. Also recommended is Computer Science 121. Students must have good programming skills, be comfortable with recursion, basic mathematical ideas and notations, including sets, relations, functions, and induction. See the schedule for some suggested background reading on some of these concepts. Feel free to contact the instructor if you have questions about the requirements or other aspects of the course.
Homeworks, exams, and grading
- Midterm: Thursday 14 March (in class; evening exam for local Extension students)
- Final exam: Monday 13 May, 9am, MD G115
- Homeworks: 6 assignments. Some will contain a programming component in OCaml and Haskell. See the Schedule page for due dates, and the Assignments page for details of the assignments.
Your grade will be determined by a weighted average of your scores on homework assignments, the midterm exam, the final exam, and class participation. The percentage breakdown (roughly and subject to change) is 50% homework assignments, 20% midterm, 25% final exam, and 5% participation.
Extension school
CS 152 is offered through the Extension School as CSCI E-152. Information specific to Extension School students can be found on the Extension Students page.
Textbooks
There is no required textbook for the course. In most cases, the class materials should suffice. The instructor will provide written lecture notes where helpful.
See the Resources page for additional material that you can examine.
Lectures/schedule
See here for more information.
Section
Section is held on Fridays, 4pm-5pm in MD G125. Section attendance is not required. More information can be found here.
Assignments
See here for more information.
Late penalties, collaboration, and other course policies
See here for more information.