Skip to content

Safety and Robustness in Systems Programming by Stanford University. Use the Rust programming language as a vehicle to teach mental models and paradigms that have been shown to be helpful in preventing errors

License

Notifications You must be signed in to change notification settings

timyiu478/Safety-in-Systems-Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Safety in Systems Programming

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++.

Projects

1. Simple Debugger

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:

  1. run, stop, continue, kill the traced process
  2. print a stack trace for a paused program
  3. set the breakpoints

Implementation: Here

2. Load Balancer

This project will give us practice with multithreading, asynchronous programming, and performance optimization by building a load balancer using tokio runtime.

Features:

  1. Random load balancing
  2. Failover with passive health checks
  3. Failover with active health checks
  4. Fixed Window Rate Limiting

Implementation: Here


Programming Assigments

  1. Hangman Game
  2. File Diff Tool
  3. File Descriptor Inspector
  4. Generic Linked List
  5. Farm meets multithreading
  6. Parallel Map

About

Safety and Robustness in Systems Programming by Stanford University. Use the Rust programming language as a vehicle to teach mental models and paradigms that have been shown to be helpful in preventing errors

Topics

Resources

License

Stars

Watchers

Forks

Languages