351 Supplemental Videos

Tools

These videos can also be found on various lab specs; their content may be tailored to those contexts that won't necessarily make sense until that lab is released. There are some additional videos that are specific to individual labs that can only be found in the lab specs.


Linux

C Programming Language

GNU Debugger (GDB)

Lecture Content (Old)

The following videos were recording around 2013 for an old Coursera version of this course and are outdated. We provide them here in case hearing a different narration of the course topics might prove useful to you. These are NOT an adequate substitute for attending lecture and, notably, use the older IA32 assembly language instead of x86-64.


1. Memory, Data, and Addressing

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

2. Number Representation

  1. Encoding [YouTube]
  2. Integers [YouTube]
  3. Integers in C [YouTube]
  4. Shifting [YouTube]
  5. Fractions [YouTube]
  6. IEEE Floating Point [YouTube]
  7. Floating Point Operations [YouTube]
  8. Floats in C [YouTube]

3. Basic Machine Programming

  1. ISA [YouTube]
  2. Architecture [YouTube]

4. x86 Programming

  1. mov, swap [YouTube]
  2. x86-64 [YouTube]
  3. Address Computation [YouTube]
  4. Condition Codes [YouTube]
  5. Conditional Jumps [YouTube]
  6. Loops [YouTube]
  7. Switch [YouTube]

5. Procedures and Stacks

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

6. Data Structures

  1. Arrays [YouTube]
  2. Multidimensional or Nested Arrays [YouTube]
  3. Multi-Level Arrays [YouTube]
  4. Structs [YouTube]
  5. Data Structures and Memory Alignment [YouTube]
  6. Buffer Overflows [YouTube]

7. Memory and Caches

  1. Cache Basics [YouTube]
  2. Locality [YouTube]
  3. Memory Hierarchies [YouTube]
  4. Cache Organization 1 [YouTube]
  5. Cache Organization 2 [YouTube]
  6. Cache-Aware Optimizations [YouTube]

8. Exceptional Control Flow and Processes

  1. Exceptional Control Flow [YouTube]
  2. Processes [YouTube]
  3. Process Creation [YouTube]
  4. Process Management [YouTube]

9. Virtual Memory

  1. Virtual Memory Overview [YouTube]
  2. Indirection [YouTube]
  3. Virtual Memory for Caching [YouTube]
  4. Address Translation [YouTube]
  5. Virtual Memory Examples [YouTube]

10. Memory Allocation

  1. Memory Allocation Intro [YouTube]
  2. Examples [YouTube]
  3. Implicit Free Lists [YouTube]
  4. Explicit Free Lists [YouTube]
  5. Garbage Collection [YouTube]
  6. Memory Allocation Bugs [YouTube]

11. Java to C

  1. Java Data Representation [YouTube]
  2. Java Implementation [YouTube]
  3. Java Virtual Machine [YouTube]