CS140e is an experimental course offering in operating systems. Students should expect the course to have rough edges since it is the first offering. In CS140e, students implement a simple, clean operating system (virtual memory, processes, file system) on a Raspberry Pi 3 in the Rust programming language and use the result to run a variety of devices.
The prerequisite for this class is CS110 or the equivalent.
CS140e uses up-to-date software (modern programming languages and tools) and hardware (64-bit, multicore architectures). CS140e explores the details of bare-metal software including the boot process and device drivers in the context of an embedded platform, the Raspberry Pi. Everything happens in the physical world; CS140e does not use emulators or virtual machines. Similar to CS140, CS140e also aims to provide a wholistic introduction to operating systems concepts such as protection and isolation through mechanisms such as virtual memory and processes.
This course consists of lectures, five assignments, a midterm, and a final exam. This course also consists of optional labs.
Lectures are held twice a week and primarily cover theoretical and conceptual operating systems fundamentals. Assignments guide students towards implementing an operating system from scratch on a Raspberry Pi 3 in Rust. The expected workload is 10 - 15 hours per week per assignment.
Labs are held twice a week. Lab sessions give students an opportunity to work on assignments with guidance from course staff and cooperation with other students. Labs are optional but students are highly encouraged to attend at least one lab session per week.
Your grade will be a function of your class ranking and where we set the thresholds for letter grades. Your class ranking will be based 55% on assignments, 20% on the midterm, and 25% on the final exam. A +/- 5% participation adjustment will be made for extraordinary cases. Our decision on grade thresholds will factor in class participation a second time.
There will be two exams. They will be open book/notes but not open laptop. The final exam is cumulative but will focus primarily on the material in the second-half of the quarter.
There will be five assignments. The intent is to (1) practice operating systems concepts and (2) add new tools to your systems programming toolset. Except for assignment 0, you will be given approximately two weeks to complete each assignment. We expect that each assignment will take 10 - 15 hours per week to complete.