Overview
The videos below are from an old online version of 351 and are available thanks to Luis Ceze and Gaetano Borriello (and past 351 TAs Katelin Bailey, Rachel Sobel, Kevin Bi, Thomas Neuman, and An Wang). Viewing these videos is generally optional, though 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.
Intro to the C programming language | Not Captioned | Captioned | |
Macros in C | Not Captioned | Captioned | especially useful for lab 5 |
Intro to GDB | Not Captioned | Captioned | |
Endianness in GDB | Not Captioned | Captioned | especially useful for lab 3 |
Debugging in GDB using backtrace | Not Captioned | especially useful for lab 5 |
Hardware Preliminaries | Not Captioned | Captioned | |
Memory Organization | Not Captioned | Captioned | |
Memory Addresses | Not Captioned | Captioned | |
Data and Memory in C | Not Captioned | Captioned | |
Arrays | Not Captioned | Captioned | |
Boolean Algebra and Bitwise Operations | Not Captioned | Captioned |
Encoding | Not Captioned | Captioned | |
Integers | Not Captioned | Captioned | |
Integers in C | Not Captioned | Captioned | |
Shifting | Not Captioned | Captioned | |
Fractions | Not Captioned | Captioned | |
IEEE Floating Point | Not Captioned | Captioned | |
Floating Point Operations | Not Captioned | Captioned | |
Floats in C | Not Captioned | Captioned |
ISA | Not Captioned | Captioned | |
Architecture | Not Captioned | Captioned |
mov, swap | Not Captioned | Captioned | |
x86-64 | Not Captioned | Captioned | |
Address Computation | Not Captioned | Captioned | |
Condition Codes | Not Captioned | Captioned | |
Conditional Jumps | Not Captioned | Captioned | |
Loops | Not Captioned | Captioned | |
Switch | Not Captioned | Captioned |
Stacks | Not Captioned | Captioned | |
Procedure Call and Return | Not Captioned | Captioned | |
Stack-Based Languages | Not Captioned | Captioned | |
Linux Stack Frame, Passing Arguments | Not Captioned | Captioned | |
Register-Saving Conventions, Local Variables | Not Captioned | Captioned | |
x86-64 Calling Conventions | Not Captioned | Captioned |
Arrays | Not Captioned | Captioned | |
Multidimensional or Nested Arrays | Not Captioned | Captioned | |
Multi-Level Arrays | Not Captioned | Captioned | |
Structs | Not Captioned | Captioned | |
Data Structures and Memory Alignment | Not Captioned | Captioned | |
Buffer overflows | Not Captioned | Captioned |
Cache Basics | Not Captioned | Captioned | |
Locality | Not Captioned | Captioned | |
Memory Hierarchies | Not Captioned | Captioned | |
Cache Organization 1 | Not Captioned | Captioned | |
Cache Organization 2 | Not Captioned | Captioned | |
Cache-Aware Optimizations | Not Captioned | Captioned |
Exceptional Control Flow | Not Captioned | Captioned | |
Processes | Not Captioned | Captioned | |
Process Creation | Not Captioned | Captioned | |
Process Management | Not Captioned | Captioned |
Virtual Memory Overview | Not Captioned | Captioned | |
Indirection | Not Captioned | Captioned | |
Virtual Memory for Caching | Not Captioned | Captioned | |
Address Translation | Not Captioned | Captioned | |
Virtual Memory Examples | Not Captioned | Captioned |
Memory Allocation Intro | Not Captioned | Captioned | |
Examples | Not Captioned | Captioned | |
Implicit Free Lists | Not Captioned | Captioned | |
Explicit Free Lists | Not Captioned | Captioned | |
Garbage Collection | Not Captioned | Captioned | |
Memory Allocation Bugs | Not Captioned | Captioned |
Java Data Representation | Not Captioned | Captioned | |
Java Implementation | Not Captioned | Captioned | |
Java Virtual Machine | Not Captioned | Captioned |