CS370: Operating Systems |
![]() |
| [Schedule] | [Assignments] | [Grading] | [Syllabus] | [Infospaces] | [Canvas] | [Home] |
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.
Programming Exercise: Building a Memory-Safe Red-Black Tree in C Under Kernel-Style Constraints 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 are available here. Here's the companion walkthrough for the assignment. Release date: July 21st 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. The assignment also requires that you will implement goodness-of-fit tests (chi-squared and Kolmogorov–Smirnov) from their mathematical definitions, not just from from a statistics library. Additional details coming soon. Release date: August 24 Assignment 2: Writing a shell from scratch with support for arbitrary pipelined operators with support for shared memory
Here's the twist. Claude Code is required while you're building, but it's banned from what you ship. Every decision your device makes on its own, every detection, every diagnosis, has to be code you understand well enough to defend, out loud, by yourself. The agent can help you build the machine. It can't be the machine.
|
| Department of Computer Science, Colorado State University, Fort Collins, CO 80523 USA © 2025 Colorado State University |