Published using Google Docs
CS 410/510 Top: Rust Programming
Updated automatically every 5 minutes

CS 410/510 Top: Rust Programming

Credit Hours:

4/3

Course Coordinator:

Bart Massey

Course Description:

In this course, we will learn to program in Rust. Rust is a novel programming language combining solid bare-metal performance with modern language features that give acceptable usability and encourage high-quality code.

The languages of choice for systems programming for the past 30 years have been C and its larger cousin C++. Because of their popularity and performance, C and C++ have also been a common choice for application programming. However, these languages are well-understood to be both error-prone, inconveniently verbose and repetitive, and difficult to use for large-scale software engineering.

Rust is an attempt to remedy many of the deficiencies of C and C++. Rust provides a modern strong static type system, a strong module system supporting separate module compilation, and a static programmer- transparent memory allocation scheme that largely eliminates runtime memory errors.

Prerequisites:

CS 201, CS 202. Familiarity with programming in general and C/C++ in particular is required. Basic ability to use the Linux environment is required.

Goals:

Upon the successful completion of this course students will be able to

  1. Create a Rust project, including proper Cargo configuration.
  2. Translate a design into a working Rust program.
  3. Explain and remedy type and lifetime errors encountered during Rust programming.
  4. Construct reasonable types within programs, including parametric and lifetime-bounded types.
  5. Use structs, enums and traits as intended in the construction of Rust programs.
  6. Apply references, boxes, cells and reference counting in Rust programming.
  7. Divide a Rust crate into multiple source files using the module system.
  8. Write tests and documentation using the Rust infrastructure.
  9. Write a Rust package (crate) that integrates smoothly into the Rust ecosystem.

Textbooks:

Programming Rust: Fast, Safe Systems Development (2nd ed)

Jim Blandy and Jason Orendorff

O’Reilly 2021

Major Topics:

Laboratory Exercises:

Many homeworks that require Rust programming, plus a project.

Oral and Written Communications:

Writeups of work. A brief project presentation.

Social and Ethical Issues:

N/A

Theoretical Content:

Some programming language design and analysis.

Problem Analysis:

Adapt requirements toward a Rust-ready design.

Solution Design:

Design high-quality Rust code that naturally leverages the strengths of the language.

CAC Category Credits

Core

Advanced

Data Structures

0.25

Algorithms

Software Design

0.5

0.5

Computer Architecture

Programming Languages

0.5