Grading and Policies

Mon, Jan 1, 0001

Honor Code Please respect the spirit and the letter of Stanford’s honor code. You’re welcome to talk to classmates about assignments conceptually, but the implementation must be your own unless otherwise noted. For example, speaking with a classmate about why some bug might be present in your program is okay as long as your classmate doesn’t share with you a program that fixes your bug. You should not use any existing code that we don’t supply, whether it is online or otherwise.

Submission and Grades

Wed, Jan 10, 2018

Upload To upload your assignment, simply select the file below and click upload. Ensure that the file you are uploading is named as required or was generated by calling make submission. You can continue uploading submissions past their deadline but penalties will be incurred according to the late policy. We will use your latest submission during grading. Please note that you must be signed in with your SUNetID to upload your submission.

Assignment 0: Blinky

Mon, Jan 8, 2018

Preface Welcome to CS140e! We’re really excited that you’ve decided to join us for this inaugural incarnation. We hope you have as much fun taking this class as we’ve had developing it! And, of course, we hope you learn a ton. We’re hoping to do things a little differently in CS140e than the norm. In particular, we want you to write the majority of the code, and we want your code to execute on real hardware, doing real things.

Assignment 1: Shell

Wed, Jan 17, 2018

Overview In this assignment, you will sharpen your Rust skills by fixing Rust programs, writing useful utilities and libraries, and writing a simple shell for your Raspberry Pi. You’ll also write generic drivers for GPIO, UART, and the built-in timer. Finally, you’ll write a “bootloader” using your new drivers that loads program binaries over UART using the XMODEM protocol and executes them. Before starting assignment 1, we strongly recommend that you complete the required course readings:

Assignment 2: File System

Mon, Feb 12, 2018

Overview In this assignment, you will enable the use of Rust’s collections module (Vec, String, HashMap, and friends) by writing a memory allocator, implement the FAT32 file system, implement a Rust interface for a driver for the Raspberry Pi’s EMMC (SD card controller), and extend your shell with cd, ls, pwd, and cat, commands. Phase 0: Getting Started As with previous assignments, ensure that you are using a compatible machine:

Assignment 3: Spawn

Sat, Mar 10, 2018

Overview In this assignment, you will enable user-level applications by implementing processes and related infrastructure. You will write privilege level switching code, context-switching code, a simple round-robin scheduler, system call handlers, and a virtual memory subsystem. You will also port your shell to user space and extend your shell so that it can spawn new processes. Assignment 3 is on Hiatus At present, phases 0, 1, and 2 are available.

Final Exam

Sat, Mar 10, 2018

Overview Welcome to the last assignment: the final exam! 🎉 In the beginning of the term, we noted that we wanted to do things a bit differently in CS140e. The final exam is no exception. Instead of the traditional 2 to 3 hour sit-down, on-paper exam, you’ll be writing a 5 - 7 page course summary. The summary should consolidate all of the material you’ve learned in CS140e including everything we’ve taught in lecture and assignments.