15-312 Foundations of Programming Languages

Academic Integrity

As a condition for taking this course, you are responsible for compliance with the university's Policy on Academic Integrity.

In this course, you are authorized to use the books and notes linked from this Web site, as well as any other sources specifically allowed by the course staff. Any other source is unauthorized.

You are allowed to discuss homework assignments with other students. However, in order to ensure that the work you submit is still your own, we insist that you adhere to a whiteboard policy regarding these discussions: you are not allowed to take any notes, files, or other records away from the discussion. For example, you may work on the homework at the whiteboard with another student, but then you must erase the whiteboard, go home, and write up your solution individually. We take your ability to recreate the solution independently as proof that you understand the work that you submit.

This policy is our attempt to balance the tension between the benefits of group work and the benefits of individual work. We ask that you obey the spirit of the policy, as well as the letter: ensure that all work you submit is your own and that you fully understand the solution. This is in your best interest: the exams constitute a significant part of your final grade, they will be timed, and they will draw heavily on the terminology, concepts, and techniques that are exercised in in the homework. It is unlikely that you will be able to do well on the exams if you do not take full advantage of the learning opportunity afforded by the homework assignments.

Late Work

Every student has up to 3 late days for use on any assignment throughout the semester, but no homework may be more than two days late (this is so that we can discuss assignments in lecture the Thursday after they are due). 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.

UPDATE: We will lock submission directories after the deadline. Therefore, late homework should be submitted by emailing a copy to the TAs. If you are submitting an assignment late, we ask that you mail the TAs by Tuesday morning to notify us and then mail us again with your completed assignment attached once you have finished.

No homework assignment will be accepted more than two days after the due date. Once you used your budget of three late days for the semester, each late day will be assessed a 25% penalty on your grade for that assignment. So, if you are two days late and over budget, you can earn at most 50% credit for an assignment.

Modified: this has been changed to a 15% penalty. So, if you are two days late and over budget, you can earn at most 70% for an assignment.


Homework will account for 50% of your grade, the midterm 20%, and the final 30%. Your final letter grade will be determined in part based on your performance relative to the rest of the class, though we have no pre-determined curve in mind. We will also consider extra credit on the assignments and participation in recitation and lecture when determining final grades. Extra credit and participation do not count towards your numeric average, but, for example, they might cause a student on the border to receive an A instead of a B (or vice versa!).


This course introduces the fundamental principles of programming language design, semantics, and implementation.


Post all questions for the teaching staff on the 15-312 Discussion Group on Piazza (link at the top of this page). Questions may be posted to the teaching staff only, or publically so that the entire class may see them. In most cases it is best to post publically, since then everyone can benefit from the discussion that follows. However, it is not appropriate to post solutions to homework problems publically, for the obvious reasons, so if your question is about your own solution, please post privately to the teaching staff only.

Valid CSS! Valid XHTML 1.0 Strict