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 this spring. 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 cover only briefly in lecture, due to the shorter summer quarter.
Tools, etc.
- Intro to the C programming language
- Intro to GDB (especially useful for lab 2)
- Buffer overflows (especially useful for lab 3)
Lecture Content
Memory, Data, and Addressing
- Hardware Preliminaries
- Memory Organization
- Memory Addresses
- Data and Memory in C
- Arrays
- Boolean Algebra and Bitwise Operations
Number Representation
- Encoding
- Integers
- Integers in C
- Shifting
- Fractions
- IEEE Floating Point
- Floating Point Operations
- Floats in C
Basic Machine Programming
x86 Programming
Procedures and Stacks
- Stacks
- Procedure Call and Return
- Stack-Based Languages/a>
- Linux Stack Frame, Passing Arguments
- Register-Saving Conventions, Local Variables
- x86-64 Calling Conventions
Data Structures
- Arrays
- Multidimensional or Nested Arrays
- Multi-Level Arrays
- Structs
- Data Structures and Memory Alignment
- Buffer overflows
Memory and Caches
- Cache Basics
- Locality
- Memory Hierarchies
- Cache Organization 1
- Cache Organization 2
- Cache-Aware Optimizations