Resources
Course materials and helpful links
Course Materials
Textbook
Operating Systems: Three Easy Pieces
by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Free online textbook covering all major operating system concepts with clear explanations and practical examples.
Development Environment
Pre-configured Ubuntu virtual machine with all necessary tools and libraries for course assignments.
Course Code Repository
Complete source code for all course materials, including: - Lecture examples and demonstrations - Lab exercises and solutions - Assignment starter code - Useful utilities and tools
Local Code Examples
Local directory containing all code used in lectures and labs: - Process API examples (fork, exec, wait) - CPU scheduling simulations - Memory management programs - Threading and synchronization examples - I/O and file system utilities
Video Lectures
Complete Course Playlist
All 35+ lectures covering the complete operating systems curriculum.
Supplementary Videos
- Linux Memory Management - Deep dive into Linux memory subsystem
- Chrome Process Model - Understanding multi-process architecture
Additional Reading
Classic Papers
- The Unix Time-Sharing System - Ritchie & Thompson
- The Design of the UNIX Operating System - Maurice Bach
- Modern Operating Systems - Andrew Tanenbaum
Online Resources
- OSDev Wiki - Comprehensive OS development resource
- Linux Kernel Documentation - Official Linux kernel docs
- xv6 Operating System - Simple Unix-like teaching OS
Programming Resources
C Programming
- The C Programming Language - K&R
- C Reference - Complete C language reference
- GDB Tutorial - Debugging with GDB
System Programming
- Advanced Programming in the UNIX Environment - Stevens & Rago
- Linux System Programming - Robert Love
- The Linux Programming Interface - Michael Kerrisk
Tools and Utilities
Development Tools
- GCC: GNU Compiler Collection
- GDB: GNU Debugger
- Valgrind: Memory debugging and profiling
- Make: Build automation tool
System Monitoring
- htop: Interactive process viewer
- strace: System call tracer
- perf: Performance analysis tool
- top: System resource monitor
Virtualization
- VirtualBox: Desktop virtualization
- QEMU: Machine emulator and virtualizer
- Docker: Container platform
Project Ideas
Open Source Projects
Practice Platforms
- LeetCode System Design - Concurrency problems
- HackerRank - Algorithm practice
- Codeforces - Competitive programming
Community and Support
Forums and Communities
- Stack Overflow - Programming Q&A
- Reddit r/AskComputerScience - Academic discussions
- Unix Stack Exchange - Unix/Linux specific questions
Course Support
- Office Hours: Weekly sessions with instructor and TAs
- Discussion Forum: Course-specific Q&A platform
- Email Support: Direct contact with teaching staff
- Read the textbook chapters before lectures
- Practice coding regularly, not just before assignments
- Join study groups and discuss concepts with peers
- Use multiple resources to understand difficult topics