15-312 Foundations of Programming Languages

The programming and written assignments are the heart of this course and count for a large percentage of your grade. Much of what you learn in this course will be through completing these assignments.

All assignments are single-student assignments. Do not copy any parts of any of the assignments from anyone. Do not look at other students' code, papers, or exams. The university policies on academic conduct will be applied rigorously.

There are 4 programming assignments and 4 written assignments. Written assignments are scheduled for 1 week and are due before lecture on the noted day. Programming assignments are scheduled for 2 weeks and are due by midnight on the noted day.

Every student has up to 3 late days he may use for any assignments throughout the semester. For example, a student may hand in Assignment 1 one day late and Assignment 4 two days late, but then all remaining assignments must be handed in by the deadline.

By one day late we mean 24 hours late. For written assignments (which are due before lecture at 1:30pm), this means 1:30pm on the next day. Late written homework should be turned into the instructor at his office. If he is not available, please write date and time on the paper and push it under the door.

Some assignments will have extra credit questions. The intent is for such questions to be interesting, although some may be very hard. Partial answers and half-baked ideas are welcome and will receive some credit as long as it is clear you have seriously considered the question. Extra credit will be recorded separately throughout the semester and will be used to improve those whose scores are on the border between grades.

  Out Type Points Assignment Due Solutions

1 Sep 2 W 50   Grammars and Induction   Thu Sep 9 by 1:30pm   sample solution
2 Sep 9 P 100   Implementing MinML   Thu Sep 23   sample solution
3 Sep 23 W 50   The Meaning of Laziness   Thu Sep 30 by 1:30pm   sample solution
4 Sep 30 P 100   Evaluation in the E machine   Thu Oct 14   sample solution (code)
5 Oct 14 W 50   Polymorphic, Existential, Recursive Types   Thu Oct 21 by 1:30pm   sample solution
6 Oct 21 P 100   Bi-Directional Typechecking   Thu Nov 4   sample solution
7 Nov 4 W 50   Subtyping and Objects   Thu Nov 11 by 1:30pm   sample solution
8 Nov 13 P&W 150   Storage Management   Thu Dec 2 and Thu Dec 9  

P = Programming, W = Written

Programming Assignments

  • The programming assignments are given out on a Thursday and due in 2 weeks.
  • They must be handed in electronically any time on or before the due date.
  • Grading criteria:
    1. Correctness: does the program compile and run as prescribed?
    2. Functionality: which of the specified features have been implemented?
    3. Documentation: are there sufficient comments to understand the implementations?
  • Criteria not applied unless explicitly specified:
    1. Efficiency: choose clarity over efficiency in your code.
  • Extra credit may be earned for some assignments where specified.
  • Handin directory is /afs/andrew/scs/cs/15-312/handin/userid/asstn/ for assignment n.
  • Some advice:
    1. Start your assignments early.
    2. Design your program from simple to more complex features.
    3. Finish implementations of the simpler specifications before moving on to more complex ones.
    4. Copy working code for parts of the assignment to the hand-in directory.
    5. Take advantage of the teaching assistant and instructors. They are eager to help you!

Written Assignments

  • The written assignments are given out on a Thursday and due in 1 week.
  • They must be handed in to the instructor by the beginning of lecture on the due date.
  • Grading criteria:
    1. Correctness for mathematical questions.
    2. Clarity and thoroughness for design or essay questions.
  • Extra credit may be earned for some assignments where specified.

[ Home | Schedule | Assignments | Software | Resources ]

Frank Pfenning