*We customize the course outline and content to your specific needs and relevant use cases.
Module 1: Toolchain setup and project anatomy
- Install rustup, select toolchains, and manage targets
- Cargo commands, workspaces, features, and profiles
- Project layout with modules, crates, and visibility
- Building, testing, and documenting from the CLI
Module 2: Ownership thinking
- Moves, copies, and drops and why it matters for resources
- References and borrowing rules mutable, shared, and aliasing
- Lifetimes by example when the compiler needs hints
- Slices, strings, and UTF 8 safety in system code
Module 3: Core syntax and control
- Types, pattern matching, and expressions that return values
- Functions, generics, and trait bounds that read like contracts
- Error handling with Result and Option and propagating with ?
- Panic policies unwind vs abort and choosing per binary
Module 4: Data modeling for low level work
- Structs for layout and invariants newtype and builder styles
- Enums for state machines and fallible operations
- Pattern matching for state transitions
- Minimal CLI program with structured errors
Module 5: Memory management without a GC
- Stack vs heap in practice
- Box, Rc, Arc and when each fits
- Raw pointers, references, and alignment basics
- Unsafe blocks as narrow, well documented islands
Module 6: System IO and resources
- Reading and writing files with std and buffered IO
- Working with paths, processes, and environment
- Time, timers, and dealing with OS errors
- RAII patterns to manage handles and cleanup
Module 7: Concurrency and synchronization
- Threads and message passing with channels
- Shared state with Mutex, RwLock, and Condvar
- Send and Sync marker traits and what they imply
- Guidelines for avoiding deadlocks and priority inversions
Module 8: Interfacing with C
- FFI building blocks repr, extern blocks, and linking
- Passing strings, slices, and ownership across the boundary
- Wrapping unsafe pointers with safe abstractions
- Header first workflow bindgen and manual bindings
Module 9: Debugging and troubleshooting
- Readable errors, backtraces, and logging with env filters
- Using cargo tools for test, fmt, clippy, and audit
- Debugging sessions with lldb or gdb basics
- Common pitfalls borrow checker, lifetimes, and trait bounds
Module 10: Performance and allocation awareness
- Measuring with cargo bench and simple timers
- Understanding inlining, monomorphization, and trait objects
- Minimizing allocations and copies small vector and cow patterns
- File and network IO strategies blocking vs async at a glance
Module 11: Building a small systems service
- Designing a minimal daemon or CLI subcommand style
- Configuration, arguments, and feature flags
- Graceful shutdown and signal handling
- Error taxonomy for stable operations
Module 12: Packaging and next steps
- Release profiles and symbol choices
- Cross compilation targets and musl builds
- Organizing a safe unsafe boundary checklist
- Pathways to async, embedded, and advanced interop