CS 429:
Computer Organization and ArchitectureInstructor: Dr. Bill Young
Purpose of this website:
This website contains links to the slides for CS429 at UT Austin. If you hope to place out of the course or substitute a course taken at another university, this should be your primary source of information, along with the textbook. Be aware that this is difficult thing to do. Every class has peculiarities that are unique to that class at this university with this professor. You may have aced an analogous course elsewhere and not be able to pass an exam for my course, simply because of my choice of topics and emphasis. If you still want to proceed, talk to me and to the advisors.The textbook for this class is Computer Systems, A Programmer's Perspective by Randal E. Bryant and David O'Hallaron, Prentice Hall, 2010. The slides here are appropriate for the 2nd Edition. A third edition is available and will be used going forward. However, it is assumed that anyone attempting to place out of CS429 will have used the first or second editions, which focus on the 32-bit ISA rather than the 64-bit ISA.
In addition to Bryant and O'Hallaron, it is recommended that the student have some familiarity with programming in C. There will not be C programming questions on the exam.
Course Description:
CS429 is the first course in the systems core sequence required of all UT CS majors. It describes how computers operate at a fairly low level of abstraction. For example, we'll consider:Understanding these fundamentals thoroughly is absolutely essential to your future success in computer science. The material of this course is quite detailed and requires careful and diligent study. If you are not willing to put in the time and effort required to master this material, you probably should reconsider your decision to major in Computer Science.
- What are the components of a computer and how do they fit together?
- How do computers do arithmetic?
- How does the code you write actually execute?
- How does a program in a high level language like C get translated into a form the machine can execute?
- How can you write code likely to execute efficiently?
- How is information stored and accessed?
- How does your program access existing "libraries"?
We will be discussion several different programming languages in this course: C, x86 assembly language, and Y86 assembly language. You will be writing programs in at least C and Y86.
All of the class slides will be made available via links below as we cover new material. You are welcome to print them out or view them on-line. Slides are in PDF form. They are derived from slides developed for the course by Bryant and O'Hallaron and modified by me and other professors. They are used with permission.
Introduction to C
Slideset 1: Introduction to Computer Systems PDF-4up PDFThe following is a tutorial on C generated by a UT grad student: C Tutorial
Slideset 2: Bits and Bytes PDF-4up PDFSlideset 3: Integers PDF-4up PDF
Slideset 4: Floating Point PDF-4up PDF
Slideset 5: Digital Logic PDF-4up PDF
Slideset 7: ISA II PDF-4up PDF
Slideset 8: ISA III PDF-4up PDF
Slideset 9: ISA IV PDF-4up PDF
Slideset 10: ISA V PDF-4up PDF
Slideset 11: ISA VI PDF-4up PDF
Slideset 12: Datapath I PDF-4up PDF
Slideset 13: Datapath II PDF-4up PDF
Slideset 14: Pipelining I PDF-4up PDF
Slideset 15: Pipelining II PDF-4up PDF
Slideset 16: Pipelining III PDF-4up PDF
Slideset 17: Pipelining IV PDF-4up PDF
Slideset 18: Storage Technology PDF-4up PDF
Slideset 19: Cache I PDF-4up PDF
Slideset 20: Cache II PDF-4up PDF
Slideset 21: Optimization I PDF-4up PDF
Slideset 22: Optimization II PDF-4up PDF
Slideset 23: Amdahl's Law PDF-4up PDF
Slideset 24: Linking I PDF-4up PDF
Slideset 25: Linking II PDF-4up PDF