CS 207 - Advanced Programming Languages
Winter 2012

News

Overview

InstructorIulian Neamtiu
 
  
LecturesTR    8:10 a.m. - 9:30 a.m., Materials Science and Engineering Building (MSE) room 113
  
Office hours TR    9:45 a.m. - 10:45 a.m. Winston Chung Hall room 412
GradingProject (45%) + Final exam (30%) + Assignments (20%) + Class participation (5%)
TextbookTypes and Programming Languages by Benjamin C. Pierce.
Final examMarch 22 (take home)
Prerequisites CS 152 (or equivalent) and CS 181 (or equivalent)
iLearn 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.

Schedule

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

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

Projects

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.

Resources

Optional books:

Policies

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.