15-213 Introduction to Computer Systems (ICS): Assignments

The assignments are the heart of this course. Much of what you learn in this course will be through completing these assignments.

  • All labs are due 11:59pm on the shown due date
  • You have 3 grace days for the entire semester - use them wisely.
  • You can use at most 1 grace day for any one assignment
  • You can submit any assignment at most 3 days late.
  • All assignments are handed out and handed in using Autolab.


Lab  Out Weight (%) Name Due

L1 Tue Aug 24 7 Data Lab Tue Sept 7
L2 Tue Sep 7 7 Bomb Lab Thu Sep 16
L3 Thu Sep 16 4 Buffer Lab Thu Sep 23
L4 Tue Sep 28 8 Cache Lab Tue Oct 12
L5 Tue Oct 12 4 Process Lab Tue Oct 19
L6 Thu Oct 21 12 Malloc Lab Thu Nov 4
L7 Tue Nov 9 8 Proxy Lab Tue Nov 23

Collaboration and Academic Integrity

All assignments in this course are single-student assignments, except for Proxy Lab which can be done in a team of at most two. The work must be all your own. Do not copy any parts of any of the assignments from anyone including the web. Do not look at other students' code, papers, or exams. Do not make any parts of your assignments available to anyone, and make sure noone can read your files. The university policies on academic integrity will be applied rigorously.

We will be using the Moss system to detect software plagiarism including comparisons with labs from prior years. This system is amazingly good, because it understands the programming language in question (C, in our case).

It is not considered cheating to clarify vague points in the assignments or textbook, or to give help or receive help in using the computer systems, compilers, debuggers, profilers, or other facilities.

Due Dates and Grace Days

All handins are electronic via the Autolab system. Assignments are due at 11:59pm on the specified due date.

Each student will receive a budget of 3 grace days for the entire semster. Here is how they work:
  • You will be granted at most 1 grace day for each assignment. Grace days are used up automatically until you run out. You cannot defer or bank grace days.
  • After you use up the grace day for an assignment (or run out of grace days) then you will receive a penalty of 20% for each subsequent day late.
  • For any assignment you may not submit more than 3 days late. This allows timely grading and permits us to discuss or post aspects of solutions. You will receive no credit for an assignment which is more than three days late.

Grace day examples (Assume that the assignment is due at 11:59pm Thursday):
  • Your last handin is noon on Friday, and you still have some grace days left: Then no late penalty and you use up a grace day.
  • Your last handin is noon on Friday and you have used up all of your grace days: Then you will be penalized 20%.
  • Your last handin is noon on Saturday and you still have some grace days left: Then you will consume one grace day and be penalized 20%.
  • Your last handin is noon on Sunday and you still have some grace days. Then you will consume one grace day and be penalized 40%.

Exceptions to the policies above will be granted only under most dire 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 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.


Grading criteria are stated separately with each lab. Most of each score will be determined by the Autolab grading script.

The teaching staff will decide on grade boundaries at the end of the year. We may use intangibles, such as participation in class and recitation for those close to grade boundaries.