15-312 Principles of Programming Languages
Homework Assignments
The programming and written assignments count for half of your final grade. Much of what you learn in this course will be through completing these assignments. Your final homework grade is the average of your grades on the seven assignments.
Out | Assignment | Handout | Due | Solutions | |
---|---|---|---|---|---|
0 | Aug 28 | Church's λ-Calculus | Autolab | Sep 5 | |
1 | Sep 5 | Syntax, Statics, Dynamics | Sep 19 | ||
2 | Sep 19 | System T | Oct 3 | ||
3 | Oct 3 | System F and PCF | Oct 17 | ||
4 | Oct 24 | Dynamic Typing | Nov 7 | ||
5 | Nov 7 | Parallelism | Nov 21 | ||
6 | Nov 21 | Concurrent Algol | Dec 6 |
Handout and Handin
Assignments will be made available on Autolab, and solutions are to be submitted via Autolab (programming) and Gradescope (theory). To submit a homework to Autolab, run make handin.tar in the root directory of the assignment. This will generate handin.tar which may then be uploaded to Autolab. You may make as many submissions as you like before the due date, only the latest will be graded.
Remember that written assignments must be submitted to Gradescope (not Autolab). You will not receive credit for the written portion unless it is successfully submitted to Gradescope.
In general, for programming assignments we ask that you submit your code and inline comments in each file detailing anything you think we need to know to understand your submission. The written assignments are to be typeset in LaTeX and submitted in PDF format. Please use the provided assignment handout source as a reference to typeset your solutions.
Late Policy
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. 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. Late homework should be submitted as usual on Autolab and Gradescope. Both portions of the homework are considered together for the purposes of late days. That is, if the written, programming, or both parts of the homework are late by one day, then the entire assignment is considered to use one late day.
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% 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.
Extra Credit
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. See the home page for how extra credit will count towards your grade.
Advice on Programming Assignments
- Grading criteria:
- Correctness: does the program compile and run as prescribed?
- Functionality: which of the specified features have been implemented?
- Documentation: are there sufficient comments to understand the implementations?
- Criteria not applied unless explicitly specified:
- Efficiency: choose clarity over efficiency in your code.
- Some advice:
- Start your assignments early.
- Design your program from simple to more complex features.
- Finish implementations of the simpler specifications before moving on to more complex ones.
- Submit early and submit often. This will protect you against losing work or being caught out by autolab.
Advice on Written Assignments
- Grading criteria:
- Correctness and clarity for mathematical questions.
- Clarity and thoroughness for design or essay questions.
- Some advice:
- Start your assignments early.
- Don't wait until the last minute to type up your solutions: ideas that seem to work on paper will often break as you write them up carefully!