Instructor: Ding Yuan
Course Number: ECE344

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

Operating Systems

ECE344, Winter 2021
University of Toronto

Lab Assignment, ECE344, Winter 2021

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/18 - 2/2

Lab 2: 2/2 - 2/26

Lab 3: 2/26 - 3/19

Lab 4 (optional bonus): 3/19 - 4/16

Assignment Guideline

The first 2 assignments should be done individually. Lab 3 and 4 can be done in groups of 2 students.

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). Note that attending the lab session 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.

Note that for group labs, members should make balanced contributions. We will interview group members on the code to ensure equal contributions. You should report to the TAs if there are concerns on unfair contribution.

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. (For the first 2 labs, each of you will be assigned with a unique group number; for the last 2 labs, you and your partner will be assigned with the same group number.) 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-000 to os-150. 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.