CS140e (Winter 2018)

An Experimental Course on Operating Systems


This is an archived copy of CS140e.

You are viewing an archived version of Stanford’s CS140e Winter 2018 course.

Questions? Comments? Shoot me an email!


Upcoming Schedule (See Full Schedule)


Week Monday Wednesday
Mar 19 Assignment 3 Due Final Exam Due

News


Monday, March 26, 2018

Assignment 3 Grades Posted

Grades for assignment 3 are now available. You can view your grade in the submission and grades page. You must be signed in with your SUNet ID to access the page. You may need to clear your browser’s cache for the page to successfully update.

The graph below shows aggregate statistics for assignment 3 grades.

Assignment 3 Grade Aggregates


Saturday, March 24, 2018

Assignment 2 Grades Posted

Grades for assignment 2 are now available. You can view your grade in the submission and grades page. You must be signed in with your SUNet ID to access the page. You may need to clear your browser’s cache for the page to successfully update.

The graph below shows aggregate statistics for assignment 2 grades.

Assignment 2 Grade Aggregates


Friday, March 2, 2018

Assignment 1 Grades Posted

Grades for assignment 1 are now available. You can view your grade in the submission and grades page. You must be signed in with your SUNet ID to access the page. You may need to clear your browser’s cache for the page to successfully update.

The graph below shows aggregate statistics for assignment 1 grades.

Assignment 1 Grade Aggregates


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.