UC Berkeley CS162: Operating Systems and Systems Programming

Berkeley's comprehensive operating systems course, covering both theory and practical systems programming.

About This Course

CS162 is UC Berkeley's undergraduate operating systems course, taught by John Kubiatowicz and others. It covers the fundamental concepts behind OS design: processes, threads, memory management, file systems, I/O, and distributed systems.

The course includes substantial programming projects (Pintos OS) that give students hands-on experience building OS components.

What You Will Learn

  • Processes and Threads: Process creation, threading models, context switching
  • Synchronization: Locks, semaphores, monitors, condition variables, deadlock
  • CPU Scheduling: FCFS, SJF, priority, round-robin, multi-level feedback queues
  • Memory Management: Paging, segmentation, TLBs, page replacement algorithms
  • I/O and Storage: Device drivers, disk scheduling, RAID, SSDs
  • File Systems: FAT, FFS, journaling, log-structured file systems
  • Networking and Distributed Systems: Sockets, RPC, distributed consensus
  • Protection and Security: Access control, capabilities, sandboxing

Prerequisites

Data structures (CS61B), computer architecture (CS61C), and strong C programming skills.

Course content belongs to UC Berkeley.