CS 429: Fall, 2013
Computer Organization and Architecture
Instructor: Dr. Bill YoungUnique numbers: 53820, 53825, 53830, 53835, 53840
Class time: TT 8:30-10:30am; Location: GDC 2.216
Office: GDC 7.810; Office Hours: MW 10-11am, TT 10:30-11:30am, and by appointment
Office Phone: 471-9782; Email: firstname.lastname@example.org
TA: Ji Hong; Email: email@example.com
TA Office Hours: Fridays 8-9am
TA: Hang Yu; Email: firstname.lastname@example.org
TA Office Hours: Mondays 8-9am, GDC 1.302, desk 1
TA: Akbar Mehdi; Email: email@example.com
TA Office Hours: Fridays 4-5pm, GDC 1.302 Desk 5.
Proctor: Bulat Bazarbayev; Email: firstname.lastname@example.org
Proctor Office Hours: Wed. noon-1pm; Fri. 11am-noon, GDC lab 3rd floor
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.
Our final exam will be held on Wednesday, December 11, from 7-10pm, in ART 1.102. That's the day and time determined by the registrar for a class in our time slot. Please don't make travel plans that will conflict with the final exam. The exam is comprehensive. A study guide is here: Exam Study Guide. Unlike previous tests, you can bring two handwritten sheets of notes.
It was asked that I post the answers to the tests we've had. Here are the answers to Test 1: T1 answers; Test 2: T2 answers and Test 3: T3 answers. Answers to Version B are at the bottom of each page.
Here are the statistics on Test 3: T3 stats. Recall that the lowest grade on the three in-class tests (normalized to 100) will be dropped.
Here is the description of your final lab: Lab7: Binary Bomb. By popular demand, it's the famous (or infamous) "Binary Bomb" lab, rather than Prof. Peterson's Lab7. It is due Dec. 5 (not Dec. 1 as originally posted).
The individual labs and homeworks have been graded by:
Their email addresses are posted at the top of this page. If you have questions about your grade, I suggest contacting the TA who graded the lab.
- Homeworks: Bulat Bazarbayev;
- Lab1: Ji Hong;
- Lab2: Hang Yu;
- Lab3: Akbar Mehdi;
- Lab4: Bulat
- Lab5 Hang Yu;
- Lab6 Bulat Bazarbayev;
- Lab7 Ji Hong;
If you send me an email re. the class, please put "CS429" somewhere in the subject line, so I'll know to which class it refers.
Some Interesting Links:Ender's Game a Reality
Status of Moore's Law
Good PDP-8 referencd
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
Top 10 Jobs for CS Majors
Jobs with High Pay
Cities with Most CS Jobs
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"?
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.
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.
Students are required to attend their assigned lab weekly.
Unique # Time Location TA 53820 M 9-11am GDC 4.302 Hang Yu 53825 F 9-11am GDC 4.302 Ji Hong 53830 M 11am-1pm GDC 2.210 Hang Yu 53835 F 11am-1pm GDC 1.406 Ji Hong 53840 F 2-4pm GDC 1.406 Akbar Mehdi
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 have any problems or feedback for the developers, email email@example.com. The Piazza class page will be posted shortly.
Prerequisites: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.
Text:The required text book for this class is Computer Systems, A Programmer's Perspective by Randal E. Bryant and David O'Hallaron, Prentice Hall, 2010. You must have this book. 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 slightly.
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
The following is a tutorial on C generated by a UT grad student: C Tutorial
Slideset 1: Introduction to Computer Systems
Slideset 2: Bits and Bytes
Slideset 3: Integers
Slideset 4: Floating Point
Slideset 5: Digital Logic
Slideset 6: ISA I
Slideset 7: ISA II
Slideset 8: ISA III
Slideset 9: ISA IV
Slideset 10: ISA V
Slideset 11: ISA VI
Slideset 12: Datapath I
Slideset 13: Datapath II
Slideset 14: Pipelining I
Slideset 15: Pipelining II
Slideset 16: Pipelining III
Slideset 17: Pipelining IV
Slideset 18: Storage Technology
Slideset 19: Cache I
Slideset 20: Cache II
Slideset 21: Optimization I
Slideset 22: Optimization II
Slideset 23: Linking I
Slideset 24: Linking II
Tests:There will be three in-class exams of approximately one hour each. See the schedule for dates. I will drop the lowest of these three in-class exams. There will also be a three-hour final exam on Wednesday, December 11, from 7-10pm, in ART 1.102. That's the day and time determined by the registrar for a class in our time slot. Please don't make travel plans that will conflict with the final exam.
Assignments:Written homework will be assigned each week. It must be submitted to your TA by the end of your discussion section, 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 7 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.
Lab 1 README and Lab 1 tarball
Lab 2. There are some C files that may be helpful at the bottom or Prof. Peterson's webpage: Peterson's webpage
lab7: Binary Bomb.
Attendance:You are encouraged to come to class, but attendance will not be checked.
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 15% 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 are averaged using the weighting below:
Course score Grade [90...100] A [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 likely will be curved and may be a bit more generous than this. They will certainly not be less generous.
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.