CSCI 6730: Operating Systems (Fall 2002)
Quick Links
Lectures
Readings
Grading Policy
Class Schedule
Programming Assignments
Late Work
Exams
Academic Honesty (important)
Withdrawals and Incompletes
Course Overview
This course will cover the key concepts in modern operating systems as
well as past and current
research in the field. Specifc topics include:
-
process management
-
synchronization mechanisms
-
scheduling strategies
-
deadlock detection/avoidance
-
memory management
-
file systems
-
protection and security
-
transactions
-
distributed systems
Note that this document can be found at http://www.cs.uga.edu/~dkl/6730/Fall02/syllabus.html
Lectures: TTh 9:30-10:45, and W 10:10-11; Miller Plant Science 1102
Final Exam: Tuesday, Dec. 17, 7-10pm
Office: GSRC 219C, 542-9269
Email: dkl@cs.uga.edu
CS 6730 email: cs6730@cs.uga.edu
I am a faculty member in the Computer
Science Department at the University of Georgia. My main areas of research
are parallel and distributed computing and operating systems.
Office Hours: W 8:15-9:45, Th 1:15-2:45, and by appointment
Office hours are for you. Please do not hesitate to come to my office.
Office hours will usually be very busy right before an assignment is due;
if you start the assignments early and come to my office well before they
are due, you have a better chance of avoiding the rush. Due to my busy
schedule, I cannot accept drop-ins outside of office hours.
I will also be available by appointment; please send me email to set
one up. Please note that I will not be able to accept all requests for
appointments, especially around program due dates. If you do wish to see
me outside of office hours, you need to make an appointment. I am more
likely to accept appointments on Tuesdays and Thursdays --- Mondays and
Fridays are my research days.
Finally, please keep in mind that office hours are not a substitute
for missed lectures.
There is one additional rule with regard to office hours: I will not
help any student that is not using some kind of debugger. For example,
if you come in to obtain help with a segmentation fault that you are trying
to debug, and you cannot answer the question "On what line is the program
crashing?", I will not help you. If you are not familiar
with
a debugger, I suggest you learn to use one immediately --- see
the man pages for, say, gdb.
Email: zhenyu@cs.uga.edu
Office Hours: TBA
Prerequisites: CSCI 4730 (Undergraduate Operating Systems)
If you haven't had the prerequisite, you may nonetheless be fine for this
class --- please see me.
The required textbook for the course is Modern Operating Systems
by Tanenbaum, 2nd edition. You will be expected to read any assigned material.
We will not be able to cover all assigned reading in lecture. Please note,
however, that you are responsible for any assigned material.
Specifically,
exam questions covering reading material are fair game.
Note that the 2nd edition is new, so if you happen to have a copy of
edition 1, I believe that it will be possible for you to use it, though
you may need to read a couple of pages from the 2nd edition during the
semester.
Another key part of the class is reading papers from the
OS literature.
The above link is to the reading list; papers may be deleted or added,
and we will not cover all papers. However, you are required to read
any assigned papers. The class schedule page lists when papers are
to be read by.
Class will consist of both the standard instructor-style lectures as well
as discussions and possibly unannounced student presentations.
This means that you must be prepared for every class, having read the book
and/or papers assigned thorougly.
"Lecture" is really a misnomer. Ideally, we will have a discussion as
opposed to me just lecturing. Please do not hesitate to ask questions;
you might think your question is dumb, but more likely, many people are
wondering about the same thing.
Because class participation is vital in this course, you may not skip
class without being excused. If you have more than 3 absences that
are not excused by me, you will fail the class.
Grading
Grades will be assigned on the usual A-F basis. Grading will be absolute;
there will be no "curve". Achieving a 90% will guarantee an "A",
80% a "B", and so on. However, when the final grades are given, it could
be the case, for example, that an 85% gets an "A". Do not confuse this
with a curve, however. If everyone does A work (as I hope), everyone will
get an A. If everyone does C work, everyone will get a C. So that you know
your grade at all times, four fictitious students will be given grades
for each assignment and exam. These students will be named "Min A", "Min
B", etc., indicating the minimum score for each grade.
There will be homework assignments, some programming assignments,
a class project, a midterm, and a final. You will also be graded
on class participation. Approximate weights will be as follows:
-
Homework assignments: 10%
-
Class participation/Quizzes: 10%
-
Programming assignments: 15%
-
Project: 20%
-
Midterm: 20%
-
Final: 25%
Please note that these are tentative. Relative weights of assignments
can change, although I would expect them to end up very close to those
listed above. Also, you will not
receive a given grade unless you obtain that grade on at least one
of the exams. For example,
if you with to achieve a
B, and
you get all A's on the programs,
but get C's on both of the exams, you will get a C in the
class. Note: I hope this situation will not arise.
Important: Your grade will be the one you earn.
Not considered will include situations like: (1) you may be deported if you do not achieve a certain grade, (2) you have a job lined up
and have to start immediately, and (3) you got all A's up to this point,
and you have never received a grade below a (fill in your favorite grade here).
The class schedule will be updated quite often; you should reload this
page often. Please note that due dates can change, although they will
never be made earlier.
Please note that programming assignments
in this class may build on previous ones. This means that it is vital
that you correctly implement each assignment.
You will not be
excused from assignment N just because you did not get assignment
N-1
to work correctly. Further, it is likely that some of the test cases will
be exactly the same from project to project. In my experience teaching
this course, I have found that the most common reason for students struggling
is getting behind in the projects. Do not let this happen.
Your projects will be tested by the TA or me. Test cases are generally
pass (full credit) or fail (no credit). This means that if you fail every
test case, you will get a zero on the assignment (it is possible that a
few points will be given for programming style, etc., but your score will
be very poor nonetheless). You are responsible for testing your programs
to ensure their correctness. Note that just getting the program to
compile is not enough; similarly, just getting the program to pass a few
test cases is not enough. You are welcome to share test cases; this is
often the best way to ensure that your program works.
It is sometimes the case that one small bug caused a disproportionally
large number of test cases to fail. In such a case, you may be eligible
to correct your mistake and get some of the points back. See me
if you believe you have such a case. Note that there is a minimum
penalty for the bug, which is always at least 10 points per bug.
So, if you had 2 bugs that caused you to lose 15 points, you are not eligible
to receive any points back.
Late Assignments
All assignments are due at the start of class unless otherwise
noted. Please note:
if your assignment is even one second late, it's late, without exception.
You will have to turn the assignment in before the time it is due.
I will not say "you missed by 1 minute, so it's ok."
Please start early on programming assignments. I will warn everyone
of this several times, but surely people will ignore these warnings (computer
scientists, by nature, are procrastinators). However, the fact remains
that in the real world, there is a penalty for lateness. One suggestion:
if you think that you can do a program in 3 days and you have 2 weeks to
do it, do it during the
first
three days.
If you are sick and have appropriate documentation, always let me
know as soon as you get sick. It will be to your disadvantage to tell
me after the fact that you were sick; you may not be excused from the regular
due date.
Please keep in mind that social events (e.g.,
football games, all-night Quake contests) are not acceptable excuses for
late work and will be immediately rejected. You probably think
that no one would ever use such excuses, but if you did --- you would be
wrong. On the other hand, if you have a conflict that is school sponsored
(and academic to some extent), I will consider but not necessarily grant
a request for an extension.
Note that scheduled downtimes are not an excuse for late work.
The systems go down once a month for backups, for a total of a few hours.
That is not a hardship. However, if there is an unscheduled downtime for
a significant period of time, I will make an adjustment in the due date
--- as long as the downtime occurs close to the due date.
Exams
There will be one midterm and a final. The exams will be open book and
open notes; however, you may not bring in any other books besides the course
text and papers that we have covered. The exams will not be simple regurgitation
of the material covered in class; rather, they will be designed to see
if you understand the material.
Without prior arrangement, any missed exam will result in a grade
of zero.
Cheating
Cheating will not be tolerated in this class. You are allowed to discuss
the programming assignments with other students. However, these must be
general
discussions. For example, discussing the need for locking address spaces
is perfectly fine; however, telling one exactly how that is done is not.
Any duplication of even one line of code is a violation of the academic
honesty policy. If you have any doubts about what you are doing,
ask me. I hand over all cheating cases directly to the Academic Honesty
department. Their punishment, if you are found guilty, carries with it
a minimum of a failing grade on the assignment and a transcript
notation; the latter item will certainly hinder your efforts to find a
good job. This means that if I catch you cheating, you're not just going
to get away with an F on that assignment; the punishment is much stricter
than that. So, simply put, don't cheat.
Note that copying materials from the Web is a violation of academic
honesty. If I catch you copying code, I will do my best to make
sure you get the harshest penalty possible, including expulsion from the
university. Note that we have had violations of the course policy
in each of the last two years. If you cheat, we will catch you.
Please note that unfamiliarity with the rules and regulations of the
academic honesty environment at the University of Georgia will not be grounds
for leniency. In other words, if you come from a background where collaborative
work is the norm, you must realize immediately that it is not allowed in
this class, unless cleared by me first.
You may think that it's easy to get away with cheating, but people in
this class have been caught each of the last three years. I would
suggest that you realize that we will be looking for cheating, and we will
pursue cases where we see it.
Withdrawals and Incompletes
You may drop the class during the first three days without an annotation
ending up on your transcript. Thereafter until the drop day, you may drop
the class with an annotation. An incomplete will only be considered
in a case where there is a documented medical evidence and you are
making satisfactory progress in the course. If you have a medical emergency
and are not making satisfactory progress after the drop date, you may be
offered a late withdrawal; this is up to the instructor.
Warnings
First, you are responsible for reading and understanding this entire syllabus.
I will hold you to the rules set forth within this document. Second, any
computer science programming course involves a significant amount of work.
This class will have more work than most computer science courses. If you
do not feel you have the time to spend, you may want to think about taking
a different course. Ask previous students about the workload in this class.
I expect you to treat this class professionally.
Dissemination of Information
I will be using the Web as much as possible for this course. Handouts will
be rare. All lecture notes will be on the Web. In addition, I will create
a mail alias for the course, which will allow me to "post" information
in a place where everyone will surely see it.
Class announcements, such as due date and assignment changes, will be
made by email notification and/or on the Web. You are therefore responsible
for checking these two places. If you make an error because you did
not check the Web and your email, I will hold you fully responsible.
You must sign...
You must sign the statement below and return this document to me. Failure
to return this document by Thursday, August 22 will result in your forced
withdrawal from the class.
By signing at the bottom of this document I state that I have read the
entire syllabus and agree to abide by its terms.
Signed: