15-312 Foundations of Programming Languages

Fall 2003
Frank Pfenning and Jonathan Aldrich
Lecture, TuTh 1:30-2:50, SH 224
Section A, Wed 11:30-12:20, BH 235A
Second session Wed 9:30-10:20, SH 324
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/17) Course grades have been assigned and posted on Blackboard. Grading scale goes in increments of 12.5% (excluding extra credit): 100%-87.5% A, 87.5%-75% B, 75%-62.5% C, 62.5%-50% D. Extra credit was used to improve grades near a grade border. Average number of points for the course is 824/1000 = 82.4%.
  • (12/17) The final has been graded, with an average score of 190 pts = 76%;
    see final and sample solution if you are curious
  • (12/12) Solution to Assignment 8 (explanation of dynamic semantics)

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, SH 224
Recitations Section A, Wed 11:30-12:20, BH 235A
Second session Wed 9:30-10:20, SH 324
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 16, in class.
The midterm is closed book, one double-sided sheet of notes permitted.
Final Mon Dec 15, 5:30pm-8:30pm, WeH 5403.
The final will be 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
Blackboard http://www.cmu.edu/blackboard/
Used only for tracking of grades
Directories /afs/andrew/scs/cs/15-312/students/andrew_id/ for submission of assignments


  Frank Pfenning
Contact fp@cs or x8-6343
Office Wean Hall 8117
Office Hours Wed 3:00-4:00 or by appointment
  Jonathan Aldrich
Contact jonathan.aldrich@cs.cmu.edu or x8-7278
Office Wean Hall 8212
Office Hours Mon 3:00-4:00 or by appointment

Teaching Assistant

  Daniel Spoonhower
Contact spoons@cs.cmu.edu or x8-3043
Office Wean Hall 5119
Office Hours Thu 12:30-1:30 or by appointment


  Jennifer Landefeld
Contact jennsbl@cs.cmu.edu or x8-4740
Office Wean Hall 8124

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning