[Home] [Syllabus] [Assignments] [Resources]
There will be 5-7 short (15 minutes or so) in-class quizzes throughout the semester on recently covered material. The quizzes will not be announced in advance.
Quizzes, 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 can be submitted on paper or electronically. If a part of your problem set (say, a programming part) is submitted electronically, and a part is submitted on paper, make a note on each saying that this is a part of the submission. Electronic submissions can be sent by e-mail (acceptable formats: plain text, .doc, .pdf, .gz, .tgz, .jar, .jpeg, .gif; if your preferred format is not on this list, please check with me first). You may attach the solution to a Wiki page. Sending me a URL of the solution (other than of a Wiki page with the attachment) is not acceptable.
It is your responsibility to keep copies of your submitted programs until the problem set is graded, in case there are issues with formats.
Problem sets are due in the beginning of the class on the due date. Late penalty is 25% of the credit if the problem set is sumbitted at or before the next class meeting, 50% if submitted after that. Note that 25% penalty means that 25% of the total credit is subtracted from the score, and then points are subtracted for incorrect solutions (and similarly for 50% penalty).
Each student is allowed to use 2 late coupons throughout the entire semester. Each late coupon waves late penalty for 1 class meeting that the problem set is late. For instance, if a problem set is submitted 2 class meetings late and is accompanied by 2 late coupons, it's graded out of full credit. If it has only one late coupon, it's graded out of 75% credit. To use a late coupon, simply attach to your problem set a sheet with the follwoing information:
Monday | Wednesday | Friday |
---|---|---|
Week 1: January 17 - 20 | ||
Martin Luther King Day, no classes |
Introduction, course overview. Reading: Ch. 1. |
A brief history of programming languages. Language classification.
Language processing (compilers, interpreters). Reading: 4.1.1 |
Week 2: January 23 - 27 | ||
Computability. Reading: Ch. 2. Problem set 1: computability. Due Mon., Jan. 30th |
Functional vs. imperative languages, overview of Scheme. Reading: Ch. 3, 4.4; Paul Graham's article and Carl de Marcken's notes (see Resources). |
Data representation in Scheme (box-and-pointer model) Scheme practice (in the dungeon, second half of the class). |
Week 3: January 30 - February 3 | ||
First-class functions in Scheme. Problem set 1 due. Problem set 2: Scheme. Due Wedn., Feb. 8th |
Discussion of advantages and disadvantages of functional
languages. Introduction to semantics of programming languages, lambda calculus. Reading: 4.1, 4.2. |
Lambda calculus (continue) |
Week 4: February 6 - 10 | ||
Confluence of lambda calculus. |
Introduction to denotational semantics. Reading: 4.3. Problem set 2 due Problem set 3: Lambda calculus, denotational semantics. (due Wedn., Feb. 15) |
Denotational semantics (continue). |
Week 5: February 13 - 17 | ||
Semantics-based reasoning about programs. |
Historic overview of "imperative" languages (Algol, Pascal,
C), introduction to ML. Reading: Ch. 5 Problem set 3 due Problem set 4: ML, part I. (due Fri., Feb. 24) |
Introduction to O'Caml (a dialect of ML). |
Week 6: February 20 - 24 | ||
Introduction to ML types, ML assignment statement. |
More on ML types; ML pattern-matching. |
ML user-defined datatypes. Problem set 4 due Problem set 5: ML, part II, C/C++ (due Wedn. March 15) |
Week 7: February 27 - March 3 | ||
Review for the midterm. |
Midterm exam (includes material up to Friday, February 24.) |
C and C++ datatypes and memory management. Reading: TBA |
March 6 - 10: Spring break, no classes | ||
Week 8: March 13 - 17 | ||
Type systems in programming languages other than ML. Type checking,
type inference. Reading: Ch. 6 |
ML type inference in detail. |
Type polymorphism. |
Week 9: March 20 - 24 | ||
Block-structured languages. Problem set 5 due Reading: Ch. 7. |
Storage management for functions, parameter passing. Problem set 6: Type inference, type polymorphism (due Wedn. March 29) |
Storage management for recursion, higher order functions. |
Week 10: March 27 - 31 | ||
Storage management (cont.). |
Structured control. Reading: Ch. 8.1, 8.2 (skipping 8.3, 8.4). Problem set 6 due Problem set 7: Storage management, structured control, exceptions. (due Wedn. April 5) |
Exceptions. |
Week 11: April 3 - 7 | ||
Data abstraction and modularity. Reading: Ch. 9. |
Modularity. Overview of Modula, Ada. Problem set 7 due Problem set 8: Modules, generic types. (due Wedn. April 12) |
Parameterized types. Java Generic types (a lab in the dungeon) |
Week 12: April 10 - 14 | ||
Object-oriented languages. Reading: Ch. 10. |
Historic overview: Simula, Smalltalk, C++, Java Problem set 8 due Problem set 9: Object-oriented languages. (due Wedn. April 19) |
Simula, Smalltalk in more detail: subtyping, inheritance Reading: Ch. 11. |
Week 13: April 17 - 21 | ||
Overview of C++ Reading: Ch. 12 |
Object-oriented features in C++ Problem set 9 due Problem set 10: Object-oriented features of C++, Java. (due Wedn. April 26) |
Overview of Java Object-oriented features in Java Reading: Ch. 13. |
Week 14: April 24 - 28 | ||
Java types and subtyping, Java system architecture |
Concurrency, distributed programming. Reading: Ch. 14. Problem set 10 due Problem set 11: Java system architecture; concurrency; threads. (due Fri., May 5) |
The Actor Model |
Week 15: May 1 - 5 | ||
Concurrent ML, Java threads |
More on Java threads |
Last day of classes Discussion, review and wrap up. Problem set 11 due Last day to submit any late work. |
Final exam: 1:30-3:30 PM Friday, May 12 |