15-312 Foundations of Programming Languages
Assignments
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. Many students find the written assignments more challenging than the programming ones.
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 10:30am), this
means 10:30am on the next day.
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.
If you want to render the assignments from LaTeX source (perhaps
because you want to use the code in your own solution) you may need
one or more of the style files kwart.cls,
proof.sty,
code.sty, notation.sty, or
assign.sty. You may also need to
change the \usepackage commands to reflect the directory in
which you put the style files.
|
Out |
Type |
Points |
Assignment |
Due |
Solutions |
|
1 |
Jan 20 |
W |
50 |
Inductive Proofs (pdf, tex) |
Thu Jan 27 by 10:30am |
soln, scores |
2 |
Jan 27 |
P |
100 |
MinML (pdf, tex, code, Q&A) |
Thu Feb 10 by 11:59pm |
soln, scores |
3 |
Feb 10 |
W |
50 |
Type Safety (pdf, tex, Q&A) |
Thu Feb 17 by 10:30am |
soln, scores |
4 |
Feb 17 |
P |
100 |
Continuations (pdf, tex, code) |
Thu Mar 3 by 11:59pm |
|
5 |
Mar 15 |
W |
50 |
Universal, Existential, and Recursive Types (pdf, tex) |
Tue Mar 22 by 10:30am |
soln |
6 |
Mar 29 |
P |
100 |
Coercion Elaboration (pdf, tex, code) |
Thu Apr 7 by 11:59pm |
|
7 |
Apr 7 |
W |
50 |
Subtyping and Labeled Variants (pdf, tex) |
Tue Apr 19 by 10:30am |
soln |
8 |
Apr 14 |
P |
100 |
Implementing Concurrency (pdf, tex, code) |
Fri Apr 29 by 11:59pm |
|
|
P = Programming, W = Written |
Programming Assignments
- The programming assignments are generally 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:
- Correctness: does the program compile and run as prescribed?
- Functionality: which of the specified features have been implemented?
- Style: how clean and elegant is the code?
- Documentation: are there sufficient comments to understand the implementations?
- Non-criterion:
- Do not make your code even a tiny bit less clear than it could be, just because you want to improve its efficiency. Efficiency is not a grading criterion unless explicitly specified.
- Extra credit may be earned for some assignments where specified.
- Handin directory is /afs/andrew/scs/cs/15-312/handin/yourid/.
- 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.
- Copy working code for parts of the assignment to the hand-in directory.
- Take advantage of the teaching assistants and instructor. 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:
- Correctness and clarity for mathematical questions.
- Clarity and thoroughness for design or essay questions.
- Extra credit may be earned for some assignments where specified.
[ Home
| Schedule
| Assignments
| Software
| Resources
]
crary@cs.cmu.edu
Karl Crary
|