CS 111<!-- --> Assignments

Assignments

Assignments are due on Thursdays at midnight, except for Assignment 0, which is due on Friday at 5:00 PM. The number of points for each assignment varies depending on the difficulty of the assignment.

Assignment 0: Refresher

Exercises to remind you about a few basics you've already seen in previous courses, such as C++ classes and the gdb debugger (50 points).
Assignment details
Due: Friday, April 7, 2023 at 4:59 PM

Assignment 1: Lambdas, Threads, and Processes

A series of exercises to introduce you to threads and processes, along with C++ lambdas (80 points).
Assignment details
Due: Thursday, April 13, 2023 at 11:59 PM

Assignment 2: Synchronization

Solve synchronization problems using C++ locks and condition variables. (100 points)
Assignment details
Due: Thursday, April 20, 2023 at 11:59 PM

Assignment 3: Thread Dispatcher

Implement a simple threading library with a preemptive dispatcher (100 points).
Assignment details
Due: Thursday, April 27, 2023 at 11:59 PM

Assignment 4: Implementing Locks and Condition Variables, and Reflecting on Trust

Add synchronization primitives to your threading library from Assignment 3 (60 points).
Assignment details
Due: Thursday, May 4, 2023 at 11:59 PM

Assignment 5: Memory-Mapped Encrypted Files

Write a page fault handler to load data from encrypted files into memory on-demand (and decrypt it on the way) (100 points).
Assignment details
Due: Thursday, May 18, 2023 at 11:59 PM

Assignment 6: Page Replacement with the Clock Algorithm

Add page replacement to your solution to Assignment 5, so that only the most recently accessed pages consume memory (100 points).
Assignment details
Due: Thursday, May 25, 2023 at 11:59 PM

Assignment 7: Unix V6 File System

Implement a mechanism to read file data from a "disk" in the Unix V6 file system format (100 points).
Assignment details
Due: Thursday, June 1, 2023 at 11:59 PM

Assignment 8: Journaling File System

Implement log replay during crash recovery for a file system that uses write-ahead logging (60 points).
Assignment details
Due: Thursday, June 8, 2023 at 11:59 PM