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!
|• Assignment 3 Due
|• Final Exam Due
Monday, March 26, 2018
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.
Saturday, March 24, 2018
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.
Friday, March 2, 2018
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.
Tuesday, February 20, 2018
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 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
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:
Xmodem::read_byte() method signature in
The method now takes an
/// 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
your code. You should also read the updated docstrings for
expect_byte_or_cancel and ensure that your code properly fulfills them.
A progress indication callback can be passed in to
Xmodem structure has a new field,
progress, that refers to a
function that should be called by your
methods. The purpose of the new field is to allow clients of the
library to be notified about the progress of a file transfer. The
docstrings for these methods have been updated to reflect usage of the
We’ve also amended the assignment text related to the
ttywrite utility to
suggest using the new progress functionality in your
implementation. The text includes an example of how to do so.
Added tests for
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
--timeout parameter in
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
After commiting your changes, run
git pull in your assignment 1 skeleton
repository to pull in these changes.
Tuesday, January 30, 2018
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
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:
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!
We’ll be using Piazza for Q/A. Sign up before the class starts.
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.
This one’s an extra! Get a head-start on learning about the platform you’ll be building on: the Raspberry Pi 3.