CS 429: Spring, 2016
Computer Organization and Architecture

Instructor: Dr. Bill Young

Unique numbers: 50990, 50995; Class time: MW 2:00-3:45pm; Location: GEA 105
Unique numbers: 51005, 51010; Class time: MW 4:00-5:45pm; Location: GEA 105

Instructor Office: GDC 7.810; Phone: 471-9782; Email: byoung at cs.utexas.edu
Instructor Office Hours: Tues. 10am-noon; Thurs. 2-4pm and by appointment

TA: Cong Ding; Email: cong at cs.utexas.edu; TA Office Hours: Thurs. 10-11:30am, GDC 1.302, Desk 2
TA: Michael Feilbach; Email: mfeilbach at utexas.edu; TA Office Hours: Tues. 10:30am-noon, GDC 1.302, Desk 2
TA: Xiaorong (Sharon) Zhu; Email: xiaorong at utexas.edu; TA Office Hours: Mon noon-2pm, GDC 1.302, Desk 1
Proctor: Adam Levi Poncher; Email: aponcher at utexas.edu; Proctor Office Hours: TBD
This website: www.cs.utexas.edu/users/byoung/cs429/syllabus429.html

Important Class Announcements:

Breaking news important to the class will be posted here. Consult this spot often.

Here is the study guide for the final: Final Study Guide

The class schedule page had an error regarding the reading related to linking. It has been fixed now. You should read sections 7.1-7.10.

Here is your last homework, which gives you some practice on Amdahl's Law and Linking. This one won't be graded so do it if you have time, but there's no need to turn it in: Homework 13..

Here are the answers for the three in-class exams: Test1, Test2, Test3.

The grades for Exam 3 are now on Canvas. Here are the stats (for all three tests): Tests 1-3 Stats.

You can get 2 extra credit points toward the final exam grade for filling out the electronic course survey. You must submit a .png screenshot via Canvas. Please complete it by May 6.

The Lab 6 instructions are here: Lab 6.

The final exam date has been established. We will have a combined final exam on May 11 from 7-10pm in BEL 328.

Dr. Young's office is in the south wing. You have to take the south elevator, because the two wings don't connect on the 7th floor.

Feel free to email me (Send me an email message), but please put "CS429" in the header.

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.

In this class, you will be asked to complete some very challenging assignments. In some cases you will be expected to use tools and techniques that are not discussed in class. That is not to say that help is not available; just that we expect you to be proactive about learning. This is a skill you must acquire now, because you'll need it for your entire academic and professional career. Toto, I don't think we're in high school anymore!

The students that do well in this class are survivors. This class is a lot of work, and it is important to keep current. The material in this class is cumulative; it can be quite difficult to catch up if one falls behind. It is important to keep turning in homework and come to class. Here are some general hints for succeeding in this and other classes: Hints for Success.

We will be discussing 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.

Students are required to attend their assigned lab weekly.

Unique # Time Location TA
50990F noon-2pmUTC 4.102TBA
50995F 2pm-4pmUTC 4.102TBA
51005F 11am-1pmUTC 4.102TBA
51010F 1pm-3pmUTC 4.102TBA

Using Piazza: We will be using Piazza for class communication. The Piazza system is highly catered to getting you help fast and efficiently from classmates, the TAs, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you turn off the notifications and miss an important posting, you are responsible. If you have any problems or feedback for the developers, email team at piazza.com. The Piazza class page will be posted shortly. Because of some issues in past semester, posts may be anonymous to the class, but not to me. I expect that posts will be pertinent and respectful. Don't use Piazza as a place to vent or trash anyone.


You are expected to have taken and passed the following courses (or equivalent) with a grade of at least C-: Computer Science 311, 311H, 313H, or 313K; Computer Science 314, 314H, 315, or 315H. If you don't have the prerequisites, be sure to clear it with the CS department or risk being dropped from the class.


The required text book for this class is Computer Systems, A Programmer's Perspective by Randal E. Bryant and David O'Hallaron, Prentice Hall, 2016 (Third Edition). You need to get the 3rd edition, which is substantially different from the 2nd edition. Note that this book is also used in CS439, so don't sell it back at the end of the semester if you plan on continuing in CS.

Since we will be programming some in C, I recommend that you have access to The C Programming Language, second edition, by Brian Kernighan and Dennis Ritchie, Prentice Hall Software Series. This is available on-line. There are also many Web pages devoted to C-language programming. A nice tutorial intro to C is here: C Tutorial. Java programmers should have no problem with the subset of C that we will use.

Class Schedule and Slides:

The class schedule is here: schedule. This schedule is approximate; some dates may change. Rely on the assignment handouts, not on this schedule for assignment due dates. Here's a list of the class meetings this semester: Class Meetings.

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.

Slides on C: PDF

The following is a tutorial on C generated by a UT grad student: C Tutorial

Slideset 1: Introduction to Computer Systems PDF

Slideset 2: Bits and Bytes PDF

Slideset 3: Integers PDF

Slideset 4: Floating Point PDF

Slideset 5: Digital Logic PDF

Slideset 6: ISA I PDF

Slideset 7: ISA II PDF

Slideset 8: ISA III PDF

Here is the arraysum program we went over in class and its compilation: arraysum.c

Slideset 9: ISA IV PDF

Here is the C program I went over in class mult.c and the corresponding x86 code mult.s.

Slideset 10: ISA V PDF

Slideset 11: ISA VI PDF

Test 2 material stops here.

Slideset 12: Datapath I PDF

Slideset 13: Datapath II PDF

Slideset 14: Pipelining I PDF

Slideset 15: Pipelining II PDF

Slideset 16: Pipelining III PDF

Slideset 18: Storage Technology PDF

Slideset 19: Cache I PDF

Slideset 20: Cache II PDF

Here's the cache problem from last semester's final that I went over in class Monday: Cache Problem.

Slideset 21: Optimization I PDF

Profiling example: Fib profile.

Slideset 22: Optimization II PDF

Slideset 23: Amdahl's Law PDF

Test 3 material stops here.

Slideset 24: Linking I PDF

Slideset 25: Linking II PDF


We're in the process of making some videos that you might find helpful. Generally, they cover small snippets of class material that some students find confusing:

Representing Unsigned Integers
Representing Signed Integers
Representing Floating Point Numbers
Big Endian vs. Little Endian
Push instruction
Pop instruction
Array Indexing
Assembly Language Programming: Swap


There will be three in-class exams of approximately one and one half hour each. See the schedule for dates. There will be no makeups on in-class exams, but I will drop the lowest of these three scores.

The final exam date has been established. We will have a combined final exam on Wednesday, May 11 from 7-10pm in BEL 328.


Written homework will be assigned each week. It must be submitted on Canvas and will not be accepted late. You may work together on written assignments. This is an easy 15% of your grade so make the most of it.

You will have around 5-6 labs over the course of the semester. You must work alone on all labs. The due dates will be clearly marked. For labs, you will have 3 total grace days available which you can use over the course of the semester. You'd be advised to save them as long as possible to deal with illnesses and personal emergencies.

Labs are generally posted on Canvas and Piazza.

Homework 1


Homework 2


Homework 3. Due 2/12

Homework 4. Due 2/19

Homework 5. Due 2/26

Lab 2: Bomb Lab

Homework 6. Due 3/4


Homework 7. Due 3/11


Homework 8. Due 3/25. One problem references Problem 2 on Test 2. That's here: prob2 from Test 2

Homework 9. Due 4/1

Homework 10. Due 4/8


Homework 11. Due 4/15

Homework 12. Due 4/22

Homework 13. Due 5/6. This one will not be counted.


You are strongly encouraged to come to class. Attendance will not be checked, but my experience indicates that students who regularly miss class do poorly.

Computation of Your Grade:

The weighting of the grades for the various aspects of the course are as follows:

Component Percent
In class exams (one dropped) 30%
Final Exam 20%
Homework and Quizzes15%
Labs 35%

It is very important that you do the laboratory assignments. Once a laboratory has been turned in, material concerning a laboratory may appear on an exam.

Grades for the entire course tentatively will be averaged using the weighting below:

Course score Grade
[87... 90)A-
[85... 87)B+
[80... 85)B
[77... 80)B-
[75... 77)C+
[70... 75)C
[67... 70)C-
[65... 67)D+
[60... 65)D
[ 0... 60)F

This is tentative. The grades may be curved and may be a bit more generous than this. They will certainly not be less generous. That is, if you have a 90 you are guaranteed an A; but somone who gets an 89 may also get an A, depending on the final distribution of grades in the class.

A course grade of at least C- is required for this course to count toward a UT CS degree.

Scholastic Dishonesty:

Academic dishonesty will not be tolerated. See http://www.cs.utexas.edu/academics/conduct for an excellent summary of expectations of a student in a CS class.

All work must be the student's own effort. Work by students in previous semesters is not your own effort. Don't even think about turning in such work as your own, or even using it as a basis for your work. We have very sophisticated tools to find such cheating and we use them routinely. It's far better to get a 0 on an assignment than to cheat.

No deviation from the standards of scholastic honesty or professional integrity will be tolerated. Scholastic dishonesty is a serious violation of UT policy; and will likely result in an automatic F in the course and may result in further penalties imposed by the department or by the university. Don't do it! If you are caught, you will regret it. And even if you're not caught, you're still a cheater.

Students with Disabilities:

Students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 471-6259, http://www.utexas.edu/diversity/ddce/ssd.

Grad Students Clearing Architecture Background Requirement

If you're a grad student who needs to complete your background requirement in Architecture by exam, I'm happy to help you with that. You can do as little as take the final exam for CS429 with a grade of at least 80%. But be aware that the exams for this class (or any class) are idiosyncratic and assume that the person taking the test is also taking the class. For example, there are questions about x86 syntax and calling conventions. You could be a world-class expert on MIPS or ARM architecture and not do well on the exam. My suggestions is to study the appropriate sections of the Bryant and O'Hallaron book, review the class slides, and take the three in-class exams. Otherwise, you risk not resolving your background deficit.

Some Interesting Links:

Resources on processors and optimization
Blog on x86 coding
How a CPU Works
Which Engineers Make the Most
Replace Hard Drives with DRAM
An Apt Metaphor for CS429
CS students in demand
Layout of a Program in Memory
Disk drive at work
Cache Associativity Cartoon
Ender's Game a Reality
Status of Moore's Law
Good PDP-8 reference
Nice intro to GDB
Thoughts on Endianess
x86 cheat sheet
Primer on Y86
Decimal to FP guide
x86 Assembly Guide
Moore's Law Dead?
Unix, C Hoaxes?
5 Things to Know
Indiana U. Career Overview
Jobs Prospects
Top 10 Jobs for CS Majors
Jobs with High Pay
Cities with Most CS Jobs