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.
Classes 00 - Introduction (Web-based, Physical Computer Presentation):
Exmaple Architecture and C Programming (August 29, 2012).
Tool (compiler, assembler, linker) discussion.
- Class 00 - Course Overview (August 29, 2012)
(pdf), read Chapter 1.
- Class 00 - Course Organization (August 29, 2012)
(pdf), read Chapter 2.
- Class 01 - Y86 Instruction Set Architecture (September 5, 2012)
- Class 01 - Introduction to C, (September 5, 2012). Simple C
language template(pdf) and an
introduction to C language features by Christian Miller
- C Programming (Laboratory #0) handed out
- Example C Programs
Lecture Notes for Chapter 2
Class 02 - Bits and Bytes (September 10, 2012)
(pdf) Description of data
Class 03 - Integers (September 12, 2012)
(pdf). Presentation of
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
Start reading Chapter 3.
Class 05 - Floating point (September 19, 2012)
Presentation of floating-point representations.
- Note: Because of UT being closed on Friday,
September 14th, the order of the lectures of the week of September 17
Also note: Homework #2 is now due by Friday, September 21 by 5:00 pm.
If you choose to turn your homework in on Friday, be sure that you
give it to one of the TAs (Friday practical sessions are an obvious
time to do so).
Class 05 - Discussion of Laboratory #1 (September 19, 2012)
- Data Lab (Laboratory #1) handed out
Lecture Notes for Chapter 3
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)
- Class 07 - Short Exam 1 (September 26, 2012)
Lecture Notes for Chapter 4: Processor Architecture -- Introduction
Class 12 - Y86 Instruction Set Architecture (October 15, 2012)
(Assembler and Simulator Example
Source Material). Discussion of Class Y86 ISA Specification and
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
(October 29, 2012)
Class 17 - Pipelined Implementation I & II (October 31, 2012)
Class 18 - Y86 Wrap-up (November 5, 2012)
- Class 14 - Midterm Exam (October 22, 2012)
Lecture Notes for Chapter 5
Class 18 - Program Optimization I & II (November 5, 2012)
Lecture Notes for Chapter 6
Class 19 - The Memory Hierarchy I (November 7, 2012)
Class 20 - The Memory Hierarchy II (November 12, 2012)
- Y86 Programming Lab (Laboratory #2, Part 1) due November 13, 2012
- Class 21 - Short Exam 2 (November 14, 2012)
Lecture Notes for Chapter 7
Class 22 - Linking (November 19, 2012)
- Memory Hierarchy Lab (Laboratory #3) handed out
- Y86 Programming Lab (Laboratory #2, Part 2) due November 20, 2012
Lecture Notes for Chapter 9
Class 23 - Virtual Memory, P6/Linux Memory System (November 26, 2012)
Class 24 - Virtual Memory, P6/Linux Memory System (November 28, 2012)
Class 25 - Dynamic Memory Allocation I & II (December 3, 2012)
Class 26 - Course Summary, Final Exam Discussion, Stump the Professor (December 5, 2012)
- Memory Hierarchy Lab (Laboratory #3) due December 7th
- Final Exam (December 15, 2012) 2:00 -- 5:00 pm, UTC 2.112A
Return to CS429 course homepage.