CSE351: The Hardware/Software Interface

Welcome to 351 Winter 2014!

Staff email:
  • cse351-staff@cse.uw.edu
Course Instructor
  • Mark Oskin, 206-293-9456
  • Office Hours by Appt.
Course TAs
  • Matt Dorsett, madman2@cs.washington.edu, M 12:30-1:20
  • Benjamin Du, bendu@cs.washington.edu, T 1:00-1:50
  • Mark Wyse, wysem@cs.washington.edu, W 2:30-3:20
  • Whitney Schmidt, wps5@cs.washington.edu, Th 2:30-3:20
  • All TA office hours will be in CSE 002
Late Work Policy
Day 1 slides: here
Module 1: Memory Data, Addressing & Number Representation Lecture Videos
  1. Hardware Preliminaries
  2. Memory Organization
  3. Memory Addresses
  4. Data and Memory in C
  5. Arrays
  6. Boolean Algebra and Bitwise Operations
  7. Encoding
  8. Integers
  9. Integers in C
  10. Shifting
  11. Fractions
  12. IEEE Floating Point
  13. Floating Point Operations
  14. Floats in C
Module 2: Intro to assembly programming
Friday 1/17 - Intro
Monday - Holiday
Wednesday 1/22 - Discussion
Friday 1/24 - Advanced

Lecture videos
  1. ISA
  2. Architecture
  3. mov, swap
  4. x86-64
  5. Address Computation
  6. Condition Codes
  7. Conditional Jumps
  8. Loops
  9. Switch
Module 3: Procedures & Stacks
Monday 1/27 - Intro
Wednesday 1/29 - Discussion
Friday 1/31 - Advanced

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

    Resources
    x64 ABI
    inline assembly guide x86
    "Official inline assembly guide
    guide for x64
Module 4: Data structures
Monday 2/3 - Intro
Wednesday 2/5 - Intro/Discussion
Friday 2/7 - Advanced topics
Videos
  1. Arrays
  2. Multidimensional or Nested Arrays
  3. Multi-Level Arrays
  4. Structs
  5. Data Structures and Memory Alignment
  6. Buffer overflows
Module 5: CPUs
Friday 2/14 - Intro
Monday 2/24 - Intro 2
Wednesday 2/26 - Discussion
Friday 2/28 - Advanced topics
Videos
  1. Cache Basics
  2. Locality
  3. Memory Hierarchies
  4. Cache Organization 1
  5. Cache Organization 2
  6. Cache-Aware Optimizations
  7. Virtual Memory Overview
  8. Indirection
  9. Virtual Memory for Caching
  10. Address Translation
  11. Virtual Memory Examples
Module 6: Processes & libc
Monday 3/3 - Intro
Wednesday 3/5 - Intro 2 / Discussion
Friday 3/7 - Advanced topics
Videos
  1. Exceptional Control Flow
  2. Processes
  3. Process Creation
  4. Process Management
  5. Memory Allocation Intro
  6. Examples
  7. Implicit Free Lists
  8. Explicit Free Lists
  9. Garbage Collection
  10. Memory Allocation Bugs
Module 7: Managed languages
Monday 3/10 - Intro
Wednesday 3/12- - Advanced topics
Videos
  1. Java Data Representation
  2. Java Implementation
  3. Java Virtual Machine
Friday 3/15 - Wrapup and Review
Lecture Slides
Readings
  • Module 1: Chapters 1 & 2
  • Module 2: Chapter 3.1-6
  • Module 3: Chapter 3.7, 3.13
  • Module 4: Chapter 3.8-12
  • Module 5: Chapter 6.2-5, 9.1-7
  • Module 6: Chapter 8.1-2, 8.4.1-2, 9.9-12
  • Module 7: None
Labs
Homework
Section Slides
Other Resources
Privacy policy and terms of use