The Repository contains the learning materials of the Safety in Systems Programming course by Ryan Eberhardt and Armin Namavari.
This course is focused on safety and robustness in systems programming:
- Where do things often go wrong in computer systems?
- How can we avoid common pitfalls?
- Use the Rust programming language as a vehicle to teach mental models and paradigms that have been shown to be helpful in preventing errors
- How these features have made their way back into C++.
This project will give us practice with multiprocessing in Rust, and will give us a better sense of how processes are managed by the operating system as well as how ptrace can be used to circumvent process boundaries.
Features:
- run, stop, continue, kill the traced process
- print a stack trace for a paused program
- set the breakpoints
Implementation: Here
This project will give us practice with multithreading, asynchronous programming, and performance optimization by building a load balancer using tokio runtime.
Features:
- Random load balancing
- Failover with passive health checks
- Failover with active health checks
- Fixed Window Rate Limiting
Implementation: Here