CS140e (Winter 2018)

An Experimental Course on Operating Systems

Upcoming Schedule (See Full Schedule)

Week Monday Wednesday
Feb 19 President's Day (no class/lab!) Isolation Mechanisms
Feb 26 Processes & Scheduling Interrupts & Exceptions
• Assignment 2 Due
• Assignment 3 Released

Latest News

Tuesday, February 20, 2018

Sergio's Office Hours Moved to Friday

Effective today and for the remainder of the term, Sergio’s office hours will be held on Fridays from 5:30pm to 7:00pm.

Tuesday, February 6, 2018

Tomorrow's Lecture in Gates 104

Tomorrow’s lecture will be held in Gates 104 instead of the usual 160-124. We will be discussing memory allocators, FAT32, and the compilation and linking of binaries.

Wednesday, January 31, 2018

Updates to Assignment 1 Skeleton

The assignment 1 skeleton recently incurred breaking changes that likely impact your code. The following is a list of changes with explanations on how to handle them properly:

  • The Xmodem::read_byte() method signature in xmodem changed.

    The method now takes an abort_on_can parameter:

    /// Reads a single byte from the inner I/O stream. If `abort_on_can` is `true`,
    /// an error of `ConnectionAborted` is returned if the read byte is `CAN`.
    fn read_byte(&mut self, abort_on_can: bool) -> io::Result<u8>

    To handle this change, you will need to modify any calls to read_byte in your code. You should also read the updated docstrings for expect_byte and expect_byte_or_cancel and ensure that your code properly fulfills them.

  • A progress indication callback can be passed in to xmodem.

    The Xmodem structure has a new field, progress, that refers to a function that should be called by your read_packet and write_packet methods. The purpose of the new field is to allow clients of the xmodem library to be notified about the progress of a file transfer. The docstrings for these methods have been updated to reflect usage of the progress field.

    We’ve also amended the assignment text related to the ttywrite utility to suggest using the new progress functionality in your ttywrite implementation. The text includes an example of how to do so.

  • Added tests for xmodem corner-cases.

    New tests were added to the xmodem library that should help catch corner-cases and more errors. The aim is to make it more likely that your library is correct if it passes the tests.

  • Fixed parsing of -t, --timeout parameter in ttywrite.

    Due to structopt#30, the timeout command-line argument was being parsed incorrectly. This has been fixed in the latest updates as well as upstream in structopt#48. There is nothing you have to do as a result of this change.

After commiting your changes, run git pull in your assignment 1 skeleton repository to pull in these changes.

Tuesday, January 30, 2018

Tomorrow's Lecture: Rust Q&A Session

We’d like to revisit advanced or confusing Rust topics in tomorrow’s lecture.

A portion of tomorrow’s lecture will be dedicated to answering questions about Rust that you have. To this end, we’d like you to submit a text file containing questions that have popped up while you’ve been writing Rust. If you’re unsure about how something works, don’t know why something works, are confused about how to do something in Rust, or simply want to know more about a particular topic, please submit your questions!

To submit your questions, write them in a text file named rust-qa.txt and then upload the file on the submissions page. We’ll take the most popular or insightful questions and answer them in lecture tomorrow.

Please submit your questions file before noon on Wednesday, January 31.

Friday, December 15, 2017

Getting Ready for CS140e

We’re hard at work preparing for the first offering of CS140e! In the coming weeks, this site will be fleshed out to contain everything there is to know about CS140e. In the mean time, make sure you:

  1. Fill out the pre-registration survey to register.

    If you have already filled out the survey but haven’t received a response within a week, please email us!

  2. Sign up for CS140e on Piazza.

    We’ll be using Piazza for Q/A. Sign up before the class starts.

  3. Ensure your laptop is natively running Linux, BSD, or OS X.

    These are the only platforms we’ll support. If you don’t have a machine that runs Linux, we recommend installing Ubuntu LTS or Fedora on a secondary partition. Sorry, but we cannot make any exceptions for Windows-based machines.

  4. Learn about the Raspberry Pi Hardware.

    This one’s an extra! Get a head-start on learning about the platform you’ll be building on: the Raspberry Pi 3.


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


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


Ask on Piazza!

Staff List

Sergio Benitez

Dawson Engler

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)