The term Computer Systems refers to the underlying machinery,
both hardware and software, required to run computer applications.
is the study of how the various components of computer systems fit together
and interact. This course will focus in particular on the interaction of
computer architecture (high-level hardware design) with compilers and
operating systems. Topics to be covered include: data representation and
assembly language, instruction-set design, and assembly-level computer
architecture; processor design and logical building blocks;
performance measurement and optimization; the memory hierarchy,
including I/O and devices; virtual memory; storage management;
and interrupts, signals, and process control.
Across all these areas we will focus on design tradeoffs and on
implications for system performance.
Class time: 3:25-4:40 p.m., Tuesdays and Thursdays.
Class location: CSB 601.
e-mail: sandhya at cs
Office: CSB 717, 275-5647
Office hours by appointment, but don't be afraid to drop by. If
you want to be sure I'm in my office, use e-mail to contact me.
e-mail: bjacobs2 at u
Office: Majors Lab
Office hours: 5-6 p.m. Wednesday and Thursday
Questions and Answers
E-mail is best. Please use the class DISCUSSION BOARD for questions of general interest.
Also make sure to subscribe to the discussion board ---
I will post answers of general interest there
(which may contain hints for the assignments).
It is also a great way to share information
(other than verbatim solutions) among yourselves.
Students must complete CSC 172 and MTH 150, or their equivalents, before enrolling in CSC 252. Completion of CSC 173 is recommended but not required. If you are unsure of your background, contact the professor.
CSC 252 is in turn a prerequisite for all further courses in Systems, including CSC 255 (Advanced Programming Systems), CSC 256 (Operating Systems), CSC 257 (Networks), and CSC 258 (Parallel and Distributed Systems).
The textbook for the course is Bryant and O'Hallaron's
Computer Systems: A Programmer's Perspective [Prentice Hall, 2003]. Copies are available from the River Campus bookstore or online. Two copies have also been placed on reserve at Carlson library.
A new version will be out shortly --- if there is any supplemental material
I use, I will make sure there is a way for you to get a copy.
The textbook includes a variety of practice exercises, interspersed with the rest of the material. You should plan to do these exercises as you go along, and to check your answers against the solutions in the back of the book.
Computer Organization: The Hardware/Software Interface, third edition,
by Patterson and Hennessy.
Morgan Kaufmann, 2005.
This is the newest edition of the text used prior to 2002. It’s an
Computer Architecture: A Quantitative Approach,
fourth edition, by Hennessy and Patterson.
Morgan Kaufmann, 2007.
The graduate-level text by the authors of the previous text.
Has a lot more detail on many of the subjects we’ll be covering.
Structured Computer Organization,
by Andrew S. Tanenbaum.
Prentice Hall, 2006.
Organized explicitly around layers of virtual machines.
Computer Organization and Architecture: Designing for Performance,
by William Stallings.
Prentice Hall, 2006.
Another popular text.
Assignments and Grading
There will be about approximately seven programming
assignments, and two exams.
Most will be written in C, but several will require knowledge of assembly
language as well. All will be done under Linux.
The programming projects are bound to be
time-consuming, with the idea that you learn from the experience,
so be sure to start on them as soon as they are handed out.
There will also be occasional in-class quizzes and additional
(non-programming) homeworks. Class participation is encouraged.
Your grade will be based on a combination of the assignments and two
exams (midterm and final), with a tentative
division being 50% for the programming assignments and
and 50% for the two exams.
Honor Code Policy:
For homeworks and programming assignments,
students are encouraged to consult each other, the TA, the
instructor, or anyone else for that matter. However, the assistance
offered or accepted should not go beyond a discussion of the problem
and a sketch of a solution. You can use the following guideline:
when it comes time for you to write your program or your homework
paper, do not use any written material from the discussion. If you
can reconstruct the discussion and complete the solution on your own,
then you have learned the material (and that is the objective of this
course!). For team projects, you should make sure
to identify division of labor in your README.
While projects will generally be graded as a team rather than separately
for each individual, corrective action could be taken.
Late homework and absences from exams:
Late assignments will have 10% of the maximum score deducted for each
24-hour period after the due date that the assignment is late (assignments
may be turned in only up to a maximum of 3 days late, after which they will
not be accepted), except under extenuating circumstances.
Examinations will be given at alternate times only with appropriately
documented medical excuses.