CSCI 355 Computer Systems and Computer Organization
Fall 2006


Cary G. Gray  
Office: Armerding 114, x5875
Office hours: MWF 9:15–10:20 a.m.
M 2:00-3:00 p.m.
T 3:15–4:00 p.m.
W 2:00–3:45 p.m.

I am typically in my office much more than the posted times, and you are welcome to stop by whenever my door is open. Check with me ahead of time if you want to be sure that I'll be there outside scheduled times.

Class meetings

Armerding 123
MWF 8:00–9:05 a.m.
Final: 10:30 a.m.–12:30 p.m., Thursday, Dec. 14



On-line resources

Additional (and updated) course information will be available at the class page at
http://cs.wheaton.edu/~cgray/csci355/

Texts

Hennessy and Patterson, Computer Organization and Design/3e, Morgan Kaufman, 2004.
Kernighan and Ritchie, The C Programming Language/2e, Prentice-Hall, 1988.
There will be little assigned reading from the latter text, but you will need to have a C (not C++) language and library reference. This book has the advantage of providing both a short tutorial and a compact reference.

Description

CSCI 355 Computer Systems and Computer Organization
Computer architecture, low-level C programming, assembly language, parallel programming. Macro definitions, information encoding, addressing techniques, parameter passing, call frames, optimization, and parallel organization.
Prerequisite: CSCI 231 and either 241 or 242.1

The emphasis in this course is on (a) how the hardware is organized and (b) how the hardware interacts with systems software. We will use the MIPS architecture as our primary example as we look at software for: We will also examine three areas of hardware design that have significant effect on software (especially for performance): In addition, we will compare MIPS with other architectures , to see how things might be different, and we'll end with a look at parallel (multiprocessor) systems.

By the end of this class, you should gain:
  1. familiarity with major issues in hardware architecture and implementation;
  2. understanding of how major software constructs are mapped onto the hardware;
  3. awareness of the main hardware issues that affect software;
  4. a basic grasp of the factors that determine system performances;
  5. familiarity with key ways that parallelism appears in systems; and
  6. some facility at low-level programming, whether in assembly language or C.
Grading.
Your grade will be based on the following:
50% exams
10% participation (including attendance)
40% homework (including programs)
There will be three in-class exams (planned for September 29, October 20 and November 8) in addition to the final. The final exam will be weighted more heavily than the in-class exams. All but the final objective will be measured by exams.

There will be around ten programming assignments and exercises, some in C and others in MIPS assembly language, along with numerous shorter homework problems. The problems will cover all of the objectives; the programs will emphasize the last, while touching on the rest.

Policies

Preparation.
You are expected to read assigned material before each class meeting: what we do in class will assume that you've done the reading. As you read, note anything that you aren't sure about, and bring your questions to class.

Assignments
Programming assignments are scheduled so that you should be able to complete them a day or two before the due date. Plan to complete them early; that way you'll have time to ask questions about them in class, and you'll have time to deal with surprises.

Written homework will be due at the beginning of class, though we may take time to discuss it before it is collected. As with the programs, the due dates are generally set to allow you to attempt the homework a class meeting before it is due. All homework should be neat, clearly labeled, and written on one side only of letter-sized paper; multiple pages should be stapled together.

Be sure you turn in what you have on time: I do not promise to give credit for late assignments.

Academic integrity.
I expect you to conduct yourself honestly in this course. When you submit work, you assert that it is your own. If you use an outside source or receive assistance, acknowledge it. Deliberate misrepresentation will result in no credit for the assignment; a second offense will result in failing the course. All offenses will be reported and are subject to college disciplinary action as well.

Because you are encouraged to work together and provide each other assistance, you do risk inadvertent plagiarism. Be cautious, especially when you ask for or provide assistance. Make sure that you don't let someone else do your work for you, and make sure that you don't do someone else's work. Should you discover that a program in one of the textbooks is similar enough to an assignment to provide a useful starting point, that is fine–if you understand it fully and cite it. In all cases, simply be sure that you acknowledge clearly whatever help you receive.

There are two things that you can do that will eliminate the bulk of the temptations in this area. The first is to avoid procrastination: assignments are given with plenty of time for you to ask questions in class or in my office. The second is to be careful how you ask for help: do not ask other students to tell you the solutions to assigned problems; ask questions to figure out what it is you do not yet understand and in order to understand it. (When giving help, don't be lazy and give away the answers; help your fellow students to learn.)

You are also responsible for ensuring that your work for this course isn't available for others to copy without your permission. You will need to make sure that file and directory permissions are set properly in the lab.

Attendance.
I expect you to be in class, and you are responsible for what happens in class whether you are present or not. If you are sick or must miss because of other school responsibilities, let me know in advance. If there is an emergency, let me know as soon as practical. You must make arrangements for make-up work (including exams) in advance; after-the-fact arrangements will be permitted only for emergencies, and then only with your timely notification and, in the case of illness, confirmation by the Health Center. (You'll do well to think of this as practice for keeping a job. Note that you can reach me by e-mail, and my office phone takes messages at all hours.)

I also expect you to be on time. If you come in late, don't interrupt class, and plan to find out what you've missed from another student after class.

Special circumstances and needs
I will work with you if you have any kind of special need, provided you are responsible in letting me know in time to make appropriate arrangements. Accommodation of learning disabilities requires that they be documented with the registrar's office and that you inform me in time for me to communicate with that office and make the needed arrangements.

Outline

Chapters given below are from Hennessey and Patterson.
  1. Background (ch. 1) 23–25 Aug
  2. How programs get executed 28 Aug–27 Sept
  3. Basic control in hardware (ch. 5) 2–9 Oct
  4. Systems issues: exceptions, interrupts, threads 11-18 Oct
  5. Outside the processor 23 Oct–3 Nov
  6. Parallelism 6 Nov–6 Dec
A more detailed schedule with reading and other assignments will be distributed shortly; updates and additional details will be posted online.


1
The catalog specifies the prerequisite in terms of new courses that you could not have taken. I've interpreted that appropriately in terms of courses that have previously been offered.

This document was translated from LATEX by HEVEA.