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

  Karl Crary
Contact crary@cs.cmu.edu or x8-7687
Office Wean Hall 8127
Office Hours Thu 2:30

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

  Margaret Weigand
Contact weigand@cs.cmu.edu or x8-2568
Office Wean Hall 8124

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