CMU 15-213: Introduction to Computer Systems
Contents · 42
- 01-OverviewIntroduces computer systems concepts, including machine arithmetic, assembly, memory behavior, bugs, and performance, alongside course goals, integrity, and policies.
01-OverviewIntroduces CMU’s computer systems course, its goals, practical value, and role as a foundation for advanced systems topics. Discusses how understanding hardware and software beneath programming abstractions helps diagnose problems and build reliable, secure systems.
- 02-Bits, Bytes, and IntegersCovers binary and hexadecimal representation, bitwise and logical operations, shifts, integer representations and arithmetic, conversions, and byte ordering.Covers binary and hexadecimal representation, bitwise operations, shifts, integer representations and arithmetic, conversions, and byte ordering.
02-Bits, Bytes, and IntegersCourse logistics, Lab Zero expectations, and an introduction to bits, binary representation, and why computers use binary.
- 03-Machine Programming (Part I)Introduces x86-64 registers, operands, data movement, and assembly syntax, then traces how assembly implements a C pointer swap.
03-Machine Programming (Part I)Introduces Intel x86 architecture, CISC design and backward compatibility, and processor history and performance evolution.
- 04-Machine Programming (Part II)Covers x86-64 assembly basics, addressing modes and LEA, then loops, switch statements, and procedures.
04-Machine Programming (Part II)Machine-level control flow, including condition codes, conditional branches, loops, and how C switch statements are implemented.
- 05-Machine Programming (Part III)Explains x86-64 procedure calls, argument and return-value conventions, stack frames, and arrays and structures.
05-Machine Programming (Part III)Explains x86-64 procedure calls, including the stack, calling conventions, control flow, argument and return values, local data, and recursion.
- 06-Machine Programming (Part IV)Covers structure layout and alignment, arrays of structures, process memory layout, buffer overflow vulnerabilities and defenses, and unions.
06-Machine Programming (Part IV)C arrays, pointer arithmetic and memory layout, with examples of indexing multi-dimensional data and passing array arguments to functions.
- 07-LinkingExplains why linkers are used, how symbol resolution and relocation combine object files, and the ELF format and its sections.
07-LinkingCovers symbol resolution, object files, separate compilation, libraries, and static and dynamic linking in C.
- 08-Design and DebuggingDebugging defects through hypotheses, experiments, diagnosis, and validation, alongside design principles for managing complexity and communicating code intent.
- 09-The Memory HierarchyExplains RAM technologies, CPU-memory performance gaps, temporal and spatial locality, and how memory hierarchies help bridge them.
09-The Memory HierarchyCovers the midterm and final exam logistics, RAM and ROM technologies, DRAM and SRAM trade-offs, DDR memory, and the basics of memory hierarchy and locality.
- 10-Cache MemoriesCache organization and operation, cache misses and associativity, and how locality and loop transformations affect memory performance.
10-Cache MemoriesCache memory organization, locality, the memory hierarchy, cache hits and misses, miss types, and placement and replacement policies.
- 11-Virtual Memory: ConceptsExplains processes, virtual and physical address spaces, address translation, and page tables, including VM’s role in memory management, sharing, loading, and isolation.
11-Virtual Memory: ConceptsIntroduces virtual memory, explaining how it provides large, independent address spaces for processes while using physical memory for caching, isolation, and protection.
- 12-Virtual Memory: DetailsExplains page faults and multi-level page tables, then examines simple and Intel Core i7 virtual memory systems, swapping, memory-mapped files, and copy-on-write.
12-Virtual Memory: DetailsVirtual memory, hierarchical page tables, TLB caching and associativity, and translating virtual addresses to physical memory and data-cache blocks.
- 13-Dynamic Memory Allocation: BasicIntroduces heap allocation, malloc/free behavior, allocator constraints, and performance measures including throughput, payload, and memory overhead.
13-Dynamic Memory Allocation: BasicDynamic memory allocation in C, including heap management, malloc and free, calloc and realloc, alignment, allocation failures, and the brk system call.
- 14-Dynamic Memory Allocation: AdvancedExplains explicit and segregated free lists, allocation and coalescing policies, and memory-related pitfalls.
14-Dynamic Memory Allocation: AdvancedExplicit free lists link available heap blocks with doubly linked pointers, covering allocation, block splitting, and how free-list allocation improves on implicit-list searches.
- 15-Code OptimizationCompiler optimization goals, constraints, and techniques including constant folding, dead-code elimination, common subexpression elimination, code motion, and inlining.
15-Code OptimizationCompiler optimizations such as loop-invariant code motion, strength reduction, and common subexpression elimination, plus factors that limit optimization and instruction-level parallelism.
- 16-Processes and MultitaskingExplains processes, virtual memory, control flow, context switching, and concurrency across single- and multicore systems. Covers system calls, process control, and shells.
16-Processes and MultitaskingExceptional control flow, including interrupts, context switching, signals, and C exception-like mechanisms.Exceptional control flow, including interrupts, context switching, signals, and C exception-like mechanisms.
- 17-Exceptional Control FlowExplains exceptional control flow, hardware exceptions, interrupts, traps, faults, aborts, and system calls.
17-Exceptional Control FlowProcess creation with fork, child termination and reaping, zombie processes, and inspecting background processes with ps.
- 18-System Level I/O and File SystemsUnix and standard I/O, file types and metadata, file access and positioning, and choosing I/O methods.
18-System Level I/O and File SystemsUnix and Linux low-level I/O, file descriptors and file positioning, redirection, standard I/O, and the course’s Rio library.
19-File Systems and Network Programming (Part I)Introduces client-server networking, network I/O through Unix-style file APIs, hosts and communication systems, LANs and WANs, and the Internet as a network of networks.
20-Network Programming (Part II)Explains IPv4 and IPv6 address lookup, DNS load balancing, and the client-server connection lifecycle using getaddrinfo.
21-Concurrent ProgrammingIntroduces concurrency hazards, including race conditions and deadlock, and explains how locks protect shared resources and why printf can be unsafe in signal handlers.
22-Synchronization: BasicIntroduces thread synchronization and shared memory, explaining thread state, stacks, and how pointers let threads access one another’s data.
23-Synchronization: AdvancedExplains semaphores for mutual exclusion and coordinating producer and consumer threads with a shared buffer.
24-Thread-Level ParallelismIntroduces thread-level parallelism, multicore and hyperthreaded processors, memory consistency models, and multithreaded programming for performance.
25-Frontiers of ComputingMoore’s Law, the economics and technology of chip manufacturing, and trends in transistor density that shape future computing hardware.