(Latest Revision -- February 27, 2017)
[2017/02/27: Modified office hours]
[2017/01/25: Initial Revisions]
Course Description
for Operating Systems I: CS 3750
"An elephant is a mouse with an operating system."
TERM: Spring 2017
CLASS INFO FROM SCHEDULE:
20540 CS 3750 001 Operating Systems I Lec 3.0 MW 14:00-14:50 P-101
20541 CS 3750 002 Operating Systems I Lab 0.0 R 14:00-14:50 P-101
INSTRUCTOR: John Sarraille, Professor of Computer Science
OFFICE:
P-286,
Professional Schools Building (also known as Demergasso-Bava Hall), Cal State Stanislaus
OFFICE HOURS:
- Mondays 11:00-13:00
- Tuesdays 12:30-13:30
- Thursdays 12:30-13:30, 15:00-16:00
- or ask me for an appointment at a time that works for you
(The first day of scheduled office hours is Monday, January 30, 2017, and
the last is Wednesday, May 17, 2017.)
E-MAIL:
john@ishi.csustan.edu
PROFESSOR SARRAILLE'S HOMEPAGE:
http://www.cs.csustan.edu/~john/js.html
CS 3750 HOMEPAGE:
http://www.cs.csustan.edu/~john/Classes/CS3750/
PREREQUISITES:
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,
and
- Computer Organization (CS 3740), or the equivalent.
COURSE OBJECTIVES:
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.
REQUIRED TEXT:
Silberschatz:
Operating Systems Concepts, Ninth Edition
; written by Abraham Silberschatz, Peter Galvin, and Greg Gagne;
published by John Wiley & Sons, Inc;
ISBN-13: 978-1118063330
RECOMMENDED TEXT:
Peek:
Learning the Unix Operating System (5th edition);
by Jerry Peek, Grace Todino-Gonguet and John Strang;
published by O'Reilly and Associates, 2001;
ISBN 9780596002619
RECOMMENDED READING:
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:
COURSE COVERAGE:
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-13 in class, giving special attention to chapters 5 and 7-9, which deal
with the areas of process control and memory management. I'll discuss
more material if time allows.
INFORMATION ABOUT CLASS SESSIONS (lecture vs lab):
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 two main components:
- Tests, and
- Concurrent programs
In determining your grade, normally your average score on the concurrent
programming assignments will receive a weight of 20%, and your average on the
tests a weight of 80%. I'll give you problems you can work on to help you
study for tests. The homeworks won't count toward your grade, and I won't
collect them. However I'll go over the answers as part of the preparation
for tests.
There will be:
- Homework assignments followed by short quizzes every week or two,
- Two concurrent programming assignments, and
- A mandatory comprehensive final exam.
Generally homework will be a combination of problems from the textbook and
assignments to write small essays. Quizzes will cover the reading
and lectures.
By default, the quizzes combined will count for 50% of your grade
and the final will be worth 30%. If your scores on these tests are uneven,
I'll see about giving more weight to what you did better.
An exception to the foregoing rules is that, if you have a failing
average on the tests overall - after all the adjustments I'm willing
to make - then I won't allow you to pass the course, regardless of
how good your grades are on the programming assignments.
LATE ASSIGNMENTS AND TEST DATES:
When you sign up for this course, and when you remain in this course,
you have agreed to be available during all the class meeting times
and the final exam time. You have also agreed to follow all
the course rules and guidelines. Therefore, I will ordinarily not grant
requests to change the way the course is conducted. For example,
I don't ordinarily give make-up tests to individual students, or allow
individual students to take tests before or after the rest of the class.
Having said that, it is possible that there could be a compelling reason why I
should make a special accommodation for you. If it has to do with a
disability, you should probably discuss it with someone in the
Disability Resource Center. You can also discuss the matter
with me, if that seems like the more appropriate option, and I'll do my best
to make the right decision or referral.
Get started early on assignments. That way, if you run into difficulty, you
can seek help in class and/or office hours in a timely fashion.
I will assess a
late penalty of 10% credit per calendar day
(including holidays and weekends) on programming assignments turned in between
one and five days late.
I will not accept programming assignments late
more than 5 days.
We can have class discussions about which dates the class will take quizzes,
and which dates the programs will be due. I may be willing to change
some of these dates. If you want a change in the schedule, please bring
this up (in class, preferably) as soon as possible, and not
at the last minute. (It's usually a good idea for class members
to try to work out some consensus before bringing the subject up with me.)
Help:
If you find yourself in difficulty with some aspect of an assignment,
seek help from me promptly. Maybe I can clear things up
if you ask me a question in class. Other students may benefit from
hearing the discussion. 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. Office visits and such are a normal part
of a college education. Whatever you do, please don't subvert
your chances of success by continuing to spin your wheels
when you are stuck in a rut. To get through a class like this
successfully, you may have to get over foolish pride, stubbornness,
and/or shyness.
When things take a bad turn:
If you cannot finish a programming assignment on time,
do damage control:
- On the due date, turn in whatever you have done on the assignment
so far.
- Then, in the next five days, do all you can to finish up the
assignment, including getting all the help you can from me.
- If you finish the assignment before the last late day
(the fifth day after the due date), then turn in the assignment
on the day you finish it.
- If you are still not completely finished with the assignment
on the last late day (the fifth day after the due date),
then turn in whatever you have done on that fifth day.
Under those circumstances, I'll try to give you what credit I can for your
work.
PARTICIPATION:
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 that you are a member of a class, a group, a team.
People intentionally designed the university education
to be a group activity. If you scrunch down in your seat and sew your
mouth shut, you make your education and the education of the other
students more difficult. Don't be worried about seeming ignorant,
because we are all lacking in education. A college education is self-help
for ignorant people, and that includes the instructors, by the way.
To do well in the class, and to help the rest of the class, read everything
I assign as soon as possible, and read with care. Read difficult material
more than once! Attend all classes. Pay close attention. Take notes - yes,
write things down on paper, or key into a computer.
Studies show
that people who write
notes learn better. It has to do with the actual activity of writing
while listening and thinking. 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:
Sometimes it can be difficult for the student to figure out the difference
between 'cheating' and 'working smart.' Here is some guidance:
Programming Assignments:
You may be assigned to write a program individually,
or as a member of a team of, say, two or three students. In the following
discussion, I'll refer to your team, with the understanding
that it could consist of just you alone.
If you discuss your programming assignment with someone on your team,
you can discuss any aspect of it at all. If you discuss it with me
or a tutor employed by the university to help with this class, then you
can discuss whatever aspects I or the tutor allow. When you discuss your
programming assignments with anybody else, the rules are very
different. In that case, you must limit the discussion to:
- clarifying the meaning of the assignment and its
specifications, and
- determining the relative merits of different approaches
to designing and engineering solutions.
In your programming assignment solutions,
you may incoporate algorithms or segments of code from:
- 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 share such material, as described in 1-3 above, with any
members of this class.
You may ask me for help and hints on programming assignments.
If there is a class tutor you may ask the tutor for help and
hints on programming assignments.
When feasible, I prefer that you ask questions in class, so that
everyone in the group has a chance to benefit from the discussion
that takes place.
On the other hand,
- You must not give or accept any other kind of help on programming
assignments.
- Except for using code as described in 1-3 above, and except for
whatever help you get from me or an approved tutor, your team
must write all the code for a programming assignment
all by itself.
- You must not allow any part of a solution you write for
a programming assignment to be shared with members of the class
who are not on your team, or allow such material to be communicated
to you.
- You must not allow printouts of your code to be left where people
not on your team could get access to them, or allow people not on your
team to see your code by looking at your files, your computer screen,
or other media.
Homework: Since the homework is not graded, you are free to discuss it
with others to the extent you want. To get the most out of it, you should
probably do a lot of it or most of it by yourself, but you'll have to
be the judge of that. We'll go over all the answers in class,
before you get any related questions on any quizzes.
Tests: You must write your quizzes and final exam 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.
Academic Dishonesty:
If caught cheating, expect to be dealt with to the
full extent allowed under University policy. Cheating degrades the
integrity and the core values of our shared educational system.
There are always better alternatives. Be open to them.
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
URL:
http://www.cs.csustan.edu/~john/Classes/CS3750/
There is also a miscellaneous collection of information that you may want to
use from time to time. It is located here:
http://www.cs.csustan.edu/~john/Classes/General_Info/
COMPUTER EQUIPMENT:
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.
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.
P-288 is in the Professional Schools Building (aka:
Demergasso-Bava Hall), in the extreme northwest corner of the second
floor of the north wing.
You will have to do some programming and compiling
on the CS Lab machines, using a special pthreads software package that
is installed on those machines. 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
loginDirections.
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
account, or
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, Deep Gill:
P-288C,
(209) 667-3273,
dgill@cs.csustan.edu.
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
University open labs.
Generally those labs are open during the
same hours that the campus library is open. Please check postings online, or
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'll need to know your
login name and password.
INTERNET CONNECTIONS:
You may want to obtain Internet connectivity for your residence.
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 (ISPs) that serve this area.
Chances are that members of the class can make good recommendations. If you
like, we can devote some time to this topic in class.
One can find many ISPs by doing a web search. ISPs 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, Deep Gill:
P-288C,
(209) 667-3273,
dgill@cs.csustan.edu.