Announcements
- 11-April: Section today (Monday, 4pm, Pierce 209) will be a review session. Come with questions!
- 11-April: Reminder that the final exam is Wednesday, May 13, 9am, in Harvard Hall 202.
This is an open book, open note, and open laptop exam. You may refer to any course materials, including online lecture notes. You may not otherwise use the internet.
There are 30 multiple choice questions, each worth one point. You will have 180 minutes. We encourage you to try all questions. - 5-April: Homework 9 graded, and available on the CS 152 submission server. Also, you should have received an email summarizes our records for you so far. Contact course staff if you didn't receive this email.
- 2-May: Practice final released via 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
- Teaching Fellows:
- Jao-ke Chin-lee
- Dan King
- Scott Moore
- Kevin Wang
All questions and issues related to assignments, 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, in Maxwell Dworkin G125.
Prerequisites
Computer Science 51. Also recommended is Computer Science 121. Students must have good programming skills, be very comfortable with recursion, proofs, 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.
Two points to emphasize: (1) this is not an introduction to programming; students should already know how to program, ideally in at least couple of languages. (2) you must be very comfortable with recursion, proofs, basic mathematical ideas and notations, including sets, relations, functions, and induction.
Homeworks, exams, and grading
There will be an in-class midterm and a final exam. There will be approximately 9 homework assignments during the semester. Some of the assignments will contain a programming component in OCaml and Haskell and maybe some other languages. Prior knowledge of these languages is not required.
- Midterm: Tuesday, 3 March (in class; evening exam for local Extension students. Distance extension school students, see Extension School page)
- Final exam: Wednesday, 13 May, 9am (Harvard Hall 202). (Evening exam for local Extension students. Distance extension school students, see Extension School page)
- Homeworks: 9 assignments. Some will contain a programming component in OCaml, and Haskell, and other languages. 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 (which includes attendance and participation in class, section, and office hours, and contributing to online discussion in Piazza.
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 Mondays 4pm-5pm, in Pierce 209 (recorded) and Tuesdays 5pm-6pm, in Maxwell-Dworkin 323. Section attendance is not required. Sections will, for the most part, focus on worked examples and exercises to consolidate material covered recently in class. You should feel free to come to section with questions. More information can be found here.
Office hours
- Mondays 1:00pm-2:00pm (Maxwell-Dworkin 145, Steve)
- Tuesdays 3:30pm-5:00pm (Maxwell-Dworkin, Maxwell-Dworkin 3rd floor lounge, Dan)
- Tuesdays 8:00pm-10:00pm (Pierce 301, Scott) CS Nights: joint office hours for 152/161/179
- Wednesdays 2:30pm-4:00pm (Maxwell-Dworkin 319, Dan)
- Wednesdays 4:30pm-6:00pm (Pierce 100F, Jao-ke)
- Thursdays 9:00pm-10:30pm (Eliot DHall, Kevin)
- Sundays 9:00pm-10:30pm (Eliot DHall, Kevin)
Assignments
See here for more information.
Late penalties, collaboration, and other course policies
See here for more information.