(Latest Revision -- August 08, 2012)
[08/08/2012: Initial Revisions]
for Operating Systems I: CS 3750
"An elephant is a mouse with an operating system."
TERM: Fall 2012
CLASS INFO FROM SCHEDULE:
40454 CS 3750 001 Operating Systems I Lec 3.0 TR 12:30P-01:15P P-114
40455 CS 3750 002 Operating Systems I Lab 0.0 TR 01:16P-01:45P P-114
INSTRUCTOR: John Sarraille, Professor of Computer Science
Professional Schools Building (aka: Demergasso-Bava Hall), Cal State Stanislaus
OFFICE HOURS: Tu 09:30-11:30, W 10:00-13:00; or by appointment
(The first day of scheduled office hours is Tuesday, Aug 28, 2012 and the last
is Wednesday, Dec 05, 2012.)
It is important that you be adequately prepared for taking this course, CS
3750. Check with me if you have not passed both:
- Data Structures + Algorithms (CS 3100), or the equivalent,
- Computer Organization (CS 3740), or the equivalent.
The main aim of this course is for you to develop an understanding of
important concepts and techniques involved in the design, implementation,
and use of computer operating systems.
Some specific goals are to learn about what an operating system does, about
sequential processes, the control of concurrent processes, memory
management, protection, security, network operating systems, and truly
distributed operating systems.
Other aims of this course include developing programming skills and learning
to program cooperating concurrent processes.
Operating Systems Concepts, Eighth Edition
; written by Abraham Silberschatz, Peter Galvin, and Greg Gagne;
published by John Wiley & Sons, Inc;
Learning the Unix Operating System (5th edition);
by Jerry Peek, Grace Todino-Gonguet and John Strang;
published by O'Reilly and Associates, 2001;
You will probably want a textbook on C++ as a reference while doing
programming problems. Feel free to use any book on C++ that you like. Speak
with me if using C++ is a problem for you.
EXAMPLES OF ACCEPTABLE C++ REFERENCE TEXTS:
I strongly recommend that you read the Silberschatz book - all of it.
Operating Systems is a big area, and you have to do a lot of reading to get an
adequate background in the subject. I expect to discuss material in chapters
1-17 in class, giving special attention to chapters 6-9, which deal with the
areas of process control and memory management. The material on distributed
systems has special relevance for the future of operating systems.
BASIC INFORMATION ABOUT CLASS SESSIONS:
For technical reasons, students in this class are required to sign up
separately for a lecture section and a lab section, and a typical CSU
Stanislaus Schedule of Classes indicates that lecture and lab occur on
different days or times. In actual fact, I don't run the class that way.
There may be some activities that require us to meet in the
CS department laboratory (P-288)
The dates of such sessions, if any, will be announced later in class and
inserted into the
CS 3750 class schedule.
TESTS & GRADING:
The course has three main components:
In determining your grade, normally your average score on the concurrent
programming assignments will receive a weight of 40%, and your average on the
tests a weight of 60%.
- Concurrent programs, and
There will be:
Generally homework will be a combination of problems from the textbook and
assignments to write small essays. Tests will cover the reading and lectures.
- Three written homework assignments,
- Two concurrent programming assignments,
- Three tests, and
- A mandatory comprehensive final exam.
By default, the three tests and the final are each worth 15% of your grade.
If your score on the final is higher than your minimum test score, I will
shift some of the weight from your lowest-score test to the final. On the
other hand, if your score on the final is lower than your lowest test score
it counts 15% of your grade.
An exception to the foregoing rules is that you are not allowed to pass the
course if you receive a failing average score on the programming or test
LATE ASSIGNMENTS AND TEST DATES:
I will assess a
penalty of 10% credit per calendar day
(including holidays and weekends)
on late concurrent programming assignments.
I will not accept concurrent programming assignments late more
than five days.
We can have class discussions about test dates and due dates. I may be
willing to change some of these dates. If you want a change to a date in the
schedule, please ask me about it (in class, preferably) as soon as possible -
say, at least a week or two ahead of the current schedule date. (It's usually
a good idea for class members to try to work out some consensus before
bringing the subject up with me.)
If you cannot finish an assignment on time, please turn in whatever you
have done. It may be possible to get up to about half credit on
an unfinished programming assignment, depending on the quality of the work and
the circumstances. Also, if you turn something in, then I get information
that helps me know what kind of help you may need.
To "survive" in a class like this, you may need to put aside foolish pride,
stubbornness, and/or shyness. If you find yourself unable to make progress on
some aspect of an assignment, seek help from me promptly. You may speak to me
after class or during my office hours. You may send me a message by e-mail.
You are entitled to get help this way. Please don't subvert your chances of
success by continuing to 'spin your wheels' until it is too late.
I hope to be accessible and helpful to you during this course. I want you to
get as much as possible out of it.
Remember, we are a team and you are a key player. Read everything I assign
ASAP, and read with care. Read difficult material more than once! Attend all
classes. Pay close attention. Take notes. Review your notes before each
class. Get started on assignments early. Do a little each day, and bring
your questions and problems concerning these assignments to class each day.
Finish assignments and reading on time. Do what you can to keep class
discussion lively and to the point. Reply to questions. Ask questions and
make remarks if you feel you have something to add, or if you feel something
needs to be explained better.
RESPONSIBILITY FOR YOUR OWN WORK:
Somtimes it can be difficult for the student to figure out the difference
between 'cheating' and 'working smart.' Here is some guidance:
Assignments: When your purpose is to clarify the meaning of a question
or to reach an understanding of program specifications, you may discuss
homework and programming assignments with other people, including your
classmates, as much as you like. You may also freely discuss the relative
merits of various general approaches to designing and engineering solutions.
You are permitted to use algorithms or segments of code from
You are permitted to share such material, as described in 1-3 above, with
other members of this class.
- any printed material available for student check-out in our library,
- our course text, or
- any programming textbooks to which you have access.
You may ask me for help and hints on assignments. I prefer that you ask
questions in class, so that everyone has a chance to benefit from the
On the other hand,
you may not give other members of this class programming code
that you composed (made up). You may not discuss or give away any
specifics of answers to homework problems.
You may not accept program code or accept help from any source that is
not specifically listed above as permitted.
Tests: You must write your tests with no discussion or help from
anyone. The one exception is that you are allowed to come forward and ask me
to clarify the meaning of a test question, if you wish. It will be up to me
to decide how to answer, or whether to answer at all. I will tell the class
any new information that arises from such an exchange.
Penalties: If there is compelling evidence that
an assignment or test was not done according to the above criteria, I will
NETWORK AVAILABILITY OF COURSE MATERIALS:
I will make course documents, assignments, supplements, and so on available on
the world wide web. To access the on-line CS 3750 materials, you can open the
There is also a miscellaneous collection of information that you may want to
use from time to time. It is located here:
Each of you is supposed to have an account that gives you access to all the
Computer Science Department Lab computers. Most of the computers share a
networked file system, and you get the same home directory, regardless of
which which one you log into.
If you don't seem to have access to those computers, then let me know right
away, preferably by filling out and submitting this
Otherwise send me an e-mail or give me a piece of paper containing the
answers to the questions on the
Most students who take CS 3750 are already familiar with how to use CS
Computer Lab workstations to develop C++ programs, and how to e-mail me
source code and test scripts. If you want to learn or brush-up on these
skills, please login to one of the CS workstations and complete the
"Hello World" tutorial.
If you have any problems, let me know and I'll help you.
The CS computers are located in the Computer Science Lab:
P-288 is in the Professional Schools Building (aka:
Demergasso-Bava Hall), in the extreme northwest corner of the north
You will have to do some programming using a pthreads package. When the
time comes to start this work, I'll set you up with what you need.
Generally, CS Department workstations are available for access 7 days a week
and 24 hours per day. However campus computer labs do not remain open at all
hours. Therefore sometimes network connections are the only means available
for connecting. See the section below entitled "INTERNET CONNECTIONS" for
more information. Also see the course document entitled
P-288 will be open basically mid-morning until about 5:00 p.m.. During these
times, you can be physically present in the CS Department Lab while using a
department computer. This can be very beneficial because you then have the
opportunity to work and communicate with fellow students and members of the
staff and faculty.
Due to budgetary constraints beyond our control, the hours during which
P-288 is open are subject to change on short notice. Please check the
postings of the lab hours at the entrance to the lab, in the "message of
the day" that is printed on your screen when you log on to your CS computer
check on the web.
Incidentally, the CS Department often seeks volunteers and work-study
students to help keep the lab open longer hours. For further information,
ask our system administrator, Julie Gorman:
P-288C, (209) 667-3273,
You can access many CS Department Lab computers via an ssh or sftp
connection from anywhere on the Internet. When the CS Lab is closed, you
may wish to login from a host on the campus local area network, such as
those in the
P-107, P-120, L-125 and L-145. Generally those labs are open during the
same hours that the campus library is open. Please check postings at the
labs or ask lab personnel in order to get further information about lab
hours. Lab assistants should be able to show you how to establish ssh or
sftp connections to a CS Department workstation.
You may want to purchase Internet connectivity. This is not a
requirement and not necessary for success, but it can be a great
time-saver and a convenience once you have gotten past the hurdle of
setting everything up.
There are several Internet service providers (ISP's) that serve this area.
Chances are that members of the class can make good recommendations. We can
devote some time to this topic in class.
One can find many ISP's by doing a web search. ISP's also advertise in the
yellow pages and in newspapers.
If you get an Internet connection, make sure you get remote login
(ssh) and file transfer (sftp) software. This will allow you to log
in from home to your computer account at the college and also transfer
files back and forth. For more information about this, read the
remote login and file transfer help sheet.
For additional information, ask me or the CS Lab Administrator, Julie Gorman.