CS206

Computer Systems: A Programmer’s Perspective

How programs really run on hardware: number representation and overflow, pointers, and the stack and heap — the CSAPP view every serious programmer needs.

9 modules · 45 lessons · Practice after every lesson

Syllabus

  1. Module 1

    C and the Machine Model

    • Compiling and Running C Programs
    • Scalar Types and Machine Widths
    • Operators and Undefined Behavior
    • Control Flow at Low Level
    • The Preprocessor and Translation Units
  2. Module 2

    Pointers and Memory

    • Addresses, Pointers, and Dereferencing
    • Arrays and Pointer Arithmetic
    • Strings and Byte Sequences
    • Structures, Unions, and Alignment
    • Const Correctness and Aliasing
  3. Module 3

    Stack, Heap, and Object Lifetime

    • Stack Frames and Automatic Storage
    • Dynamic Allocation and the Heap
    • Lifetime, Scope, and Ownership
    • Memory Leaks and Use-After-Free
    • Memory Debugging Tools
  4. Module 4

    Machine-Level Programs

    • Reading Compiler-Generated Assembly
    • Registers and Calling Conventions
    • Condition Codes and Control Flow
    • Procedure Calls and Recursion
    • Data Layout in Assembly
  5. Module 5

    Linking and Loading

    • Symbols and Relocatable Object Files
    • Static Linking
    • Dynamic Linking and Shared Libraries
    • Loading and Address-Space Layout
    • Linker Errors and Symbol Interposition
  6. Module 6

    Exceptional Control Flow

    • Exceptions and Interrupts
    • Processes and Context Switching
    • Process Creation and Program Replacement
    • Signals and Asynchronous Events
    • Nonlocal Jumps and Cleanup Hazards
  7. Module 7

    System-Level I/O

    • File Descriptors and Unix I/O
    • Buffered and Unbuffered I/O
    • Directory and File Metadata
    • Pipes and Interprocess Communication
    • Robust I/O and Partial Operations
  8. Module 8

    Memory Hierarchy and Performance

    • Cache Organization from a Programmer’s View
    • Locality in Loops and Data Layout
    • Cache-Friendly Matrix Access
    • Performance Measurement and Profiling
    • Optimization Without Breaking Correctness
  9. Module 9

    Concurrency and Network Programming

    • Threads and Shared Memory
    • Synchronization Hazards
    • Sockets and Client–Server Structure
    • Concurrent Servers
    • Security Failures at the Systems Boundary

Start Computer Systems: A Programmer’s Perspective.

No setup, nothing to install. Try the first lessons before you sign up.