Pintos OS & WACC Compiler
Operating system and compiler, both from scratch. Best in cohort of 230.
Pintos
Teaching OS written in C. Thread scheduling, user programs, virtual memory with page fault handling, filesystem with buffer cache. A bug in the scheduler crashes the filesystem. A memory leak in VM corrupts user programs. Everything depends on everything else.
Priority scheduling with donation, alarm clock, MLFQ
Argument passing, system calls, process execution
Supplemental page table, frame table, swap, memory-mapped files
Indexed and extensible files, subdirectories, buffer cache
WACC Compiler
Compiler for the WACC language targeting ARM assembly. Lexer, recursive descent parser, semantic analyser, code generator. No parser generators. Handles expressions, control flow, functions, arrays, pairs, heap allocation, register allocation.
Lexer, recursive descent parser, AST, type checking
ARM assembly generation, register allocation, stack frames
Context
Both were team projects. I led both teams. The people I built these with are potential co-founders. PG says doing hard projects with good people is the precursor to doing a startup. I agree.