Rust is “a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.” System programming languages, like C, must to be able to exert fine grained control over system resources, run fast with small memory footprints; however, this makes easy for programmers to write code that causes run time errors. Rust is designed to produce code that runs as fast as C, but Rust’s syntax and semantics make it impossible to write code that would result in any form of run time memory error. As a second-generation systems language, Rust is able to work with modern CPU architectures to provide advanced features like low level, safe concurrency, and parallelism. Even though the syntax and semantics are similar to C++, Rust introduces a range of novel program language constructs – such as owning, borrowing and loaning memory – that can make it difficult for developers to transition to Rust from other more standard languages. This course is designed to help experience developers make the transition to Rust as seamless and painless as possible. Students are shown how to leverage their existing programming skills in learning Rust, but also emphasizes where they have to rethink how they code to take advantage of Rust innovative features . As students work through the features of Rust in an instructor led, hands on manner, the underlying concepts behind Rust and what is happening “under the hood” are explored so that students don’t only how to write Rust code but, even more importantly, what Rust code to write and why it should be written that way. By the end of the course, students will be able to write Rust code that is consistent with Rust best coding and design practices. The class is designed to be about 50% hands on labs and exercises, about 25% theory and 25% instructor led hands on learning where students code along with the instructor. Because the class will use the most recent version of Rust, some of the newer features of Rust that may be covered in class may not be listed in this outline.
Before taking this course, an intermediate level of skill in and a solid knowledge of a high level programming language like Java, Python or C is essential. Students who do not have this prerequisite may struggle with the content and pace of the course.
3 Days/Lecture & Lab
This course is designed for programmers who want to get up to speed fast in Rust.
- Why Rust? Design goals of Rust – fast, efficient and safe systems programming.
- The Cargo build system and LLVM back-ends.
- Zero-cost abstractions and the compilation cycle.
- Data types, variables, pointers, slices and references.
- Ownership, mutability, references and borrowing.
- Rust flow of control constructs.
- Rust functions and macros.
- Defining and using structs.
- Enums and pattern matching.
- Collections – vectors, strings and hash maps.
- Recoverable errors and unrecoverable panics.
- Generic data types and shared behavior with Traits.
- Concurrent programming
- Usafe Rust and integration with C and C++