15-312 Foundations of Programming Languages

Fall 2004
Frank Pfenning
Lecture, TuTh 1:30-2:50, WeH 7500
Section A, Wed 9:30-10:20, PH A18A
Section B, Wed 10:30-11:20, SH 208
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?

  • (12/14) The final has been graded, and final scores, assignment 8 scores, as well as (unofficial) course grades are available on Blackboard. Average for the final was 198.9/250 (79.6%).
  • (12/13) The final exam and a sample solution are now available.

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

Lectures TuTh 1:30-2:50, WeH 7500
Recitations Section A, Wed 9:30-10:20, PH A18A
Section B, Wed 10:30-11:20, SH 208
Textbook Course notes will be handed out, mostly based on:
Programming Languages: Theory and Practice. Robert Harper. (Draft)
There is also a set of lecture notes.
Credit 12 units
Grading 45% Programming Assignments, 20% 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 Thu Oct 14, in class.
The midterm is closed book, one double-sided sheet of notes permitted.
Final Mon Dec 13, 5:30pm-8:30pm, HH B131.
The final is open book.
Topics Mathematical foundations: inductive definitions, substitution, rule induction
Language description techniques: higher-order abstract syntax, typing rules, abstract machines
Language features: functions, recursion, products, sums,
   continuations, exceptions, mutable storage, monads,
   polymorphism, data abstraction, laziness, dynamic typing,
   subtyping, intersection types, inheritance, concurrency, garbage collection
Home http://www.cs.cmu.edu/~fp/courses/312/
Newsgroup news:cyrus.academic.cs.15-312
Usually checked at least once a day
For faster turnaround, e-mail the teaching assistants
Blackboard http://www.cmu.edu/blackboard/
Used only for tracking of grades
Directories /afs/andrew/scs/cs/15-312/handin/andrew_id/ for submission of assignments


  Frank Pfenning
Contact fp@cs or x8-6343
Office Wean Hall 8117
Office Hours Tue 3:00-4:00

Teaching Assistants

  Matt Moore
Email mlmlm@cmu.edu
Office Wean 7th Floor Whiteboards, or 5th floor cluster (as needed)
Office Hours 2:30-3:30pm Wednesday, or by appointment
  Jason Reed
Email jcreed+@andrew.cmu.edu
Phone 412 600 5284
Office Wean Hall 3721
Office Hours 4:30-5:30pm Thursday (except Sept 8, 2:30-3:30 instead of Sept 9)

Administrative Assistant

  Jennifer Landefeld
Contact jennsbl@cs.cmu.edu
Office Wean Hall 8120

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning