Instructor: Ding Yuan
Course Number: ECE344

Discussion (Piazza)
Lab Documentation
Lab Assignments
Schedule and Lecture Notes
Grades (Quercus)

Operating Systems

ECE344, Winter 2020
University of Toronto

Lab Assignment, ECE344, Winter 2020

A significant element of this class is four programming assignments using the OS161 instructional operating system. You will be programming in C language. Lab assignments will be released here.

Lab 4 has been released.

Lab 3 has been released.

Lab 2 has been released.

Lab 1 has been released.

Lab schedule

Lab 1: 1/17 - 1/31

Lab 2: 1/31 - 2/25

Lab 3: 2/24 - 3/13 (you can resubmit by 3/27 due to change of grading scheme)

Lab 4: 3/13 - 4/9 4/15

Assignment Guideline

All assignments will be done in groups of 2 students. You should sign up to a group as soon as possible on Google Form. Please make use of Piazza to facilitate finding a partner.

You should be aware that this course will require significant time for each assignment. Many of these assignments require significant preparation that involves reading the specification and the code provided for the assignment. Please read the handouts carefully before starting. This preparation should be done before the lab sessions otherwise you will not be able to make the best use out of the lab TA's time. Note that lab hours alone likely won’t be sufficient to complete the labs. It is very important to start as early as possible on your assignments and avoid procrastination.

Assignments will be marked by the TAs after they are submitted (they are not marked in the labs). The TAs will send you an email with your lab marks. Note that attending the lab is optional. You can do the assignments at home and submit them remotely. However, it is important that you get your code to work correctly on the lab machines, no matter where you develop it. A program that does not work correctly on the lab machines, even if it works correctly on your home machine, will be marked as incorrect. Plan ahead, and give yourself the time to test what you developed at home on the lab machines before the deadline.

In general, the TAs will be on duty only during the first 1.5 hours of the scheduled lab session. To get help at other times, you should use Piazza. The TAs and the instructors will regularly check the forum and answer your questions. These answers become available to all students. Thus, please check the forum before posting a question to make sure that the question has not been posted and answered earlier. The forum provides functionality for you to receive emails as any messages or their answers are posted. Please enable this functionality if you want to know when your questions have been answered (or when any new questions are posed).

You are encouraged to use the forum, and to engage in discussions about the assignments with fellow students. Please do not post code publicly on the forum. Doing so will be treated as an academic offense. You can also post messages on Piazza that are only visible to TAs and the instructor.

Late submission

Penalties will be applied for late submission. The late penalty is 20% of the lab's mark for each 24 hours. For example, if the lab is due Feb 3rd, Friday, at 6:00PM, and you submit on Feb 5th, Sunday, at 4:58PM, and your mark under normal grading is 5, then your final mark of this lab will be 3. If you are submitting late, send an email to Kuei Sun, the TA responsible for marking ( BEFORE the normal submission deadline with your group number. Send another email to the TA immediately after you submit.

Lab Information

We will be using UG Linux machines for grading the labs. You are strongly encouraged to do your assignments on UG machines, even though most or all of this lab should "just work" in many other environments (Cygwin, Solaris, etc.). The course staff will not assist in setting up or debugging problems caused by differences in the environment. If you choose to do development in an unsupported environment, it is your responsibility to leave adequate time to port your solution to UG machines, test it there, and fix any problems that manifest.

All source code must be compiled and submitted on the lab computers. These computers are Linux machines with names that matches ug*, e.g., You can tell which machine you are using from the command prompt. For example, if you are using, the command prompt will show ug149. The range of machines that are accessible is roughly ug51-ug100, ug132-ug180 and ug201-250.

Each group will be assigned a group number for this course. You can find out your group number by typing the groups command after logging into the lab machines.

$ groups

This command provides information about all the Unix groups to which you belong. One of them should be in the range from os-005 to os-100. The 3-digit number after os- is your group number for this course (e.g., with 031, the group number is 031 and not 31). If you do not have a group number, please contact one of the TAs and/or make a private post on Piazza about the issue. Make sure you have already signed up on Google Form prior to notifying the instructor or the TAs.