CSC 252

Computer Organization

Spring 2010

The term Computer Systems refers to the underlying machinery, both hardware and software, required to run computer applications. Computer Organization 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 computer arithmetic; 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.

Instructor:

Sandhya Dwarkadas
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.

TA:

Bryan Jacobs
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.

Prerequisites:

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).

Course textbook:

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.

Other references:

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.