CS370: Operating Systems


red-line
[Schedule] [Assignments] [Grading] [Syllabus] [Infospaces] [Canvas] [Home]

Assignments

All assignments are due at 8:00 PM on the due date. There is a late penalty of 10% per-day for up to a maximum of 2 days. All assignments will be posted at least 2 weeks prior to its due date. We will have a mix of both written and programming assignments. All assignments will be posted on this page. No assignments will be accepted more than 4 days past the due date.

All assignments should be submitted using Canvas.


  Required Use of Claude Code
You are required to use Claude Code for all assignments and to log that usage, but the goal is for you to leave the assignment understanding every line you submit, and not just produce working code by any means available
 

 





Programming Exercise: Red-Black Trees Under Memory Pressure

A red-black tree is a data structure that keeps itself balanced, so that searches, insertions, and deletions all stay fast. You will build one. That is where the assignment begins, and it is the easy part.

Then the ground shifts. Again and again, the assignment changes the rules about where your tree's memory lives and how it may be reclaimed: allocations that fail halfway, memory drawn from a pool you wrote yourself, a stack too small to recurse on, two trees quietly sharing the same bytes. Each change mirrors a problem real operating systems face every day. Your tree must survive all of them while behaving, on the outside, exactly as before.

Additional details available soon ....



Release date: July 31st









Assignment 1: A random number generator and probability distribution toolkit with built-in statistical testing


A pseudorandom number generator is just a deterministic function of a seed. The same seed always produces the same sequence. In this assignment you will build that function yourself, and then build a layer on top of it that reshapes a stream of uniform values into samples from named probability distributions: Bernoulli, binomial, geometric, exponential, normal, Poisson, and Zipf.






Assignment 2: Writing a shell from first principles with support for abrirtary pipelined operators with support for shared memory





Assignment 3: Concurrency Control Using Threads







Assignment 4: Implementing and designing the Completely Fair Scheduler with a mix of Poisson and Zipf arrival processes







Term Project:Experimentations with the Raspberry Pi




Due dates:
TP-D1 due 2/5/2025 [1 point]
TP-D2 due 3/26/2025 [2 points]
TP-D3 due 5/7/2025 [7 points]











Extra Credit: Still thinking about this ...























Department of Computer Science, Colorado State University,
Fort Collins, CO 80523 USA
© 2025 Colorado State University