CSCI 340 Operating Systems
Fall 2005
Syllabus
Instructor:
Prerequisites:
CSCI 311 (formerly 151) Algorithms and Data Structures
CSCI 320 (formerly 171) Computer Architecture
If you have not completed both prerequisites with a grade of C- or
better, I could fail you in 340
even if you complete all the work.
If you took the prerequisites at another university, they must be
approved for transfer before starting 340.
Required Textbook:
(available at the CSUC bookstore)
Operating
System Concepts
by Abraham Silberschatz, Greg Gagne, Peter Baer Galvin
ISBN: 0471250600
6th Edition
Note: My lectures will follow the 6th edition, I don't know how
different the 5th edition is from the 6th. There is an XP version
and a non-XP version of the 6th edition. The XP version
contains an extra chapter that covers XP. I won't be
covering this chapter.
Grading:
Grading is
relative. The students that do the best work will get an A, the
students that don’t do as well will get a B,
and so on. I do not follow the traditional percentage grades of 90%
= A, 80% = B, etc., and I do not grade on a curve that defines how
many students will receive each grade.
Students will receive
a letter grade A-F (4.0 – 0.0) for each category (1 for exams, 1
for
projects). The course grade will be a weighted average of the
individual letter grades (see category percentages below). This
mechanism allows for relative grading of each category (e.g., if the
best score on the exams is a 60%, that student will probably receive an
A for the exams, thus an A (not the 60%) will be averaged with the
student’s other grades). This grading mechanism means that
you
have to get an A on both the assignments and the exams to get an A in
the course.
I will routinely post the
grading spreadsheet (
grades).
If you are not happy with a grade, talk to me
immediately. If you do not talk to me within a week of the posting
of a grade, I will assume you think the grade is fair and accurate, and
you will
lose your right to dispute the grade.
Grade category
percentages
Exams 60% of course grade (2
midterms and a final)
Programming Projects 40% of course grade
The final exam will
be weighted 1.5-2.0 times as much as each midterm. The final will be
cumulative. All exams will cover
material from the lecture, the textbook, and the programming projects.
As an example of how
I distribute grades, look at the grade spread sheet from my 152
in Fall
2004.
Programming
Assignments:
There will be
4-5
programming assignments.
Students can work
individually or with one other student of their choosing. You may
work with the same or different people on each assignment. If you
choose to work with someone else, both students must contribute equally
to each assignment. For example, you can't take turns doing
assignments. Sitting at a computer together (called pair
programming) has been shown to be very effective in both academic and
industry settings.
The easier
assignments will be worth a smaller percentage of your grade than the
harder assignments. For each assignment, I will assign a weight
when I assign the program. However, as the semester progresses it
may become apparent that the weight of an assignment is not congruent
with the other assignments, and thus may be changed.
Late Assignments:
Assignments
turned in 1-24 hours after the due date will lose 10%
Assignments turned in 24-48 hours after
the due date will lose 20%
Assignments will not be accepted more
than 48 hours late.
E-mail:
I will routinely
communicate with the class via e-mail. I will use your ECST e-mail. If
you do not routinely read
your ECST e-mail, you should create a .forward file to forward
your
ECST e-mail to the account you routinely read. The size of your ECST
mailboxes is limited. If you let too much mail build up, you will
not be able to receive new mail and thus might miss some important
class information.
I will also post
e-mail I send to the class at e-mail sent to class.
You are required to
read e-mail I send to the class. Due to the nature of
programming, e-mail is the best way to send updates on
assignments.
I suggest that you make sure your e-mail is working (by comparing
e-mail you've received from me to that posted on the class web site)
and that you check the class e-mail when working on class assignments
and before exams.
Honesty
I will
fail students who cheat. I do
not give second chances. It is not a good idea to cheat in my
class.
Don't underestimate my ability to catch people who cheat, I catch
cheaters every semester.
I expect all
students to follow the University’s honesty policies (
http://www.csuchico.edu/sjd/discipline/honesty.html).
I will fail students who do not follow these policies, even if they
don’t understand them. It is your responsibility to understand
these policies.
The bottom line is that you must do all the assignments on your own, or
if you are working with another students, the two of you must complete
the assignments on your own.
Turning in code that
anyone else wrote
is cheating and will result in failing the course. Here are some
examples of cheating:
copying code from another student
without a clear and detailed reference
copying code from a book without a clear and detailed reference
copying code from the internet without a clear and detailed reference
paying someone else to write your code
buying code
stealing code
letting someone steal your code (e.g. giving out your password,
incorrect file protection)
giving your code to another student (both giving code and taking code
are forms of cheating)
helping another student so much that he/she is not doing the assignment
(both helping too much and getting helped too much are forms of
cheating)
On the other hand, you are allowed to discuss projects and you may
get help finding bugs. Just make sure you don't get so much help
that you are no longer doing the work.
Course Objectives:
- To familiarize students with the abstractions and facilities
provided by modern operating systems
- To introduce students to the issues that arise when implementing
operating system services
Course Outcomes:
Students shall be able to:
- Use tools to examine the behavior of operating system components
- Write software that uses advanced operating system facilities
- Identify the major operating system components and their
functions
- Identify similarities and differences between specific operating
systems
- Write software systems based on multiple cooperating processes
or threads of control