Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
15-814 Type Systems for Programming Languages
[go: Go Back, main page]

15-814 Type Systems for Programming Languages


Course Information

Time: Tue-Thu 1:30-2:50
Room: 5409 Wean Hall
Instructor: Robert Harper
Teaching Assistant: William Lovas

Office Hours
Harper: Mon 11:00-12:00 Wean 7113
Lovas: Tue 3:30-4:30 Wean 8301

Description

The course studies the theory of type systems, with a focus on applications of type systems to practical programming languages. The emphasis is on the mathematical foundations underlying type systems and operational semantics. The course includes a broad survey of the components that make up existing type systems, and also teaches the methodology behind the design of new type systems.

Updates

  1. (12-11) Lecture notes (TeX source) for November 14 and 16 are available. Thanks to John for scribing!

  2. (12-10) Lecture notes (TeX source) for December 5 and 7 are available. Thanks to Kanat for scribing! (Note: You will not be responsible for this material on the final --- it is provided only for your curiosity.)

  3. (12-9) Lecture notes for November 7 and 9 (source, thanks to Wenjie!) and November 21, 28, and 30 (source, thanks to Jason!) are available.

    Additionally, some notes on existentials (source) are available. This material was covered October 31.

  4. (12-1) Homework 5 is up (handout, TeX source). This assignment is written-only, so there's no code tarball. It's due December 7, the last day of lecture.

  5. (11-26) Lecture notes (source) for October 26 are available. Thanks to Hormoz for scribing!

  6. (11-20) Lecture notes (source, figure) for October 17 and October 19 are available. Thanks to Kami for scribing!

  7. (11-18) Homework 4 is up (handout, TeX source, code). It's due the Tuesday after Thanksgiving.

  8. (10-28) Homework 3 is up (handout, TeX source, code). It's due Thursday, November 9, but don't put it off---it's a bit heavier on programming than the first two assignments.

  9. (10-20) Lecture notes (source) for October 10 and October 12 are available. Thanks to Xinyu for scribing!

  10. (10-15) Lecture notes (source) for October 3 and October 5 are available. Thanks to Dash for scribing!

  11. (10-11) Homework 2 is up (handout, TeX source, code)

  12. (10-07) Lecture notes (source) for September 26 and September 28 are available. Thanks to Tunji for scribing!

  13. (9-28) Lecture notes (source) for September 19 and September 21 are available. Thanks to Fritz for scribing!

  14. (9-22) Homework 1 is now available (handout, code)

  15. (9-22) Lecture notes for September 12 and September 14 are available. Thanks to Kyung-Ah for scribing them! (LaTeX source is also available)

  16. (9-22) SML examples from the SML introduction lectures are online.

  17. Welcome to 15-814!

References

Primary

Robert Harper, Practical Foundations for Programming Languages , Working draft, Fall, 2006.
Benjamin C. Pierce, Types and Programming Languages , MIT Press, 2002.
Benjamin C. Pierce, ed., Advanced Topics in Types and Programming Languages , MIT Press, 2005.

Secondary

Glynn Winskel, The Formal Semantics of Programming Languages: An Introduction , MIT Press, 1996.
John C. Reynolds, Theories of Programming Languages , Cambridge University Press, 1998.
John C. Mitchell, Foundations for Programming Languages , MIT Press, 1996.

Software

The programming language used for projects in the course is Standard ML, using the Standard ML of New Jersey (SML/NJ) implementation. For further information, you may want to read Programming in Standard ML, as well as the documentation for the Standard ML Basis Library.

A stable version of SML/NJ may be installed on facilitized machines using the misc collections. Please note that the compilation manager in versions 110.43 and beyond is not compatible with that of earlier versions of the compiler.

Many of the lecture notes use Didier Rémy's mathpartir LaTeX package.

Homework

You are required to achieve a grade of B on each homework assignment. If, after grading, your assignment does not meet this standard, you are required to re-submit within one week a revised solution that corrects any errors or omissions to achieve a grade of B. This policy ensures that the emphasis is properly on learning the course material, and not on "getting through it."

All homeworks are due at the beginning of lecture on the due date. All homeworks are to be submitted by copying them to your submission directory in /afs/cs/academic/class/15814-f06/handin. Written homeworks are to be submitted in PDF format (only!), and must be typeset for the sake of legibility. The form of submission for a programming assignment is given with the assignment.

Note Taking

Everyone is required to participate in the note-taking cooperative. Students are to form themselves into groups of two or three (depending on enrollment), so that each group is responsible for preparing the notes for one week of the semester. Each week the responsible group will take notes, typeset them in a form suitable for use by the other students, and submit them for approval (and possible instructions for revision) by the teaching assistant. The first draft is due Monday morning of the following week, and the final draft is to be published on the web site by Wednesday morning of the same week. Notes must be typeset with LaTeX using the template provided.

The note-taking schedule is now online.

Final Exam

There will be a 24-hour take-home final examination during the final exam period at the end of the semester.

Academic Integrity

Unless explicitly instructed otherwise, all homework and exam work is to be solely your own, and may not be shared with or borrowed from any other person in the course. You are not permitted to draw upon assignments or solutions from previous instances of the course, nor to use course materials (such as assignments or programs) obtained from any web site or other external source in preparing your work.

You may discuss homework assignments with other students in the class, but you must adhere to the whiteboard policy. At the end of discussion the whiteboard must be erased, and you must not transcribe or take with you anything that has been written on the board during your discussion. You must be able to reproduce the results solely on your own after any such discussion.

Grading

C. S. Ph.D students are assigned a pass/fail grade in the University grading system, but are given an internal letter grade for Black Friday purposes. A final letter grade of B is required to pass this course. To achieve this, you must have (1) completed all homework assignments with a grade of B; (2) earned a grade of B or better on the final exam; (3) prepared lecture notes to the standard required by the teaching assistant.

Undergraduate students and students in other programs will be assigned letter grades according to the same policies used to assign internal letter grades for C.S. Ph.D. students just outlined.

Schedule of Lectures

Date Topic Chapters Notes Homework
Sep 12 Overview, Inductive Definitions TAPL 1-4; PFPL 1-2
14 Abstract Syntax and Binding PFPL 4-8 Lecture notes (9/12,14) (Source)
19 Programming in SML SML Examples
21 Untyped λ-Calculus TAPL 5 Lecture notes (9/19,21) (Source) Homework 1 out (handout [source], code)
26 λ-Definable Functions TAPL 5
28 Church-Rosser Theorem, Reduction Strategies TAPL 5 Lecture Notes (9/26, 9/28) (Source)
Oct 3 Goedel's T, Type Safety TAPL 8, 9, 12, PFPL 16
5 Termination; Plotkin's PCF TAPL 11, PFPL 17 Lecture Notes (10/3, 10/5) (Source) Homework 1 due
10 Plotkin's PCF; Sums and Products TAPL 11, PFPL 17 Homework 2 out (handout [source], code)
12 Recursive Types TAPL 11, PFPL 21 Lecture Notes (10/10, 10/12) (Source)
17 Subtyping, Variance TAPL 15, 16, PFPL 32 Homework 2 due
19 Subtyping Recursive Types TAPL 20, 21, PFPL 32 Lecture Notes (10/17, 10/19) (Source, figure)
24 (class cancelled) Homework 1 re-do due
26 Polymorphic Types; Church Encodings TAPL 22-23, PFPL 24 Lecture Notes (10/26) (Source) Homework 3 out (handout [source], code)
Oct 31 Existential Types; Abstract Types TAPL 24, PFPL 25 Lecture Notes (10/31) (Source)
Nov 2 Propositions and Types TAPL 9.4, PFPL 30
7 Control Effects: Exceptions TAPL 14, PFPL 27 Homework 2 re-do due
9 Control Effects: Continuations PFPL 28 Lecture Notes (11/7, 11/9) (Source) Homework 3 due
14 Classical Logic and Control PFPL 31
16 Store Effects: References TAPL 13, PFPL 33 Lecture Notes (11/14, 11/16) (Source) Homework 4 out (handout [source], code)
21 Store Effects: Monads PFPL 34
23 (Thanksgiving)
28 Lazy Evaluation PFPL 36-37 Homework 3 re-do due, Homework 4 due
30 Module Systems ATTAPL 8, PFPL 43 Lecture Notes (11/21, 11/28, 11/30) (Source) Homework 5 out (handout [source])
5 Dependent Types ATTAPL 2 Homework 4 re-do due
7 Logical Frameworks Lecture Notes (12/5, 12/7) (Source) Homework 5 due

Robert Harper
Last modified: Tue Nov 21 17:28:49 EST 2006

Valid XHTML 1.0!