update: May 15 2025 I am still working on this program, just with fewer hours than initially planned. My current place of employment may be going under so I'm dumping my free time into job hunting.
Side notes before we start:
- These blog posts serve three purposes, to keep me accountable, as evidence of my learning, and as an opportunity for me to improve my writing.
- I'm currently learning mdx. The schedule charts are formatted to work with the github extended markdown spec, but they don't format correctly here. To view it in it's intended form look at my os-net-study repo's README.md
I missed full Operating Systems and Computer Networking courses during my physics undergrad, so I’m fixing that with a 10‑hour‑per‑week self‑study sprint starting May 5, 2025. Everything lives in public:
- Repo: Isaac0099/os‑net‑study‑2025
- Notion board: progress, Kanban, and weekly reflections
Feel free to clone the template or just steal the outline below.
Learning objectives
- Operating Systems — Understand processes, threads, virtual memory, file systems, scheduling, and concurrency primitives well enough to implement small kernels.
- Networking — Be able to reason about the full TCP/IP stack, write socket code without StackOverflow, and debug packet‑level issues with Wireshark.
Outcome checkpoint: rebuild a simplified wget
clone that works over raw TCP and concurrently downloads chunks.
Core resources
| Topic | Primary Text | Supplement | Why this pick | |-------|--------------|-----------|---------------| | OS | Operating Systems: Three Easy Pieces (OSTEP) | MIT 6.S081 labs | Free, lab‑first, huge community | | Networking | Computer Networking: A Top‑Down Approach (7e) | Stanford CS144 lectures | Application‑first, updated TLS/QUIC coverage |
Both books are available legally for free or low‑cost. Each chapter is paired with hands‑on labs to avoid “PDF‑absorbing” syndrome.
Detailed weekly schedule (10 h / week)
| Week (Mon) | OSTEP reading & review | MIT 6.S081 lab work | CN:TD reading | CS144 / video | Goal / deliverable |
|------------|-----------------------|---------------------|---------------|---------------|---------------------|
| May 05 | Ch. 0‑1: The abstractions | Lab utilities setup | Ch. 1: Introduction | Intro lecture | Dev‑container boots; README first log |
| May 12 | Ch. 2‑3: Processes | Lab: xv6
warm‑up | Ch. 2: Application‑layer | HTTP overview | Echo server in Node │
| May 19 | Ch. 4‑6: Threads & context switch | Lab: fork
/exec
| Ch. 3: Transport‑layer | TCP handshake deep dive | Checkpoint #1 deadline |
| May 26 | Ch. 7‑8: Scheduling | Lab: scheduler | Ch. 3 cont. (TCP congestion) | TCP lab | Basic congestion demo |
| Jun 02 | Ch. 9‑10: Synchronization | Lab: locks | Ch. 4: Network‑layer | IP addressing lecture | Socket echo server works |
| Jun 09 | Ch. 11‑12: Deadlocks | Lab: thread safety | Ch. 4 cont. (routing) | IP lab | Routing table quiz passes |
| Jun 16 | Ch. 13‑15: Memory intro & allocation | Lab: heap | Ch. 5: Link‑layer, ARP | Ethernet frame walk‑through | Mid‑project review blog post |
| Jun 23 | Ch. 16‑18: Virtual memory, paging | Lab: page tables | Ch. 6: Wireless & LANs | Wi‑Fi lecture | Page‑fault visualizer demo |
| Jun 30 | Ch. 19‑20: File systems intro | Lab: file system calls | Ch. 7: Transport security | TLS handshake lab | TLS notes pushed |
| Jul 07 | Ch. 21‑22: Journaling & crash recovery | Lab: journaling | Ch. 8: Network security | QUIC lecture | All OS labs green |
| Jul 14 | Ch. 23‑24: I/O devices | Lab: device driver stub | Ch. 9: Content delivery | CDN lecture | “What I learned about page tables” post |
| Jul 21 | Review week; mock exam problems | Lab fixes & refactor | Review week | CS144 problem set | Test suite 90 %+ pass |
| Jul 28 | Capstone: small kernel mods | Integrate prev labs | Build wget project skeleton | Parallel chunk download lecture | wget-lite
alpha |
| Aug 04 | Buffer week & demo day prep | Final polish & docs | Network project polish | CS144 final Q&A | wget-lite
release & demo |
Why 10 hours works
- Small daily bites prevent weekend burnout.
- Clear weekly deliverables keep the dopamine loop tight.
- Two review weeks absorb slip without derailing the timeline.
Checkpoints & stakes
| Date | Milestone | Consequence for slipping > 7 days |
|------|-----------|-----------------------------------|
| May 19 | OS ch. 0‑8 complete, first three labs pass CI | Donate $20 to EFF |
| Jun 16 | Mid‑sprint blog post live | Publish slip note on Twitter |
| Jul 14 | All OS labs green | Buy coworkers donuts |
| Aug 04 | Networking final project demo | Repeat an extra week of labs |
Tooling setup
- macOS brew:
brew install git gcc qemu wireshark
risc‑v‑tools
isn’t on brew; using the toolchain bundled with 6.S081. - VS Code devcontainers — reproducible Linux env for labs.
- GitHub Actions — runs unit tests plus
qemu-make test
on every push.
Feedback & accountability
I’ll post short week‑notes in the repo and cross‑link on the blog. PR reviews welcome—especially if you’re ahead of me in OSTEP.
What’s next
After this sprint I’ll tackle:
- Compilers — Crafting Interpreters + LLVM toy language.
- Distributed Systems — MIT 6.5840 labs.
- Machine Learning Specialization — the deeplearning.ai course.
But one rabbit hole at a time.