Tl;dr:
- It's a lab class, so jump right to the labs.
CS140E is an introductory operating systems course. It roughly covers the same high-level material as [CS 212][cs212] (formerly CS 140), but with a focus on embedded systems, interacting directly with hardware, and verification. Both courses cover concepts such as virtual memory, filesystems, networking, and scheduling, but take different approaches to doing so. By the end of 140E, you will have (hopefully) built your own simple, clean operating system for the widely-used, ARM-based [Raspberry Pi][raspberrypi].
- How compiler may bite you in bare-metal programming & assembly
- Self-Replicating Code (implementing Ken Thompson's paper)
- GPIO: First time with with BCM2835 Datasheet
- Cross-check: Use checksum with tracing (extensively)
- Interrupt: BCM2835 Datasheet again, code trapping mechanism with timer interrupt (ARM Assembly heavy)
- Thread: hand-roll a simple thread + context switch mechanism. Learn how to "brain surgey" through implementign
fork - Bootleader: Makes Unix + Pi talk. Sending code through UART.
- UART Driver: life was good when you have an access to
printk. Now I cannot take it as given. - Interrupt Part 2: program the BCM2835 to handle interrupt from custom sources like GPIO pins
- Debug Hardware: set and handle breakpoint/watchpoint exceptions and work with co-processor registers.
Last updated @ December 17, 2025
