CMSC 311: Computer Organization
Fall 2009
William A. Arbaugh
Section 0101

1.	Organization
a.	Instructor:
William A. Arbaugh
AVW 4137
waa at cs
Mon/Wed: 12:30 pm – 1:30 pm and by appointment

b.	TAs: 
Sandro Fouche
sandro at cs
Tu 2:00pm – 3:30pm, Wed 3:30pm - 5:00pm AVW 1112

Brianna Satinoff
bsonrisa at cs
Mon/Thu 9:30am – 11:00am AVW 4140

Jim Stevens
jims at cs
Mon/Thu 11:00am – 12:30pm AVW 4140

c.	Class Time:
Mon/Wed 2:00pm – 3:15pm in CSI 1115

Web page:

2.	Objectives
The aim of CMSC 311 is to help you become a better programmer by teaching you the basics concepts underlying all computer systems. This class will teach you what really happens when your programs run, so that when things go wrong (as they always do) you will have the intellectual tools to solve the problems.

Here are some of the realities of systems programming that we will be dealing with in this class:
a.	Int’s are not integers. Float’s are not reals. Our finite representation of numbers has significant limitations, and because of these limitations we sometimes have to think in terms of bit-level representations.
b.	You must know assembly language. Even if you never write programs in assembly, the behavior of a program cannot be understood sometimes purely based on the abstraction of a high-level language. Further, understanding the effects of bugs requires familiarity with the same machine-level model.
c.	Memory matters. Computer memory is not unbounded. It must be allocated and managed. Memory referencing errors are especially pernicious. An erroneous updating of one object can cause a change in some logically unrelated object. Also, the combination of caching and virtual memory provides the functionality of a uniform unbounded address space, but not the performance.
d.	There is more to performance than asymptotic complexity. Constant factors also matter. There are systematic ways to evaluate and improve system performance.
e.	Computers do more than execute instructions. They also need to get data in and out and they interact with other systems over networks.

3.	Textbook
The primary textbook is:
	Randal E. Bryant and David R. O’Halloran, Computer Systems: A Programmer’s Perspective, Prentice Hall, 2003.

A recommended textbook is:
	Brian W. Kernigham and Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1988.

4.	Course Assignments and Grades
Attendance will not be taken at lectures. However, you are responsible for all material presented in the classroom. Occasionally, “pop quizzes” will be given in class. The scores on these quizzes count towards your class participation grade.

The course will have six graded laboratory assignments. These labs along with two in-class exams, a class participation grade, and a final compose your entire grade as follows:
•	The six labs count as 60% of your final grade. Each lab is weighted equally, i.e. each lab is worth 10% of your final grade.
•	The in-class exams count as 20% of your final grade, e.g. each in-class exam is worth 10% of your final grade.
•	The final exam is worth 15% of your final grade.
•	Class participation counts towards 5% of your final grade. This grade will be based on “pop” quizzes and your participation in the class forum helping others.

You may appeal your grade up to seven calendar days from the date your grade was posted. For a lab, you should first appeal to the TA responsible for grading that lab. If you are not satisfied after your discussions with the TA, you may appeal to Prof. Arbaugh. Appeals on exam grades should be made directly to Prof. Arbaugh. Please note: grades will only be changed if an error has been made in the grading. Please also read

Late assignments will be docked 20% each day for the first two days. Assignments more than 2 days late will not be accepted, unless you have arranged an extension in advance with Prof. Arbaugh. Extensions can only be given by Prof. Arbaugh and will only be given in extenuating circumstances. Even if you cannot complete the assignment- turn-in your work. Partial credit may be given if you made progress on the problem.

Each lab assignment must be the sole work of the student. Automatic cheat checkers will closely monitor assignments, and students may be asked to explain any suspicious similarities. The following are guidelines on what collaboration is authorized and what is not:

	What is cheating?
o	Sharing code or other electronic files: either by copying, retyping, looking at, or supplying a copy of a file.
o	Sharing written assignments: Looking at, copying, or supplying an assignment.

What is not cheating?
o	Clarifying ambiguities or vague points in class handouts or textbooks.
o	Helping others use the computer systems, networks, compilers, debuggers, profilers, or other system facilities.
o	Helping others with high-level design issues.
o	Helping others debug their code.

All cheating will be reported as academic dishonesty and may result in the student receiving a XF grade for the class.

5.0 Excused Absences
 Students claiming an excused absence must apply in writing and furnish documentary support (such as from a health care professional who treated the student) for any assertion that the absence qualifies as an excused absence. The support should explicitly indicate the dates or times the student was incapacitated due to illness. Self-documentation of illness is not itself sufficient support to excuse the absence.  An instructor is not under obligation to offer a substitute assignment or to give a student a make-up assessment unless the failure to perform was due to an excused absence. An excused absence for an individual typically does not translate into an extension for team deliverables on a project.

6.0 Academic Accommodations
 Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services (DSS) within the first two weeks of the semester.