Learning path
Operating systems
Study CPU scheduling, page replacement, deadlock avoidance, synchronization, and virtual memory through small simulations.
About this subject
An operating system manages the hardware for every program: it decides which process runs, hands out memory, and lets programs share resources without corrupting each other. Its main ideas are processes and threads, scheduling, memory management, synchronization, and files.
This path simulates the core algorithms: first-come first-served, shortest-job-first, and round-robin scheduling, page replacement policies, the banker's algorithm for deadlock avoidance, locks and the bounded buffer, and address translation. Each lesson uses a small, complete program that runs on its own. Python has the full sequence. The other languages listed below add lessons that use that language's own idioms and standard library, such as Java threads, C++ smart pointers, C# LINQ, or Node.js streams, and appear only for the topics the language supports. The programs are simplified models chosen to make an idea visible, so they are a foundation for further study rather than a replacement for a full course or for production-grade software.
Before you start: Programming fundamentals, lists and dictionaries, and basic data structures.
- 1
Python
Readable code for automation, data, and first programs.
CPU scheduling: FCFS and shortest job first
Compare average waiting time when the scheduler runs jobs in arrival order or by shortest burst.
Round-robin scheduling and the time quantum
Share the CPU fairly by running each job for at most one quantum, then rotating the queue.
Page replacement: FIFO, LRU, and optimal
Count page faults for three replacement policies and see Belady's anomaly with FIFO.
Deadlock avoidance with the banker's algorithm
Grant a resource request only if the resulting state is safe: every process can still finish.
Synchronization: locks and the bounded buffer
Protect shared data with a lock and coordinate a producer and consumer with a blocking queue.
Virtual memory: address translation with a page table
Split a virtual address into page number and offset and map it to a physical frame.
- 2
C
Learn memory, pointers, and efficient systems programming.
- 3
- 4
Java
Understand object oriented programs and the JVM.
- 5
- 6
JavaScript
Add behavior to the web and build applications.
- 7
TypeScript
JavaScript with static types for dependable code.