IMPORTANT: This course fulfills the CS3214: Computer Systems requirements in the checksheet.
To enroll in this class for Fall 2024, please submit a Force/Add request with your academic advisor. Visit this page to review Force/Add procedures. Force/Add requests for Fall 2024 will be accepted starting August 12th at 12:00pm.
Note: This course is experimental. Information on this page is subject to change as course material is updated or finalized.
Background
Computer systems education has been historically taught in the C programming language, including at Virginia Tech. In recent years, Rust has gained popularity as a modern, high-level systems programming language that allows safe and performant code. The ownership and borrow checking rules that Rust enforces allow automatic memory management without the need for garbage collection, while maintaining memory and thread safety. In contrast with C, in which it is trivial to accidentally introduce memory unsafety, Rust allows building safe, zero overhead abstractions through a strong type system.
Therefore, there is a need to consider the use of Rust as the primary language of instruction in computer systems education. A language that is memory safe by default can promote security in computer systems from the ground up. The Rust standard library is featureful, allowing more focus on applying systems concepts rather than reinventing low level memory manipulation routines.
This experimental course will teach computer systems principles using Rust as its vehicle of execution. Students will engage in projects that are not identical, but analogous to projects currently done in CS3214.