Lecture 1 - Introduction to Computer Systems
Lecture 2 - Principles of Computer Systems Design
Lecture 3 - Overview of CPU hardware
Lecture 4 - Overview of memory and I/O hardware
Lecture 5 - Introduction to Operating Systems
Lecture 6 - Week 1: Tutorial 1
Lecture 7 - Week 1: Tutorial 2
Lecture 8 - Processes
Lecture 9 - Kernel mode execution
Lecture 10 - Threads
Lecture 11 - CPU scheduling policies
Lecture 12 - Virtual machines and containers
Lecture 13 - Week 2: Tutorial 1
Lecture 14 - Week 2: Tutorial 2
Lecture 15 - Week 2: Tutorial 3
Lecture 16 - Memory management in OS
Lecture 17 - Paging
Lecture 18 - Demand paging
Lecture 19 - File system and memory
Lecture 20 - Optimizing memory access
Lecture 21 - Week 3: Tutorial 1
Lecture 22 - Week 3: Tutorial 2
Lecture 23 - Week 3: Tutorial 3
Lecture 24 - Filesystem Datastructures
Lecture 25 - Filesystem Implementation
Lecture 26 - Network I/O via Sockets
Lecture 27 - Network I/O Implementation
Lecture 28 - Memory and I/O virtualization
Lecture 29 - Week 4: Tutorial 1
Lecture 30 - Week 4: Tutorial 2
Lecture 31 - Introduction to computer networking
Lecture 32 - Internet Routing and Forwarding
Lecture 33 - Transport protocols
Lecture 34 - Application layer protocols
Lecture 35 - Network Security
Lecture 36 - Week 5: Tutorial 1
Lecture 37 - Week 5: Tutorial 2
Lecture 38 - Multithreaded application design
Lecture 39 - Inter-process communication
Lecture 40 - Multi-tier application design
Lecture 41 - Examples of end-to-end systems design
Lecture 42 - Deployment of computer systems
Lecture 43 - Week 6: Tutorial 1
Lecture 44 - Week 6: Tutorial 2
Lecture 45 - Performance measurement
Lecture 46 - Performance analysis
Lecture 47 - Performance profiling and optimization
Lecture 48 - Caching
Lecture 49 - Performance scalability
Lecture 50 - Week 7: Tutorial 1
Lecture 51 - Fault tolerance and reliability
Lecture 52 - Replication and consistency
Lecture 53 - Atomicity
Lecture 54 - Distributed transactions
Lecture 55 - Case studies of distributed systems design