Assignment 3: Project
Due: April 16, 2026
For this assignment, you will implement a full system of your choosing in pairs. The goal of this assignment is to help you better understand core systems concepts and gain insight into the strengths and weaknesses of Rust in systems programming.
This page will be updated with additional information as it becomes available.
Project Ideas
Here are a few project ideas to get you started. Each project has a foundational systems layer and a higher-level application built on top of it, so you will experience both system-building and practical usage. Each project's scope can be increased or reduced by adding/removing features.
FUSE-Based Filesystem
Implement a userspace filesystem using FUSE that supports reading
.tar or .zip archives, or simple
snapshotting and versioning. On top of this, you can build a file
explorer, a semantic search tool over archives, or a lightweight
backup manager. This project focuses on OS interactions and Rust
ownership semantics, and can be scoped to read-only access.
Mini Container Runtime
Implement process isolation using chroot, Linux namespaces, and cgroups, with resource accounting. On top of this, you can build a sandbox runner for student code or a microservice launcher. This project covers OS-level concepts, safe Rust with low-level syscalls, and can be scoped to single-threaded or single-container support.
Mini Async Runtime
Build an epoll/kqueue-based reactor with a single-thread executor,
waker, and task polling. On top of this, you can build an async HTTP
server or a lightweight Redis-like service. This project
demonstrates Future and
Waker mechanics without the full complexity of Tokio.
Distributed Pub/Sub or KV Cache
Implement a distributed pub/sub system or a distributed KV cache using TCP networking, message routing, and replication built on top of an existing consensus protocol (e.g., raft-rs). On top of this, you can build a build/CI notification system where build events are published and subscribers trigger downstream jobs or send alerts, or a Redis-like CLI client. This project covers networking, concurrency, and basic distributed systems concepts, and can be scoped to a cluster of 3–5 nodes.
Log-Structured Storage Engine
Implement a storage engine using an LSM tree or B-tree, with a write-ahead log, memtable, and compaction. On top of this, you can build a simple embedded database or a persistent key-value store with a SQL-like query interface. This project covers data structures, file I/O, and performance-aware design.
Logistics
You must first choose a group and choose a project idea. You may use the ideas above as a guide. You can pick one, modify one, or ignore them all entirely.
You must email the instructors with your chosen group and a preliminary, one-paragraph description of your project idea by 5PM on Friday, March 13th. If you do not have a partner, your email should state that and you will be assigned a partner. You are not bound by this project description. If a different (and presumably better) project idea occurs to you before the full project writeup is due, you are free to change projects, but not partners.
You must submit a one-page writeup describing your project. You must explain the idea, provide an outline of the features you will support, and provide a high level design of the system. You writeup must be approved by the instructors, who may ask for changes.
You must email the instructors with your writeup prior to class on Tuesday, March 24th.