|Instructor:||Yale N. Patt (http://www.ece.utexas.edu/~patt)|
|Office:||6.252 Peter O'Donnell Bldg (POB)|
|Office Hours:||MW, 6:30pm to 8:00pm, and by appointment|
|Course Title:||Computer Architecture.|
This course, in my view, represents a serious
introduction at a senior undergraduate level into how computers work. I
believe that Computing involves architecture at many levels. We will
focus on the instruction set architecture level (sometimes called the
machine architecture) and the microarchitecture level (often called the
implementation architecture or computer organization). We will review to
some extent the level below the microarchitecture (the logic design
level), relying mainly on the knowledge you already have obtained, and
we will cover to some extent the level above the instruction set
architecture (program translation) in order to demonstrate our
understanding of some of the concepts. The intent of the course is to
provide a comprehensive understanding of how the various levels play
together, and remove a good part of the mystery pertaining to how the
A separate handout contains a lecture by lecture outline of the course, along with dates for all assignments, quizzes and the final exam.
What I expect: I expect to assign a substantial number of homework problems and in addition six programming assignments. I hope to cover most of the material one should expect in an introduction to computer organization, but I expect to not read to you from any textbook. You should consider my lectures and the corresponding treatments in various textbooks as different approaches to learning the same material. The problem sets are a way for you to check to see if you are getting it.
I will not take attendance, and attendance will not be considered in the grading. At this point in your education, I believe it is for you to decide how to allocate your time. You must decide whether I am providing enough that is useful in class to justify your coming to class.
I encourage you to study in groups, and to come to my office in groups. That usually will result in all of you understanding the material better. You are encouraged to ask questions, ...after you have thought about the material. You are encouraged to challenge assumptions. Computer Science and Engineering deals with "nature" that is man-made (person-made, actually, but that is awkward) and so we the people may have made it wrong. I tend to respond thoroughly (usually too thoroughly, I am often told) to questions, using the question as an opportunity to introduce new material. You, working with other members of your study group, can often unravel my response to the benefit of all members of the group much better than one person can, working alone.
If you are part of a study group, you will need to turn in only one copy of a solution to a problem set for the entire group. The front page should contain the names of all members of the study group who have contributed to the solution. Each student will receive the same grade for that problem set.
In the spirit of learning from each other, you are invited to work together with one other person on the first two programming labs. If you choose that option, only one copy of the program solution should be turned in, but both of your names should be clearly stated on your submission. You will both receive the same grade on those two programming labs.
Although I encourage you to study together, examinations and your
work on programming lab assignments 3,4,5, and 6 must be your own
The course consists of three hours of lecture + a 1 1/2 hour
discussion section each week. Lectures will generally take place MW,
from 5pm to 6:30pm, in ECJ 1.202. The compile-time schedule of
lectures and discussions can be found in the Course Syllabus, although
it could change depending on how rapidly (or slowly) we cover various
topics. When faced with answering a student question or remaining on
schedule, I almost always opt for answering the question. Thus, the
dynamic schedule of my lectures will probably not be known until
run-time, since we are likely to adapt the schedule where it seems to
There will be six discussion sections each week, as follows:
|Teaching Assistants:||Siavash Zangeneh (email@example.com), Ali Fakhrzadehgan (firstname.lastname@example.org), Steven Flolid (email@example.com), and Matthew Normyle (firstname.lastname@example.org)|
|Course Home Page:||http://www.ece.utexas.edu/~patt/16f.460N|
There is no required textbook for the course. I will make available as
appropriate copies of notes I will use throughout the course. I am in
the process of writing a textbook for 460N, which will become the
required textbook when (if??) it gets done. If I have chapters ready for
you, I will distribute those as appropriate in class.
Over the years, my TAs have noted terms that I have used in class, and I have compiled descriptions of all of them into a file, which is located on the course web page under Handouts, as Glossary of Buzzwords. I admit that this is not a textbook. However, I have been told by students that it is a very valuable reference text for the various concepts discussed in class. Each semester, my TAs bring me any terms (buzzwords) I have used for the first time, and I create entries for those terms in the Glossary.
In addition, three textbooks are identified below as containing useful information on the material covered in the course. If you find it useful, you may want to obtain a copy of one of them and share it with other members of your study group. In that way, each student can benefit from more than one author's interpretation of the material. Some students have successfully completed this course without ever looking at a textbook. Others have found it useful to purchase several textbooks. You should use your own best judgment on this.
The three textbooks are:
Harvey G. Cragon, Computer Architecture and Implementation, Cambridge University Press, 2005, ISBN-13: 978-0521657051.
Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Naraig Manjikian Computer Organization, 6th Edition, McGraw Hill, Jan. 2011, ISBN-13: 978-0073380650.
Andrew Tanenbaum, Todd Austin Structured Computer Organization, 6th Edition, Prentice Hall, Aug. 2012, ISBN-13: 978-0132916523.
|Prerequisites:||The prerequisites for the class are EE 316 and EE 319K, with a grade of C or higher in each class. It is also assumed that the student has facility in the programming language C. If you are not conversant in C, it is assumed that you are willing and able to pick up what you need to know to be able to complete the six programming lab assignments. You should feel very comfortable asking any TA any question about C.|
|Additional course resources:||As noted above, class handouts will be supplied when necessary to supplement the concepts discussed in lecture. Other information will be downloadable from the course home page.|
|Homework policy:||Problem sets will be assigned as specified in the syllabus. Additional problems may be assigned whenever the instructor feels it is appropriate, based on something that comes up in class. Usually, students will have between one and two weeks to complete a problem set. Students will be encouraged to form study groups to work homework problems. Only one copy of a problem set per group should be turned in.|
We strongly encourage you to form a study group of three or four students, and
to work together on the problem sets and to study together to prepare for each
exam. We also want you to work with your (one) partner on the first two
programming labs. However collaboration does NOT extend to the
programming lab assignments 3,4,5, and 6, or to the actual taking of the two
mid-terms and final exam. These programs and the in-class examinations you take
MUST be your own work. Providing information to another student where
prohibited, or obtaining information from anyone other than the instructor or
one of the TAs where prohibited is considered cheating. This includes the
exchange of any information during an examination and any code that is part of a
solution to a programming assignment. Allowing another student to read
something on your paper during an examination is considered cheating. In fact,
leaving information unprotected so it can be compromised by another student is
considered cheating. This includes sheets of paper lying about in an examination
room or in your home, and computer files that are not properly protected. If
you cheat, you violate the soul of the University, which we take very seriously,
and we will deal with in the harshest possible way. If you have any question as
to what is permitted and what is not, ask the instructor or a TA FIRST. If you
don't ask first, and you do something that is not allowed, the response "I
thought it was okay" is not an acceptable justification.
I am told that the programming labs from previous years are available to anyone who wants them. I strongly urge you to not avail yourself of these lab solutions for several reasons: (a) The course is an elective, so presumably you are enrolled because you want to master this material. Looking at old solutions does not help accomplish that objective. (b) I will institute spot checks -- oral exams -- after each assignment is due in order to be sure everyone is doing the work without unpermitted help. (c) Anyone caught cheating will be dealt with severely. The penalty I will recommend to the Dean of Judicial Services is most likely an F in the course. Please do not force my hand on this. You will not be happy with the result.
We have recently learned that some enterprising folks are posting solution code to some of the programming labs. Using that code in any way (reading, studying, copying, etc.) constitutes cheating.
I am embarrassed to have to bother all of you with the above three paragraphs, since for most of you, they are totally unnecessary. But, every semester there are some who feel it is okay to cheat, and I have to turn them in to the Student Judicial System. In an attempt to deter these few from cheating, I apologize for having to take up all this time of the rest of you.
|Quiz and Exam policy:||
There will be two exams in class, the first on October 5th, the second on
November 21st. There will be a final exam during the normal final exam
period, on Friday, December 9th, unless the Registrar changes the date.
Please be sure to check the Registrar's schedule as we get closer to
December 9th. All exams will be closed book, with two exceptions:
(1) The student may bring into the exam three sheets of paper on which the student is free to write anything he/she wishes. All three sheets must be original sheets in the student's own handwriting.
(2) Each student may bring into the exam any handouts that have been expressly permitted by the instructor prior to the exam.
|Final Exam:||Probably Friday, December 9th, 7 to 10pm. (TENTATIVE). See above.|
|Grading mechanics:||Nominally, grades are based on the following percentages:
Problem sets: 8%
Programming Lab Experiments: 30% (5% each, times 6 assignments)
Midterms: 15% each (two of them)
Final exam: 25%
My subjective evaluation of your work: 7%
Policy: Problem sets and programming assignments are due on the date and
at the time specified.
The MEC Common Evaluation form will be used to evaluate the instructor in
The deadline for dropping without possible academic penalty is November 1st for undergraduate students, and December 5th for graduate students.
Allegations of Scholastic Dishonesty will be dealt with according to the procedures outlined in Appendix C, Chapter 11, of the General Information Bulletin, http://www.utexas.edu/student/registrar/catalogs/.
The University of Texas at Austin provides, upon request, appropriate academic adjustments for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 471-6259, 471-4241 TDD, or the College of Engineering Director of Students with Disabilities, 471-4321.
For those of you who decide to continue in this course, Good Luck. I hope you find the experience an important part of your computer engineering education. I also hope you have a good time doing it.
Finally, I have been asked by the University to add these three items to the Course Descriptor: