[Home] [Syllabus] [Assignments] [Resources]
Both the midterm and the final exams are open book, open notes.
Note that the date for the midterm exam is set and will not change. If you have a conflict with this date, please let me know right away.
All reading is from John Mitchell "Concepts in Programming Languages", unless specified otherwise.
Problem sets are due in the beginning of the class on the due
date. Late penalty is 1/3 of the credit per each class meeting that a
problem set is late, unless a problem set is accompanied by a late
coupon (see below).
For instance, if a problem set is due on Wednesday, but is submitted
on Thursday or on Friday before the class meeting, then it is graded
out of 2/3 credit, and if it is submitted after Friday, but before
Monday class meeting, then it is graded out of 1/3 credit. Problem sts
which are more than 2 class meetings late loose all their credit.
Problem sets submitted more than 2 minutes after beginning of the
class are considered late.
Monday | Wednesday | Friday |
---|---|---|
Week 1: August 25 -- August 29 | ||
Introduction, course overview. Reading: Ch. 1. |
Language design space, language processing (compilers,
interpreters). Reading: TBA due Fri, Sept. 12th |
Computability. Reading: Ch. 2. |
Week 2: Sept. 1 -- Sept 5 | ||
LABOR DAY -- no class |
Computability (continue). Problem set 1: Computability (WAS due Wedn., Sept. 10th, extended to Fri., Sept. 12th) |
Functional vs. imperative languages, overview of Scheme. Reading: Ch. 3. |
Week 3: Sept. 8 - Sept. 12 | ||
Data representation in Scheme (box-and-pointer model) | First-class functions in Scheme. |
Discussion of practicality of functional languages. Introduction to semantics of programming languages, lambda calculus. Reading: Ch. 4. Problem set 1 due Problem set 2: Scheme (due Fri., Sept. 19th) |
Week 4: Sept. 15 - Sept. 19 | ||
Lambda calculus (continue) | Introduction to denotational semantics. |
Reasoning about programs based on semantics.
Problem set 2 due Problem set 3: Lambda calculus, denotational semantics. (due Fri., Sept. 26th) |
Week 5: Sept. 22 - Sept. 26 | ||
Historic overview of "imperative" languages (Algol, Pascal,
C), introduction to ML. Reading: Ch. 5 |
Introduction to ML types, ML assignment statement. |
More on ML types; ML pattern-matching. Problem set 3 due Problem set 4: ML. (due Fri., Oct. 3rd) |
Week 6: Sept. 29 - Oct. 3 | ||
Type systems in programming languages other than ML. Type checking,
type inference. Reading: Ch. 6 (except 6.5) |
ML type inference in detail. |
Type polymorphism. Problem set 4 due Problem set 5: Type systems, type inference. (due Fri., Oct. 10th) |
Week 7: Oct. 6 - Oct. 10 | ||
Block-structures languages. Reading: Ch. 7. |
Midterm exam (includes material up to Wedn., Oct. 1) |
Storage management for functions, parameter passing. Problem set 5 due |
Week 8: Oct. 13 - Oct. 17 | ||
FALL BREAK -- no class |
Storage management for recursion, higher order functions. Problem set 6: Storage management (due Wedn., Oct. 22nd) |
Storage management (cont.). |
Week 9: Oct. 20 - Oct. 24 | ||
Structured control. Reading: Ch. 8 (except 8.3). |
Exceptions. Problem set 6 due. Problem set 7: storage management, control, exceptions. (due Wedn., Oct. 29th) |
Data abstraction and modularity. Reading: Ch. 9. |
Week 10: Oct. 27 - Oct. 31 Beginning of winter! | ||
Modularity. Overview of Modula, Ada. |
Modules in other languages. Discussion. Problem set 7 due. Problem set 8: modularity (due Wedn., Nov. 5th) |
Object-oriented languages. Reading: Ch. 10. |
Week 11: Nov. 3 - Nov. 7 | ||
Program structure, design patterns in Object-oriented languages. |
Historic overview: Simula, Smalltalk, C++, Java Problem set 8 due. Problem set 9: object-oriented languages (due Wedn., Nov. 12th) |
Simula, Smalltalk in more detail: subtyping, inheritance Reading: Ch. 11. |
Week 12: Nov. 10 - Nov. 14 | ||
Overview of C++ Reading: Ch. 12 |
Object-oriented features in C++ Problem set 9 due. Problem set 10: Object-oriented languages 2 (due Wedn., Nov. 19th) |
Overview of Java Reading: Ch. 13. |
Week 13: Nov. 17 - Nov. 21 | ||
Object-oriented features in Java |
Java types and subtyping, Java system architecture, security features Problem set 10 due. Problem set 11: Java features (due Wedn., Nov. 26th) |
Concurrency, distributed programming. Reading: Ch. 14. |
Week 14: Nov. 24 - Nov. 28 | ||
The Actor Model |
Concurrent ML, Java threads Problem set 11 due. Problem set 12: Concurrency (due Wedn., Dec. 3rd) |
THANKSGIVING -- no class |
Week 15: Dec. 1 - Dec. 5 | ||
Logic programming. Reading: Ch. 15 |
Prolog. Problem set 12 due. Problem set 13: Logic programming (due Wedn., Dec. 10th) |
Mobile computation, web languages, XML. |
Week 16: Dec. 8 - Dec. 11 | ||
Catch up and discussion. |
Review and wrap up. Problem set 13 due. |