|
15-312 Foundations of Programming Languages
Spring 2005 |
Karl Crary |
Lecture, TuTh 10:30-11:50, PH 225B |
Recitation, Wed 1:30-2:20, SH 220 |
12 units |
This course covers many of the concepts underlying the
design, definition, implementation and use of modern programming
languages. We emphasize formal techniques to study a variety
of programming language paradigms, including functional, imperative,
concurrent, and object-oriented programming. The formal investigations
are complemented by programming assignments that illustrate how
to use and implement languages with radically different models
of computation.
Prerequisites: 15-212 Principles of Programming.
What's New?
- (29 Apr) The review session for the final will be in WeH 4623 at 2pm on
Sunday, May 1. Please come with questions and/or discussion topics ready.
- (26 Apr) The demos for Assignment 8 will be held on Thursday, May 5. You
should sign up for a 20-minute slot at the sheet on Professor Crary's door,
Wean 8127. If you cannot make an appointment on that day, contact Professor
Crary for an alternate time well in advance.
- (17 Apr) Assignment 8 has been posted. It is due on April 29, the final day of classes.
- (7 Apr) Assignment 7 has been posted. It is due in one week, but it doesn't have to be handed in until Tuesday, April 19's lecture.
- (31 Mar) Pierce's open recursion examples have been added to the examples
directory for Assignment 6. They only work with RecordPolyMinML (see the records subdirectory of the handout directory). You are welcome to do the assignment in RecordPolyMinML, but you should talk to me (Kevin) first, because elaboration becomes substantially more complicated.
- (29 Mar) Assignment 6 is now available.
- (21 Mar) The deadline for Assignment 5 has been extended to Thursday, March 24.
- (16 Mar) Reynolds's original paper on polymorphic types, referred to in
the assignment, is available online. It's worth looking at if you're curious.
- (16 Mar) Assignment 5 has been posted. For
the remainder of the course, assignments will be due on Tuesdays rather than
Thursdays.
- (2 Mar) An improved solution to Assignment 2 has been posted. By diffing
the old and improved versions you can see how the visual style and clarity
of the code got better.
- (2 Mar) Clarification for Assignment 4: the step function
gets called at the outermost level from loop.sml with a particular
top-level Stack object. When the MinML state is terminal, the
step function calls the proper callback in that top-level
Stack, rather than raising NoStep (thanks kfd).
- (2 Mar) An update to the problem statement
for Assignment 4 has been posted, because the C machine rules for projections
were inadvertently left out (thanks kfd). The addition of these
rules is the only thing in the problem statement that was changed.
- (2 Mar) The distribution of scores for Assignments 2 and 3 and for the midterm have been posted.
- (2 Mar) Midterms and assignment 2 have been handed back in recitation.
If you weren't there, you can pick yours up from the course secretary.
- (18 Feb) The midterm exams for 2004 and 2003 have been posted.
- (18 Feb) Assignment 4 has been posted, and
is due in two weeks.
- (15 Feb) Questions and answers
regarding Assignment 3 have been posted. I will add additional Q&A's as
I get them.
- (14 Feb) The model solution for Assignment
2 has been posted. Extra credit for the first person finding
and fixing a given bug in the model solution.
- (10 Feb) Assignment 3 has been posted, and
is due in one week.
- (7 Feb) Questions and answers
regarding Assignment 2 have been posted. I will add additional Q&A's as
I get them.
- (3 Feb) The model solution and distribution of scores for Assignment 1 is out.
- (3 Feb) If you weren't in lecture you can pick up your graded Assignment 1 from Margaret Weigand.
- (3 Feb) More examples of duality: projective geometry and simplicial complexes in graph theory.
- (1 Feb) The supplied code for Assignment 2 was updated to make the
interactive parser a little nicer. The change does not affect the code you
have to write; if your code is correct with the old parser, it is correct
with the new one.
- (28 Jan) The description of Assignment 2 has been clarified to pin down the behavior of all the functions you have to implement on open terms (terms with at least one free variable).
- (27 Jan) Assignment 2 has been posted and is due in two weeks.
- (27 Jan) If you want to turn written work in late, you can give it to Margaret Weigand in Wean 8124, if she happens to be in her office, or you can email it to Kevin Watkins (if you wrote it by hand, email scans... there are scanners in most clusters). In either case, you must turn it in by 10:30am on the appropriate day.
See below for older notices.
Class Material
Schedule |
Lecture schedule, readings, and code |
Assignments |
Details of assignments, due dates, and policies |
Software |
Libraries and hints on programming environment |
Resources |
Other course resources |
Course Information
Textbook |
Course notes are available online and are mostly based on:
Programming Languages: Theory and Practice. Robert Harper.
(Use links on the schedule page to access the version of this book
we are using.)
Parts of Types and Programming Languages by Benjamin Pierce are assigned readings later in the semester.
|
Credit |
12 units |
Grading |
35% Programming Assignments, 30% Written Assignments,
10% Midterm Exam, 25% Final Exam |
Assignments |
Programming assignments are 2 weeks each, given out and due on Thursday.
Written assignments are 1 week each, given out and due on Thursday before lecture.
Every students has 3 late days, to be used at any time during the semester.
|
Midterm |
February 24 (tentative), in class.
The midterm is closed book, one double-sided sheet of notes permitted.
|
Final |
TBA.
The final will be open book.
|
Home |
http://www.cs.cmu.edu/~crary/312/ |
Newsgroups |
news:academic.cs.15-312.announce
news:academic.cs.15-312.discuss
|
Directories |
TBD for submission of assignments
|
Instructor
Teaching Assistant
|
Kevin Watkins |
Contact |
kw(at)cs.cmu.edu |
Office |
Wean Hall 8019 (by appointment) |
Office Hours |
Wean Hall 3108/3130
Tue 4:00-5:00
|
Secretary
What's Not So New
- (20 Jan) Assignment 1 has been posted. It is due in one week, at the beginning of lecture on January 27.
- (13 Jan) Don't forget to look at Theorem 1 in today's lecture notes to see why the definition of substitution we've chosen is correct.
- (13 Jan) The specimen pages from PL papers shown in recitation Wednesday were p10 of this paper and p27 of this one. You do not have to understand them—they're just examples of what inference rules and proofs look like in the “real world”.
- (11 Jan) Lecture notes from today's lecture have been posted.
- (5 Jan) Welcome to 15-312! The information on this page may be inaccurate while it is updated for 2005.
[ Home
| Schedule
| Assignments
| Software
| Resources
]
crary@cs.cmu.edu
Karl Crary
|