(11/6/09) Statistics on Homework 1: Average = 89; Standard deviation = 16.5;
Maximum = 100; Minimum = 40. Homework 2 will be graded in about 1-2 weeks' time.
(11/5/09)
Your midterm exams have been graded. Maximum = 93, Minimum = 19, Average =
46.16, Std. deviation = 17.28. The distribution of scores is available
here You'll get your answer sheets on
Wednesday.
(11/4/09) There will be no class on Monday 11/9/09. Midterm solutions discussed
in class today will not be posted, so don't come asking later.
(11/2/09) Third assignment now available on Sakai. The TA in charge of this
assignment is Rezwana Karim. Please contact her if you have any questions about
this homework.
(10/24/09) The final exam for the course is scheduled to be held on
Tuesday, December 22nd from 12:00pm-3:00pm. Venue TBD.
Bogdan Branzoi (bbranzoi at cs.rutgers.edu).
Office hours: Fridays 3pm-5pm in Hill 204.
Ana Paula Centeno (anapaula at cs.rutgers.edu).
Office hours: Thursdays, 6pm-8pm in Core 331.
Rezwana Karim (rkarim at cs.rutgers.edu).
Office hours: Tuesdays, 2:30pm-4:30pm in Core 337.
Required textbook:Operating System Concepts, Eighth Edition,
by Avi Silberschatz, Peter Baer Galvin and Greg Gagne, John Wiley and Sons,
Inc. ISBN 0-470-12872-0.
You may be able to use an older edition of this book but the lectures and
assignments will use the eighth edition, and we highly recommend that you buy
the eighth edition.
In addition, we also highly recommend that you own a copy of this book as
a reference for the C programming language:
The C Programming Language (2nd edition),
by Brian W. Kernighan and Dennis M. Ritchie, Prentice Hall.
Prerequisites:
Undergraduate computer architecture (CS211 or ECE331)
Undergraduate software design/programming (CS113 or ECE252)
The programming assignments require good programming skills and a lot of time
and effort. Note that these requirements are very serious; you will not be able
to keep up with this course's load, if you don't have the suggested background,
programming skills, and time. Even if you do have the background and the
skills, the course is very heavy on reading and programming assignments, so
come very motivated!
Course overview
CS416 is a senior undergraduate-level course in operating systems. We will
cover the basic concepts in operating systems, such as processes, threads,
virtual memory, file systems, and communication protocols. If time permits,
we will also cover a few interesting research topics, such as operating system
security and intrusion detection. For the programming assignments, we will be
using C. You are expected to be comfortable with the use of the C programming
language and associated tools, such as debuggers.
This course and class web page are based on prior offerings of CS416 by
Professors Ricardo Bianchini, Rich Martin and Thu Nguyen.
Schedule
Here is a tentative schedule of topics to be covered (subject to change over
the course of the semester).
There will be three homework assignments, each of which will require
significant amounts of programming (in C). The assigments will be
posted here as the semester proceeds.
Assignment 1: Parallel transitive closure of a directed graph.
Out: September 14, 2009.
Due: September 30, 2009.
Assignment 2: Fair Sharing Thread Scheduler.
Out: October 5, 2009.
Due: October 26, 2009.
Assignment 3: SNFS -- Simple Network File System.
Out: November 2, 2009.
Due: November 30, 2009.
Programming assignments can be done in teams of no larger than three
students. Each team member is required to contribute to the programming
assignment. There will be project demonstrations to ensure that all team
members have contributed equally to the assignment.
Project
Honors section students and graduate students enrolled in the course will have
to do a course project that will account for 15% of their course grade. The
course project will involve deeper investigation of one of the topics covered
in the class (the choice of the topic will be decided upon consultation with
the instructor). The project must involve a significant design and
implementation component. Projects can be done in teams of size up to
three students. Students may also undertake a literature survey as a
course project, although the student will have to convince the instructor why
he/she wants to undertake the survey. In that case, projects must be done
individually.
Students will have to document their efforts in a project report at the end of
the semester. There are no strict page limits, for a short, well-written and
to-the-point paper is better a long, poorly-written and vacuous one.
Nevertheless, as an informal guideline, you should expect to write about 10
single-spaced pages (roughly about 7500 words) worth of material,
including figures, charts and references. The structure of the project report
must resemble a computer science conference-style paper, good examples of which
will be provided to students upon request. Students will also be required to
demonstrate their project.
Students who are required to do a project must also submit a project proposal
by October 19th, identifying team-members and the topic that will be
investigated.
Project Proposal Due: October 19, 2009. Project Reports/Demos Due: December 10, 2009.
Grading
Undergraduate students will be graded as follows:
Assignment 1 -- 10%
Assignment 2 -- 15%
Assignment 3 -- 20%
Midterm Exam -- 20%
Final Exam -- 35%
Pop-Quizzes -- Bonus points
Honors-section students and graduate students are required to do a
course project and will be graded as follows:
Assignment 1 -- 10%
Assignment 2 -- 15%
Assignment 3 -- 15%
Midterm Exam -- 15%
Final Exam -- 30%
Course Project -- 15%
Pop-Quizzes -- Bonus points
We will occasionally have unannounced pop-quizzes in class. Points gained on
these pop-quizzes will count towards your final grade on the course.
Exams and written homeworks must be strictly individual work. Programming
assignments will be done in groups of up to three students. Collaboration with
other groups on programming assignments is encouraged at the level of ideas.
Feel free to ask each other questions, brainstorm on algorithms, or work
together at a blackboard. You should not, however, copy the actual code
for programming assignments, or copy the wording for written homeworks.
Any violation of these rules will be considered cheating and dealt with
severely. Here are links to the
Rutgers University Academic Integrity Policy and the
Department of Computer Science Integrity Policy.
Resources on the Web
There are plenty of resources available on the Web that students may
find useful for their programming assignments and projects. The following
are a few representative pointers. I will continue to add more links here
over the semester.
LXR: A hyper-linked version of the Linux
kernel source code. Immensely useful to understand Linux kernel source code.
For homework 2, remember to choose Linux 2.4.24, the version that we will be
using.
Tips to read academic papers (useful for literature surveys)
How to write a dissertation, by Professor Douglas Comer, Purdue University
(most of the content on this page applies to all forms of technical writing).
On writing, by Professor Terence Tao, UCLA (though the advice is geared
towards mathematicians, most of the tips apply to other academic prose as well).
The elements of style
by William Strunk Jr. and E. B. White (follow the "External links"
at the bottom of this page for online copies of this book).