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

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

\begin{document}

\title{Computer Science 453 \\
Operating Systems}

\author{Dr. Stephen Bloch \\
office 112 Alumn\ae\ Hall \\
phone 877-4483 \\
email \texttt{sbloch@boethius.adelphi.edu} \\
Web page \texttt{http://www.adelphi.edu/\~{}sbloch/} \\
Class Web page \texttt{http://www.adelphi.edu/\~{}sbloch/class/453/} \\
office hours TTh 4:20--5:00 PM, and most of the day Monday and Wednesday}

\maketitle

\section{Subject Matter}
This course covers the software that runs on our computers all the
time and makes them usable, both by humans and by application programs.
This would be reasonably simple if computers only did one thing at a
time, but for the past several decades most computers have 
been designed to do at least a handful if not dozens or hundreds of
unrelated tasks at once.  The operating system is charged with giving
each of these tasks the memory, CPU time, disk space, network bandwidth,
\emph{etc.} that it needs, without allowing it to interfere with other
tasks.  We'll examine many of the non-obvious issues that arise in
solving these problems.

\section{Prerequisites}
Students taking this course are expected to understand the basic
concepts of machine language (which processor doesn't matter much), as
one would learn in Systems I (CSC 371).  Students should also
be familiar with data structures such as linked lists, heaps, FIFO and
priority queues, as one would learn in Data Structures (CSC 343).  A
third official prerequisite is Probability (MTH 361), but I don't
anticipate using anything more sophisticated than the notions of mean
and standard deviation.

\section{Text}
The textbook for this course,
\emph{Operating System Concepts}, by Silberschatz and Galvin,
is the new fifth edition of the most popular textbook in the field of
operating systems.
We'll work through 15--20 chapters of it, reading 20--25 pages per
lecture.  \emph{Please keep up on the reading!}

\textbf{You are responsible for everything
in the reading assignments, whether or not I discuss it in a lecture.}
You are also responsible for checking my class Web page at least once a
week or so; I often post assignments, corrections to assignments,
solutions to assignments, \emph{etc.} there.

\section{Grading}
I'll assign a number of homework problems, to be turned in on paper or
by email.  At present I don't foresee any programming assignments.

% 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/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.

% Programs are not abstract works of art,
% they are supposed to run and solve real problems.  So if I get a program
% that doesn't compile or run, or a program that has little or nothing to do
% with the problem I assigned, I will give it a zero, no matter how much
% time you put into it.  Don't bother turning in a program you haven't
% tested yourself.

\section{Ethics}
Most assignments in this course are to be done individually.  I have no
objection to people in the class discussing \emph{general approaches} to
a homework problem, but I expect each individual to write up the details
separately.  If I find two or more students turning in essentially
identical homework (which is easy to detect in a class this small!),
\emph{all} the students involved will be penalized.

All work on the 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.

\pagebreak

\section{Schedule}
This class meets every Tuesday and Thursday from 9:25 to
10:40 AM, 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 \emph{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 reading assignments (usually one chapter per
lecture)
\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!}

% \pagebreak

\begin{tabbing}
{\bf Date(s) \hskip10pt} \=
{\bf Assignment} \=
{\bf Reading \hskip10pt} \=
{\bf Subject} \kill
{\bf Date(s)} \>
{\hskip-15pt \bf Assignment} \>
{\bf Reading} \>
{\hskip40pt \bf Lecture Subject} \\
%
27 Jan \> \> \> Administrivia, ``what is this course about?'' \\
29 Jan \> \> 1 \> History of Operating Systems \\
3 Feb \> \> 2 \> Overview of OS concepts \\
5 Feb \> \> 3 \> More of the same \\
6 Feb \> \> \> Last day to add courses \\
10 Feb \> \> 4 \> Processes \\
12 Feb \> \> \> Inter-process Communication \\
17 Feb \> \> 5 \> CPU scheduling \\
19 Feb \> \> 6 \> Process synchronization \\
20 Feb \> \> \> Last day to drop courses \\
24 Feb \> \> \> Process synchronization, continued \\
26 Feb \> \> 7 \> Deadlocks and \ldots \\
3 Mar \> \> \> How Not to Have Them \\
5 Mar \> \> \> catch up \& review for midterm \\
10 Mar \> \> \> Midterm Exam \\
12 Mar \> \> \> Discuss midterm exam \\
16--22 Mar \> \> \> Spring break --- no classes \\
24 Mar \> \> 8 \> Memory Management \\
26 Mar \> \> \> Paging and Segmentation \\
31 Mar \> \> 9 \> Virtual Memory \\
2 Apr \> \> \> Implementing Virtual Memory \\
3 Apr \> \> \> Last day to withdraw from classes \\
7 Apr \> \> 10 \> What is a file? \\
9 Apr \> \> 11 \> Implementing Files \\
14 Apr \> \> 12 \> I/O devices and drivers \\
16 Apr \> \> 13 \> Secondary storage \\
21 Apr \> \> 15 \> Networking \\
23 Apr \> \> 16 \> Distributed Systems \\
28 Apr \> \> 17 \> Distributed File Systems \\
30 Apr \> \> \> Examples of Distributed File Systems \\
5 May \> \> 19 or 20 \> Protection \& Security \\
7 May \> \> \> catch up and review for final \\
14 May \> \> \> 10:30--12:30, Final Exam % \\
% 18 May \> \> \> Commencement \\
\end{tabbing}
\end{document}
