\documentstyle[12pt]{article}
% \pagestyle{empty}

%set dimensions of columns, gap between columns, and space between paragraphs
\setlength{\textheight}{8.75in}
\setlength{\columnsep}{2.0pc}
\setlength{\textwidth}{6.8in}
\setlength{\footheight}{0.0in}
\setlength{\topmargin}{0.0in}
\setlength{\headheight}{0.0in}
\setlength{\headsep}{0.0in}
\setlength{\oddsidemargin}{-.19in}
\setlength{\evensidemargin}{-.19in}
\setlength{\parindent}{1pc}

% \setlength{\textwidth}{480pt}
% \setlength{\oddsidemargin}{-15pt}
% \setlength{\evensidemargin}{-15pt}
% \setlength{\topmargin}{0pt}
% \setlength{\textheight}{640pt}
% \setlength{\footskip}{15pt}
% \setlength{\footheight}{15pt}

% \newenvironment{proof}%
% {\relax{\noindent\sc Proof.\ \ }}%
% {\ifhmode\nobreak\qed\par\fi\medskip}

% \newcommand{\forprelim}[1]{#1}
% \newcommand{\forfinal}[1]{\mbox{}}

\begin{document}

\title{Computer Science 371 \\
Systems I: Computer Organization and Architecture}

\author{Dr. Stephen Bloch \\
office 112 Alumn\ae\ Hall \\
phone 877-4483 \\
email {\tt sbloch@panther.adelphi.edu} \\
office hours 11--12 TTh, 1--4 W, or by appointment}

\maketitle

\section{Subject Matter}
This course should be useful for several types of students.
Those who plan to specialize in designing computer hardware can use this
course as a basis for more advanced study;
those primarily interested in writing computer software can make
better-informed decisions about software design; and those
who just want to understand how a computer works can gain this
understanding, along with an appreciation for ``the human story'' of
how people have developed computers to their current state.

I assume, in all three cases, that students have
a year or two of programming experience in a high-level language
and exposure to the basic notions of assembler language.
By the end of the semester, you should have a much more detailed
understanding of assembler language (at least that for the MIPS machine
we'll study), as well as knowing how simple Boolean gates
are combined to perform arithmetic and logical operations, how a
processor carries out multi-step operations, and how pipelining and
hierarchical memory work to enhance computer performance.

\section{Textbooks}
This course will involve reading assignments and homework exercises
from the textbook
{\em Computer Organization \& Design: the Hardware/Software Interface}
by John Hennessy and David Patterson.  This book is required.
I may also give out
other reading assignments by email or in journals.

I hope to cover chapters 1--8, and Appendices A and B, of the textbook.
Chapter 1 should be largely review, chapter 2 is relatively
nontechnical, and we'll probably skip parts of chapters 6 and 8.
I don't intend to treat parallelism (chapter 9) in any depth because
it'll be more fully treated in CSC 372.

\section{Grading}
As I write this (a week before classes start), I envision five homework
assignments, each worth 10\% of the semester grade,
a midterm worth 20\%, and a final exam worth 30\%.
I may change this somewhat as the semester unfolds.

% These numeric grades will be converted to letter grades as follows:
% I'll draw a curve showing the distribution of numeric grades, and look
% for naturally-occurring ``clumps''.  For each clump, especially the
% top and bottom ones, I'll examine some exam and
% homework papers to decide what letter grade seems appropriate.  This
% method corrects for excessively hard or excessively easy assignments
% while not penalizing anybody for having genius classmates.

Exams must be taken at the scheduled time, unless arranged in advance
or prevented by a documented medical or family emergency.  If you have
three or more exams scheduled on the same date, or
a religious holiday that conflicts with an exam or assignment due date,
please notify me in writing within the first two
weeks of the semester in order to receive due consideration.
% (and I'd
% prefer it if you let me know earlier --- you should know within the
% first week of class when all your exams are).
Exams not taken without one of
the above excuses will be recorded with a grade of 0.

Homework and programming
assignments will be accepted late, with a penalty of 1/3 per 24 hours
or portion thereof after they're due.  An hour late is 33\% off, 25
hours late is 67\% off, and after 48 hours don't bother turning it in.
It's still a good idea to do as much of it as you can, however,
because I'll assume on the exams that you've done the homework.

\section{Ethics}
A proven case of cheating or plagiarism will result in a zero for the
assignment, an ``F'' for the course, or even dismissal from the
University, depending on the severity of the case.

All work on an exam must be entirely the work of the one
person whose name is at the top of the page.
For homework assignments, you are permitted (and encouraged) to
discuss how to solve the problem with me or with classmates, but each
student must write the detailed solution separately.
And yes, I can tell the difference between two students
``using the same approach'' and one student copying from another,
especially in a class this size.
 
\section{Schedule}
This class meets every Tuesday and Thursday from 4:30 PM to
5:45 PM, except on University holidays or if I cancel class.

% \subsection{Floating Events}
All dates in the following schedule are tentative, except those fixed
by the University; if some topic listed here as taking one lecture in
fact takes two lectures to cover adequately, or {\em vice versa},
the schedule will shift.

% In no case will an assignment be due earlier than indicated in the
% following schedule, but some may be due later; this will be announced
% in class a reasonable time in advance.  I'll try to keep an updated
% version of this schedule available online.  

I expect you to have read the specified chapters in the textbook
before the lecture that deals with that topic; this way I can
concentrate my time on answering questions and clarifying subtle or
difficult points in the textbook, rather than on reading the textbook
to you, which will bore both of us.  {\bf Please read the textbook!}

\pagebreak
\begin{tabbing}
{\bf Date(s) fnord} \=
{\hskip5pt \bf Assignment \hskip5pt} \=
{\hskip10pt \bf Reading \hskip10pt} \=
{\bf Lecture Subject} \kill
{\bf Date(s)} \>
{\hskip5pt \bf Assignment \hskip5pt} \>
{\hskip10pt \bf Reading \hskip10pt} \>
{\hskip30pt \bf Lecture Subject} \\
%
%
30 Aug \> \> \> Administrivia \& introduction \\
1 Sep \> \> 1 \> What is computer architecture?  Why study it? \\
6 Sep \> \> \> Rosh Hashanah --- no class \\
8 Sep \> \> 2 \> Computer performance \\
13 Sep \> HW1 \> 3.1--3.6 \> The MIPS machine \\
15 Sept \> \> \> Yom Kippur --- no class \\
16 Sept \> \> \> Last day to add classes \\
20--22 Sep \> HW2; HW1 due \> 3, App. A \> The MIPS machine, continued \\
27--29 Sep \> \> App. B \> Digital Logic \\
30 Sep \> \> \> Last day to drop classes or change to P/F option \\
4 Oct \> \> \> Digital Logic, continued \\
6--20 Oct \> HW2 due \> 4 \> Computer Arithmetic \\
25 Oct \> \> \> Midterm exam \\
27 Oct \> HW3 \> 5 \> Controlling the Processor \\
1--3 Nov \> \> \> Controlling the Processor, continued \\
4 Nov \> \> \> Last day to withdraw from classes \\
8--15 Nov \> \> \> Controlling the Processor, continued \\
17--22 Nov \> HW4; HW3 due \> 6 \> Pipelining \\
24 Nov \> \> \> Thanksgiving --- no class \\
29 Nov--1 Dec \> HW5; HW4 due \> 7 \> The Memory Hierarchy \\
6--8 Dec \> \> 8 \> Input and Output \\
13 Dec \> HW5 due \> \> Review for Final Exam \\
15 Dec \> \> \> Final Exam, 3:30--5:30
\end{tabbing}

\end{document}

			Homework assignments

HW1: exercises from chaps. 1--3, e.g. 2.14--2.20

HW2: more exercises from chap. 3 and a short program in MIPS assembler:
say, A.2 (find and print the first 100 prime numbers)

Midterm will contain a lot on computer arithmetic (chap. 4)

HW3: exercises from chap. 5, and programs & analysis

HW4: exercises from chap. 6, and programs & analysis

HW5: exercises from chaps. 7--8, and programs & analysis
