Labs mostly revolve around the course project which comprises writing a simple but working operating system. The lab sessions are held in a lecture room (instead of a computer lab) and are intended for discussion about tasks in the past, ongoing and upcoming project milestones.

Whenever a new milestone is published, you are expected to familiarize yourself with the milestone tasks so that we can focus on particular problems or pitfalls.

Even though the tasks in the initial (individual) milestones are fairly simple, the tasks in the team milestones will get gradually more difficult. Part of the complexity is due to the cumulative nature of the tasks in the project — your solution to tasks from a particular milestone will be built on top of previous code.

Because you will have to live with your code for most of the semester, you should strive to make the code readable and easy to understand. To this end, pay attention to use of higher-level abstractions, functional decomposition, and proper naming.

Milestones

The following table lists the milestones that you will need to complete, along with the deadlines for extra points. The download information refers to a directory in the individual or team repository in which you will find the specification of milestone tasks along with a skeleton implementation.

In general, you should start working on milestone tasks as soon as possible. If you discover the difficult parts early on, there is time to discuss them within the team and during the lab sessions.

This is much more difficult to do few hours before deadline. Use the calendar on the schedule page to keep track of the deadlines and plan your work accordingly.

Date Title Downloads
2023-09-25 - 2023-10-11 M00: C Language Refresher student / m00-c-language
2023-10-03 - 2023-10-18 M01: Introduction to Kernel student / m01-kernel-intro-{mips,riscv}
2023-10-11 - 2023-11-01 M02: Kernel memory management team-{mips,riscv} / README-m02.md
2023-10-25 - 2023-11-15 M03: Threads, cooperative scheduler team-{mips,riscv} / README-m03.md
2023-11-08 - 2023-11-29 M04: Preemptive scheduler team-{mips,riscv} / README-m04.md
2023-11-22 - 2023-12-20 M05: Virtual memory management team-{mips,riscv} / README-m05.md
2023-12-05 - 2024-01-14 M06: Userspace team-{mips,riscv} / README-m06.md