1. Introduction
  2. Lab 01: Unsafe system programming
    1. Development setup
    2. Memory unsafety
    3. Smashing the stack
  3. Lab 02: Hardening system programming
    1. Unit testing
    2. Stack overflow detection
    3. Memory leak detection
  4. Lab 03: Rust and references
    1. Your first Rust program
    2. Using a Rust tutorial
    3. References
    4. Lifetimes
    5. Lifetimes: a complex case
  5. Lab 04: Error handling
    1. Web page retrieval
    2. Name identification
    3. Sets intersection
    4. File system
    5. Easier errors
    6. Prettier messages
    7. Even prettier messages
  6. Lab 05: Complex data structures
    1. Recursive data structures
    2. Solving common tasks with traits
    3. Refactoring with iterators
    4. Going generic
  7. Lab 06: Packaging, testing, and fuzzing
    1. Packaging
    2. Testing
    3. Property testing
    4. Fuzzing
  8. Lab 07: Unsafe, FFI, procedural macros
    1. FFI: Foreign library setup
    2. FFI: Low-level bindings
    3. FFI: Testing the bindings
    4. FFI: High-level bindings
    5. Macros: Setup
    6. Macros: English-to-French
    7. Macros: Chaining computations
    8. Macros: Secure token
  9. Lab 08: Parallelism
    1. Counting characters
    2. Getting big
    3. Parallel computing
    4. Benchmarking
    5. If you have more time
  10. Lab 09: Asynchronous programming
    1. An asynchronous client
    2. An asynchronous server