Videos

A number of videos on the course content are available thanks to Luis Ceze and Gaetano Borriello (and previous 351 TAs Katelin Bailey and Rachel Sobel), from an online version of this course. Viewing these videos is generally optional. They may be useful for reviewing lecture content or use of important tools for lab. We may occasionally assign some videos to supplement topics which we may cover only briefly in lecture.

Quizzes are not part of your course grade, but are a good way to self-check your understanding of content in the videos.

Tools, etc.

  1. Intro to the C programming language
  2. Intro to GDB (especially useful for lab 2)
  3. Buffer overflows (especially useful for lab 3)

Lecture Content

1. Memory, Data, and Addressing

  1. Hardware Preliminaries
  2. Memory Organization
  3. Memory Addresses
  4. Data and Memory in C
  5. Arrays
  6. Boolean Algebra and Bitwise Operations

2. Number Representation

  1. Encoding (quiz)
  2. Integers (quiz)
  3. Integers in C (quiz)
  4. Shifting (quiz)
  5. Fractions (quiz)
  6. IEEE Floating Point (quiz)
  7. Floating Point Operations (quiz)
  8. Floats in C (quiz)

3. Basic Machine Programming

  1. ISA (quiz)
  2. Architecture (quiz)

4. x86 Programming

  1. mov, swap (quiz)
  2. x86-64 (quiz)
  3. Address Computation (quiz)
  4. Condition Codes (quiz)
  5. Conditional Jumps (quiz)
  6. Loops (quiz)
  7. Switch (quiz)

5. Procedures and Stacks

  1. Stacks (quiz)
  2. Procedure Call and Return (quiz)
  3. Stack-Based Languages (quiz)
  4. Linux Stack Frame, Passing Arguments (quiz)
  5. Register-Saving Conventions, Local Variables (quiz)
  6. x86-64 Calling Conventions (quiz)

6. Data Structures

  1. Arrays (quiz)
  2. Multidimensional or Nested Arrays (quiz)
  3. Multi-Level Arrays (quiz)
  4. Structs (quiz)
  5. Data Structures and Memory Alignment (quiz)
  6. Buffer overflows (quiz)

7. Memory and Caches

  1. Cache Basics (quiz)
  2. Locality (quiz)
  3. Memory Hierarchies (quiz)
  4. Cache Organization 1 (quiz)
  5. Cache Organization 2 (quiz)
  6. Cache-Aware Optimizations (quiz)

8. Exceptional Control Flow and Processes

  1. Exceptional Control Flow (quiz)
  2. Processes (quiz)
  3. Process Creation (quiz)
  4. Process Management (quiz)

9. Virtual Memory

  1. Virtual Memory Overview (quiz)
  2. Indirection (quiz)
  3. Virtual Memory for Caching (quiz)
  4. Address Translation (quiz)
  5. Virtual Memory Examples (quiz)

10. Memory Allocation

  1. Memory Allocation Intro (quiz)
  2. Examples (quiz)
  3. Implicit Free Lists (quiz)
  4. Explicit Free Lists (quiz)
  5. Garbage Collection (quiz)
  6. Memory Allocation Bugs

11. Java to C

  1. Java Data Representation (quiz)
  2. Java Implementation (quiz)
  3. Java Virtual Machine (quiz)