From sbloch@adl15.adelphi.edu Mon Jan 25 15:34:03 1999
Received: from adl15.adelphi.edu by icculus.adelphi.edu (8.8.8/1.1.19.2/19Nov98-1041AM)
	id PAA14526; Mon, 25 Jan 1999 15:34:03 -0500 (EST)
Received: by adl15.adelphi.edu; id OAA02699; Mon, 25 Jan 1999 14:37:16 -0500 (EST)
From: Stephen Bloch <sbloch@adl15.adelphi.edu>
Message-Id: <199901251937.OAA02699@adl15.adelphi.edu>
Subject: no subject (file transmission)
To: sbloch@icculus.adelphi.edu
Date: Mon, 25 Jan 1999 14:37:16 -0500 (EST)
X-Mailer: ELM [version 2.4ME+ PL20 (25)]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Status: RO

\documentclass[12pt]{article}
\usepackage{fullpage}

\newcommand{\tm}{\mbox{\sc tm}}

\begin{document}

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

\author{Dr. Stephen Bloch \\
office 112 Alumn\ae\ Hall \\
phone 877-4483 \\
email \texttt{sbloch@adelphi.edu} \\
Web page \texttt{http://www.adelphi.edu/sbloch/} \\
Class Web page \texttt{http://www.adelphi.edu/sbloch/class/371/} \\
office hours TBA}

\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 had
a year or two of programming experience in a high-level language
and have done some programming in assembler language, preferably MIPS
assembler language.
In this semester we'll shift our focus down \emph{below} assembler and
even machine language, and learn how wires, transistors, and gates are
combined in a computer to implement a machine language.  We'll discuss
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{Textbook}
This course will involve reading assignments and homework exercises
from the textbook
\emph{Computer Organization \& Design: the Hardware/Software Interface},
the second edition, by David Patterson and John Hennessy.  
This book is required.
An errata sheet for the textbook is available on-line, as are a number
of ``Web extensions'' to the textbook provided by the authors.
I may also give out other reading assignments by email or in journals.

I plan to cover chapters 1--6, and Appendices B and C of the textbook.
This is about 675 pages, so you need to read about 25 pages per lecture,
on average.
Chapters 1 and 3 should be largely review, so we'll go through them quickly.  
If we have enough time, I'd like to cover parts of Chapters 7 and 9 as well.

\section{Prerequisites}
I expect that everyone in the class has taken CSC 174 (Computer
Organization and Assembly Language) or an
equivalent course dedicated largely to machine and assembly languages.

\section{Grading}
As I write this (shortly before classes start), I envision five
homework assignments and a final exam, each weighted equally towards the
semester grade.
If we get behind schedule, we'll
actually do fewer assignments than this.  
I'll try to keep an up-to-date schedule on my Web page.

% 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 hardware
assignments will be accepted late, with a penalty of 1/5 per 24 hours
or portion thereof after they're due.  An hour late is 20\% off, 25
hours late is 40\% off, \emph{etc.}  No matter how late you are,
however, it's better (both for your education and for your grade)
to do the assignment than not to do it at all.

The majority of assignments in this course will be either on paper or
"hands-on", to be implemented with chips, wires, \emph{etc.}

\section{Ethics}
Most of the assignments in this class are to be done individually.  You
may \emph{discuss general approaches} to a problem with classmates, but
you \emph{may not copy} large pieces of programs or homework solutions.
If you do, \emph{all} the students involved will be penalized.

All work on an exam must be entirely the work of the one
person whose name is at the top of the page.  If I have evidence that
one student copied from another on an exam, \emph{both} students will be
penalized; see above.

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

I expect you to have read the reading assignments
\emph{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.  \textbf{Please read ahead!}

\begin{tabbing}
{\bf Date(s) \hskip20pt} \=
{\bf Assignment} \=
{\bf Reading \hskip10pt} \=
{\bf Subject} \kill
{\bf Date(s)} \>
{\hskip-20pt \bf Assignment} \>
{\bf Reading} \>
{\hskip40pt \bf Lecture Subject} \\
%
26 Jan \> \> \> Administrivia, ``what is computer architecture?'' \\
28 Jan \> \> 1 \> Levels of Abstraction and Parts of a Computer \\
2 Feb \> HW1 \> 2--2.4 \> How fast is this computer? \\
4 Feb \> \> 2.5--2.10 \> Ways to measure performance \\
5 Feb \> \> \> Last day to add courses \\
9 Feb \> \> \> Basic electricity \\
11 Feb \> HW1 due; HW2 \> \> Using the Lab \\
16 Feb \> \> 3--3.9 \> Review MIPS assembly language \\
18 Feb \> \> 3.10--3.16 \> Examples and history \\
19 Feb \> \> \> Last day to drop courses \\
23 Feb \> \> B--B.3 \> Boolean logic and gates \\
25 Feb \> \> \> Size and depth of combinational circuits \\
2 Mar \> HW2 due; HW3 \> \> Lab work; catch up \\
4 Mar \> \> 4--4.4 \> Implementing arithmetic and logic with gates \\ 
9 Mar \> \> 4.5 \> An ALU to perform different operations \\
11 Mar \> \> 4.6--4.7 \> Multiplication and division \\
23 Mar \> \> 4.8--4.12 \> Conclusions about Computer Arithmetic \\
25 Mar \> HW3 due \> \> Lab work; catch up \\
30 Mar,1 Apr \> \> \> Spring break --- no classes \\
5 Apr \> \> \> Last day to withdraw from classes \\
6 Apr \> HW4 \> B.4--B.5 \> Circuits involving time \\ 
8 Apr \> \> B.6--B.9 \> More about sequential circuits \\
13 Apr \> \> \> Examples with sequential circuits \\
% come back to multiplication at this point?
15 Apr \> \> 5--5.3 \> Designing a whole processor \\
20 Apr \> HW4 due \> 5.4 \> Another example \\
22 Apr \> HW5 \> 5.5 \> Microprogramming \\
27 Apr \> \> 5.6--5.10 \> Conclusions about processor design \\
29 Apr \> \> 6--6.2 \> Overview of pipelining \\
4 May \> \> 6.3--6.6 \> Implementing pipelining \\
6 May \> HW5 due \> 7? 8? 9? \> Conclusions; review for final \\
11 May \> \> \> 3:30 -- 5:30, Final Exam % \\
\end{tabbing}

\end{document}

			Homework assignments

HW1: on performance (chap. 2)
HW2: on Boolean formulae, combinational circuits, design, depth & size
Midterm: a good deal on arithmetic (chap. 4)
HW3: on sequential circuits (App. B)
HW4: on processor design (chap. 5)
HW5: on microprogramming and pipelines (chaps. 5-6)
Final: a good deal on pipelines and memory hierarchy (chaps. 6,7)

Wait: I want to throw in some hardware assignments.  For example, a
multi-bit ripple-carry adder, with or without a clock; a register with
store, reset, complement, and increment operations; etc.  These can't
happen until mid-February, at least...  Let's say HW2 includes an
unclocked ripple-carry adder, along with paper problems; HW3 turns it
into a clocked register with reset, store, complement, add, and subtract
operations; and HW4 is some kind of finite-state controller.  This will
require an hour at some point before mid-February on how to use the
equipment.





