CS 207 - Advanced Programming Languages
Spring 2010



InstructorIulian Neamtiu
LecturesTR 9:40 a.m. - 11:00 a.m., CHASS Interdisciplinary Build South (INTS) room 1130
Office hours TR 11:05 a.m. - 12:05 p.m. Engineering Building 2 (ENGR2) room 412
GradingProject (45%) + Final exam (30%) + Assignments (20%) + Class participation (5%)
TextbookTypes and Programming Languages by Benjamin C. Pierce.
Final examMarch 15 (take home)
Prerequisites CS 152 (or equivalent) and CS 181 (or equivalent)
Moodle page

Catalog description: Introduces the techniques for analyzing program semantics and correctness. Covers simply-typed lambda calculus, as well as basic and advanced type systems. Presents axiomatic, operational, and denotational semantics. Explores programming-language constructs and tools for specifying, reasoning, and verifying correctness properties. Includes safe memory accesses and safe concurrent programming or security.


The schedule might change during the quarter so check this page often!

Day Date Topic Reading Notes
Tue Jan 5 Introduction   Assignment 1 out
Thu Jan 7 OCaml .  
Tue Jan 12 Untyped Arithmetic Expressions (I) Chapters 2,3  
Tue Jan 19 Untyped Arithmetic Expressions (II) .  
Thu Jan 21 Untyped Lambda Calculus (I) Chapter 5  
Tue Jan 26 Untyped Lambda Calculus (II) .  
Thu Jan 28 Typed Arithmetic Expressions
Simply Typed Lambda Calculus (I)
Chapters 8,9 Assignment 2 due
Tue Feb 2 Simply Typed Lambda Calculus (II) Chapter 9  
Thu Feb 4 The Curry-Howard Isomorphism
Extensions to Simply Typed Lambda Calculus
Chapter 11  
Tue Feb 9 Extensions, Exceptions Chapters 11,14  
Thu Feb 11 Exceptions (cont'd), References Chapters 13,14  
Tue Feb 16 Subtyping Chapter 15  
Thu Feb 18 Imperative Objects Chapter 18  
Tue Feb 23 Featherweight Java Chapter 19
(optional)Featherweight Java: A Minimal Core Calculus for Java and GJ by Igarashi, Pierce, and Wadler
Thu Feb 25 Polymorphism: Universal Types Chapter 23
(optional)On Understanding Types, Data Abstraction, and Polymorphism by Cardelli and Wegner
Assignment 3 due
Tue March 2 Polymorphism: Existential Types Chapter 24  
Thu March 4 Operational semantics
for multi-threaded programs
Types for safe locking by Flanagan and Abadi  
Tue March 9 Project presentations    
Thu March 11 Project presentations    
Mon March 15 Final Exam    


Each student is expected to complete a research project, write up the material describing the project in a similar manner to a research paper, and present the project in class (in one of the last classes). The project can have an implementation flavor, a theoretical flavor, or both.

The instructor will suggest several possible project topics, but the students are encouraged to choose their own topics, as long as they are relevant to this class.

The projects can be completed individually or in teams, with the expectation for team projects being commensurately higher than for individual projects.


Optional books:


Attendance and basic etiquette

Students are required to attend, follow, and actively participate in all lectures and discussions. All lectures, discussions, and exams start at the stated time. Avoid being late coming to class, as this is very disruptive. Students are requested to refrain from using electronic devices (laptops, cell phones, music players, etc.) during lectures, exams, and discussions. If, for some compelling reason, you need to be on call, be sure to put your cell phone in silent mode, and excuse yourself from the class if you need to take a call. Analogously, when coming to see the instructor or the TA, please turn your cell phone off.

Academic Integrity

Academic integrity will be strictly enforced. Any violation or suspected violation of academic integrity will be dealt with according to the UCR discipline procedure. An excellent, detailed guide to what constitutes academic dishonesty and the procedure in case of academic integrity violations is available here.

What constitutes academic dishonesty?

In short: acts including but not limited to, cheating, fabrication, plagiarism, unauthorized collaboration, or facilitating any of the above.

What are the penalties and sanctions for academic dishonesty?

In short: if a student is found guilty of academic dishonesty, penalties range from receiving an F for the class and adding a record of violation to the student's file, up to dismissal from the University, depending on the severity of the infraction and the number of prior violations of the integrity code.

Ignorance is no excuse.

The above information is not designed to threaten or intimidate the student. Rather, it is presented to inform the individual of the consequences. The important thing to remember is that if there is any doubt in one's mind that an act is in violation of academic integrity guidelines, then the prudent response would be not to do the act. It is a simplistic approach, to be sure, but one that will benefit both the student and the university community as a whole.