15-411 Compiler Design
|Out||Points||Assignment||Due (always at 11:59pm)|
|Lab 1||Tue Sep 4||100||Register Allocation||Tests||Tue Sep 11|
|Compilers||Tue Sep 18|
|Lab 2||Tue Sep 18||100||Loops and Functions||Tests||Tue Sep 25|
|Compilers||Sun Oct 7|
|Lab 3||Sun Oct 7||150||Structs and Arrays||Tests|| Tue Oct 23 |
|Compilers||Tue Oct 30|
|Lab 4||Tue Oct 30||150||Type and Memory Safety||Tests|| Tue Nov 6 |
|Compilers||Tue Nov 13|
|Lab 5||Tue Nov 13||200||Optimization or Garbage Collection||Benchmarks|| Thu Nov 29 |
|Compilers||Thu Dec 6|
|Term Papers||Thu Dec 13|
|Out||Points||Assignment||Due (always in lecture)|
|Asst 1||Tue Sep 4||60||Instruction Selection and Register Allocation||Tue Sep 11|
|Asst 2||Tue Sep 18||60||Lexing, Parsing, and Control Flow||Tue Sep 25|
|Asst 3||Tue Oct 2||60||Memory Layout and Allocation|| Thu Oct 11 |
|Asst 4||Thu Oct 18||60||Type Checking Issues, Dataflow Analysis, and Register Allocation|| Thu Oct 25 |
|Asst 5||Thu Nov 8||60||Optimization|| Thu Nov 15 |
The university policies and procedures on academic integrity will be applied rigorously.
All labs in this course must be done either by a single student or by a pair of students, at your discretion. The work must be your own and your partner's. Do not copy any parts of the lab from anyone. Do not look at other students' code. Do not make parts of your code available to anyone besides your partner, and make sure noone else can read your files.
General libraries, such as the SML Basis Library, the SML/NJ Library, or other publicly available libraries may be used in your code. This also includes the code supplied with the textbook. Please clearly identify if you used library code, credit its source, and summarize any changes you may have made to the library. Portions of other students' compilers, from this or previous semesters, are explicitly prohibited. If in doubt, please contact the instructor.
All assignments in this course are single-student assignments. The work must be all your own. Do not copy any parts of any of the assignments from anyone. Do not look at other students' papers. Do not make any parts of your assignments available to anyone, and make sure noone can read your files.
We will be using the Moss system to detect software plagiarism.
It is not considered cheating to clarify vague points in the labs, assignments, or textbook, or to give help or receive help in using the computer systems, compilers, debuggers, profilers, or other facilities.
All handins of labs are electronic via the Autolab system. All assignment are due at 11:59pm on the specified due date. Every individual or group has up to 5 late days to use for any labs throughout the semester. For example, if an assignment is due at 11:59pm on Tuesday, and handing in the assignment at 1:05pm on Thursday incurs no penalty, but uses up 2 late days. Late days used so far are recorded on Autolab.
All handins of written assignments are on paper at the beginning of lecture (1:30pm) on the due date. Up to two assignments may be handed in late, any time before next lecture. The exception is Thanksgiving break, where you have to make separate arrangements for a late handin.
You may not submit a lab more than two days late. You will receive no credit for a lab which is more than two days late.
Exceptions to the policies above will be granted only in exceptional circumstances and must be discussed with and approved by the course instructor in advance.
We always count your latest submission, both for grading purposes and for the purpose of counting late days. You should avoid the scenario where you make final clean-up edits close to the submission deadline without subsequently compiling and re-testing your code. You might end up with no credit if you accidentally fail to close a comment or miss a parenthesis!
Some labs may permit unofficial submissions in order to test your code with the Autolab grader. Unofficial submissions will not be graded. Please make sure to hand in at least one official submission.
On autolab, be sure to select
S6 - View your handin history and scores
to see the official autolab output and instructor evaluations of your submissions.
Grading criteria are stated separately with each lab. Some of each score will be determined by the Autolab grading script. In addition, the teaching assistants will read your code and award additional points based on code quality.
The most important criterion is always correctness. Buggy code is useless, and is likely to get a low score. A secondary criterion is the selection of appropriate algorithms and data structures for your implementation. Finally, it is important that your code be readable and well-organized. This includes proper use of the module system and clear comments.
Grading for written assignments is based on the correctness of the answer and the presentation of your reasoning. Strive for clarity and conciseness, but show how you arrived at the answer. If you cannot solve a problem, explaining your approach and why you failed is encouraged. Such answers will be given partial credit.
Grades are based primarily on the total score for the class out of 1000 points. This includes 700 points for lab and 300 points for assignments. There are no predetermined cut-offs. Instead, the teaching staff will decide on grade boundaries at the end of the year. We will use intangibles, such as participation in class for those close to grade boundaries.