General Information Updated January 1, 0001


About This Course

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.

Prerequisites

The prerequisite for this class is CS110 or the equivalent.

Compared to CS140

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.

Course Organization and Workload

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.

Grading Policy

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.

Exams

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.

Assignments

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.

Lecture

Mondays and Wednesdays
3:00pm - 4:20pm
160-124

Labs

Mondays 5:30pm - 6:30pm
Wednesdays 6:00pm - 7:00pm
Gates 463a

Questions

Ask on Piazza!

Staff List

Sergio Benitez
Instructor

Dawson Engler
Instructor

Jennifer Lin
Course Assistant

Office Hours

Sergio Benitez
Fridays 5:30pm - 7:00pm
Gates 288 or remotely

Dawson Engler
By Appointment
Gates 314

Jennifer Lin
Tuesdays 11:00am - 12:00pm
Thursdays 1:00pm - 2:00pm
Gates System’s Lounge
(in front of Gates 288)