Lecture Notes for
Computer Systems: A Programmer's Perspective (CS:APP)

Originally prepared by Randal E. Bryant and David R. O'Hallaron. Edited by Warren A. Hunt, Jr. for use in UT CS429.

UT CS429 NOTE: Much of the slide material was prepared by the textbook authors as a part of their textbook offering, but I have made many minor and a several major changes.

Lecture Notes

  • Classes 00 - Introduction (Web-based, Physical Computer Presentation):
  • Exmaple Architecture and C Programming (August 29, 2012). Tool (compiler, assembler, linker) discussion.

    Lecture Notes for Chapter 2

  • Class 02 - Bits and Bytes (September 10, 2012) (pdf) Description of data representations.
  • Class 03 - Integers (September 12, 2012) (pdf). Presentation of integer representations.
  • Class 04 - Bit manipulation and arithmetic in C (September 17, 2012). Example code will be presented; this code will be similiar in form to Laboratory #1.
  • Class 04 - Bit manipulation, machine arithmetic, and data storage (September 17, 2012). Discussion: challenges, importance, and storage density.
  • Start reading Chapter 3.
  • Class 05 - Floating point (September 19, 2012) (pdf), Presentation of floating-point representations.
  • Class 05 - Discussion of Laboratory #1 (September 19, 2012)

    Lecture Notes for Chapter 3

  • Y86 re-introduction.
  • Class 06 - Machine-Level Programming I - Introduction (September 24, 2012) (pdf). Introduction to X86 instruction set.
  • Class 07 - Understanding the C compiler (September 26, 2012). We will look at the stages of the compiler and investigate how to get it to emit additional information.
  • Class 08 - Machine-Level Programming II - Control Flow (October 1, 2012) (pdf). Flow of control (branch, jump) instructions.
  • Class 09 - Machine-Level Programming III- Procedures (October 3, 2012) (pdf). Mechanisms for writing recursive programs.
  • Class 10 - Machine-Level Programming IV - Structured Data (October 8, 2012) (pdf). Overlaying C data structures onto the X86 architecture.
  • Class 11 - Machine-Level Programming V- Miscellaneous Topics (October 10, 2012) (pdf)

    Lecture Notes for Chapter 4: Processor Architecture -- Introduction

  • Class 12 - Y86 Instruction Set Architecture (October 15, 2012) (pdf) (Assembler and Simulator Example Source Material). Discussion of Class Y86 ISA Specification and Laboratory #2.
  • Class 13 - Logic Design (October 17, 2012) (pdf) Midterm Exam review.
  • Class 15 - Midterm Exam discussion (October 24, 2012). Additional discussion of the class Y86 assembler and simulator.
  • Class 16 - Logic Design (pdf) & Sequential Implementation (pdf) (October 29, 2012)
  • Class 17 - Pipelined Implementation I & II (October 31, 2012) (pdf) (pdf)
  • Class 18 - Y86 Wrap-up (November 5, 2012) (pdf)

    Lecture Notes for Chapter 5

  • Class 18 - Program Optimization I & II (November 5, 2012) (pdf) (pdf)

    Lecture Notes for Chapter 6

  • Class 19 - The Memory Hierarchy I (November 7, 2012) (pdf)
  • Class 20 - The Memory Hierarchy II (November 12, 2012) (pdf)

    Lecture Notes for Chapter 7

  • Class 22 - Linking (November 19, 2012) (pdf)

    Lecture Notes for Chapter 9

  • Class 23 - Virtual Memory, P6/Linux Memory System (November 26, 2012) (pdf)
  • Class 24 - Virtual Memory, P6/Linux Memory System (November 28, 2012) (pdf)
  • Class 25 - Dynamic Memory Allocation I & II (December 3, 2012) (pdf) (pdf)
  • Class 26 - Course Summary, Final Exam Discussion, Stump the Professor (December 5, 2012)

    Return to CS429 course homepage.