15-411 Compiler Design
Labs & Assignments

The lab and assignment schedule is tentative!

The labs are the heart of this course and count for 70% of your grade. Much of what you learn in this course will be through completing these labs. Labs can be done individually or in pairs. You must choose a partner by the due date of the tests for the first lab, which is Tuesday September 9. We encourage you to use Piazza if you have difficulty finding a partner. If you still have difficulties, or if problems in your working relationship arise during the semester, please get in touch with the instructor as soon as possible.

The second component of your work consists of written assignments, accounting for 30% of your grade. Written assignments must be done individually. University standards for academic integrity will be applied rigorously (see the policy details below)

Lab Schedule

    Out Points Lab Due (always at 11:59pm)

Lab 1 Tue Sep 2 100   Register Allocation   Tests   Tue Sep 9
  Compilers   Tue Sep 16
Lab 2 Tue Sep 16 100   Loops and Conditionals   Tests   Tue Sep 23
  Compilers   Tue Sep 30
Lab 3 Tue Sep 30 100   Functions   Tests   Tue Oct 7
  Compilers   Tue Oct 14
Lab 4 Tue Oct 14 100   Pointers, Arrays, and Structs   Tests   Tue Oct 21
  Compilers   Tue Oct 28
Lab 5 Tue Oct 28 150   Optimizations   Compilers   Thu Nov 13
  Papers   Tue Nov 18
Lab 6 Tue Nov 18 150 Garbage Collection
or LLVM
or C1
or Create Your Own Adventure
  (no tests)  
  Compilers   Thu Dec 4
  Term Papers   Tue Dec 9

Assignment Schedule

    Out Points   Assignment   Due (always at 11:59pm) Further links

Asst 1 Thu Sep 4 60 Instruction Selection and Register Allocation     Thu Sep 11   LaTeX source  
Asst 2 Thu Sep 18 60 Lexing, Parsing, and SSA     Thu Sep 25   LaTeX source
Asst 3 Thu Oct 2 60 Calling Conventions and Optimizations     Thu Oct 9   LaTeX source
Asst 4 Thu Oct 16 60 Memory Layout and Polymorphism     Thu Oct 23   LaTeX source
Asst 5 Thu Oct 30 60 Instruction Scheduling, Function Pointers, Exceptions     Thu Nov 6   LaTeX source

Collaboration and Academic Integrity

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.

Due Dates and Late Days

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 6 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.

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.

All handins of written assignments are as PDF files via the Autolab systems. All assignment are due at 11:59pm on the specified due date. You have two late days for the written assignments to be used throughout the semester.

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.

Subversion

We are using a subversion repository administered by the course staff for distribution and autograding purposes.

Suppose your group name is hickory. To check out a working copy of the svn module for your group, do

% svn checkout https://svn.concert.cs.cmu.edu/15411-f14/groups/hickory

Your userid would be hickory and your password should have been mailed to you.

This will create a directory hickory/ with a subdirectory for each lab. For the very first lab, there is also some starter code in hickory/lab1/language, where language is one of the explicitly supported languages. You may copy this into the compiler directory and edit it, or replace or ignore it.

When you are ready to hand in your code (and you may hand in as often as you like), make sure you have committed the most recent version to the repository with svn commit.

Then go to the Autolab server, select the lab you would like to hand in and select option

> Checkout your work for credit
Depending on whether you are handing in test cases or a compiler, the autograder for Lab 1 will do either
% svn checkout https://svn.concert.cs.cmu.edu/15411-f14/groups/hickory/lab1/tests

or

% svn checkout https://svn.concert.cs.cmu.edu/15411-f14/groups/hickory/lab1/compiler

and then run the driver to autograde your code. For each lab, the autograder will look for the two handin directories tests and compiler.

You are encouraged to use the svn repository to manage your development, but you are not required to do so as long as you hand in your code as specified above.

Submission

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

> View handin history

to see the official autolab output and instructor evaluations of your submissions.

Grading

Grading criteria are stated separately with each lab. Most of each score will be determined by the Autolab grading script, combining points from the test cases and the compiler you hand in. The last two labs also have a written component which is a significant part of your score.

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. This is tested indirectly as as some of the test cases will likely run too slowly and time out. Finally, for your own sake, it is important that your code be readable and well-organized since you will have to work with your own evolving code base throughout the semester. 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.


[ Home | Schedule | Labs & Assignments | Resources ]
[ Autolab | Piazza ]

fp@cs
Frank Pfenning