CS 153: Operating Systems
Table of Contents
Topic Schedule
Assigned Reading
Projects
Labs / Discussions
Extra Credit
Approved Languages
Course Policies
Course Style Guide
Catalog Description
Principles and practice of operating system design, including
concurrency, memory management, file systems, protection, security,
command languages, scheduling, and system performance. Laboratory
work involves exercises covering various aspects of operating
systems.
Prerequisites:
- CS 61 - Machine
Organization & Assembly Language Programming
- CS 141 - Intermediate
Data Structures & Algorithms
- C++ programming proficiency.
This course will go much more smoothly if you are proficient at
picking up other programming languages. You will certainly need C
(not C++), and I'd recommend a scripting language such a Python,
Ruby, or Perl.
People
Instructor:
Titus Winters
(titus@cs.ucr.edu)
Teaching Assistants
Basic Stuff
Lecture: MWF 5:10-6pm, STAT B650
Labs: SURGE 283
- Thursday 11:10am - 2pm - Yannis
- Friday 11:10am - 2pm - Abhishek
- Friday 2:10pm - 5pm - Karl
Office Hours:
- Titus: Thur 10am, Friday 2pm, Surge 281
- Karl: Wednesday 2pm, Surge 282
- Abhishek: Monday, 1pm, Surge 282
- Yannis: Tuesday, 3:30-4:30pm, Surge 282
Textbook:
Kernel Projects for Linux
Optionally you can additionally get any of the books by Silberschatz that
have dinosaurs on the cover, which are more expensive but cover the
material more completely.
Course Mailing List:
CS 153
Mailing List You are responsible for everything that is sent to
the course mailing list, and are expected to check your email no less
than once every 24 hours, every day.
Course Grading
Grading for this course will be as follows:
- Final - 30% - The final will be Monday, March 14th from 7-10pm,
and will be cumulative.
- Midterm - 25% - The midterm will be in class on Wednesday
February 2nd
- Programming Projects - 20% - There will be 4 programming projects
- Labs - 10% - There will be 10 labs
- Pop quizzes - 5% - There will be brief pop quizzes during lecture
whenever I feel like it. This may not be made up, but I will drop
your two lowest scores.
- Quizzes - 10% - There will be some short quizzes throughout the
quarter. I'll give you notice at least one lecture in advance.
Letter grades will be assigned roughly according to the regular
90/80/70/60 scale. +/- grades will be given.
Topic Schedule
This is very subject to change as the quarter progresses, but I will
try to keep this current with my best guess.
- Week 1: Introduction, basic C
- Week 2: Processes & file-descriptors
- Week 3: Threads, Synchronization
- Week 4: Sync cont., deadlock.
- Week 5: Review, Midterm, Recap
- Week 6: Scheduling, File storage
- Week 7: File storage cont
- Week 8: Memory Management (Monday holiday)
- Week 9: Protection, Security
- Week 10: OS History, Review
Assigned Reading
To be read before lecture on the given date.
- Friday 1/14: Nutt: Pages 24-36. Topics here are process and
resource management and memory management. Also Threads
vs. Processes
- Monday 1/10: Nutt: Pages 4-24, 67-77. Topics here (for those
without the text) are what the OS kernel does (kernel
responsibilities), how the kernel is structured (kernel
organization), and an introduction to how a shell actually functions.
- Friday 1/7: In
The Beginning Was The Command Line - Many links to the full text
of this "essay" online. Find one and read at least the following
chapters (I'd assign the whole thing, but not all of it is relevant.
Still a pretty good read.):
- Bit-Flinger
- GUIs
- Class Struggle on the Desktop
- Honey-pot, Tar-pit, Whatever
- The Technosphere
- Linux
- The Hole Hawg of Operating Systems
- The Oral Tradition
- Fallibility, Atonement, Redemption, Trust, and Other Arcane
Technical Concepts
- Etre
- Mindshare
References & In-Class Material
Projects
Labs / Discussions
Extra Credit Opportunities
There are a number of things that I will grant extra credit for at
any point in the term. You may not earn more than 5% extra credit in
this way.
- Install a new (I'm going to take your word for it being not
your regular OS) OS. Credit varies by OS. To get points you must
bring the installation CDs (if any) to me to check, send me an email
message from that OS (I'll be checking your headers), and keep an
installation log of all the steps you took in the installation. These
operating systems are ranked in my perceived order of ease-of-installation:
- 1% Windows
- 2% Linux
- 3% FreeBSD/NetBSD
- 4% OpenBSD
- 5% Plan 9
- Writing a 750-1000 word response/summary of a current systems
paper. If you are interested, I'd suggest the
USENIX Compendium of Best Papers as a starting place, but you
must check with me about the suitability of any paper you choose
before you start.
To help build your critical reading skills, your writeup must include
at least one thing from the paper that you don't believe, think could
be improved, or could be used to further the research. Submissions
must be in PostScript, PDF, or plain text. Good writeups are worth
up to 2%.
- Presentations. I'm willing to allocate 5 minutes at the end of
each lecture to a single student presenting their experiences in
either of the above areas. For OS installations this should include
a quick summary of how you performed the installation, but focus more
on what makes that OS unique, and what its strengths and weaknesses
are. Paper summaries will be very similar to the written
submission. You may bring notes when presenting, but may not read
your entire presentation. To reserve a date, email me. I'll list
taken dates here. Good presentations are worth up to 2%.
- Monday, 1/24 - AJ Papa
- Monday, 2/28 - Victor Bebtchouk
Approved Languages
For some programming in this course (generally anything running in
kernel mode) you must use C. Not C++, pure old C. All assignments
will be labeled when they have a language requirement on them.
Several will be "programming language of your choice," so long as your choice
appears on this list. If there is a language that you would like to
use that doesn't appear on this list, simply suggest it to me. I'll
keep a list of the languages that are allowed here.
So Far
C, C++, Python
Course Policies
- Cheating Policy Handout: You are responsible for
reading and signing a copy of the CS 153
Help and Allowed Resources form. These will be handed out during
the first day of class during lecture. You will have a 0 in the
course until I get this form from you. If you do not attend the
first day, it is your responsibility to make sure I get one of these
from you.
- Early/Late Policy: For programming projects 1-3,
early submissions of at least one whole day will earn 3% bonus credit
for each full day early, up to 3 days (9%). Late submissions will be accepted
at 5% per 24 hours (or fraction thereof) for 2 days (10%). For
example, if the project is due at 8pm on Friday, turning it in at
7:59pm on Thursday gets you 3% extra credit, as does 8:01pm on
Wednesday. If you didn't finish on time, you have until 7:59pm on
Saturday for 5% off, and until 7:59pm on Sunday for 10% off. Nothing
will be accepted after this period without prior arrangement with the
instructor.
- Material Covered: You are responsible for all
material covered in lecture, assigned reading, lab, programming
projects, and on the mailing list.
- Academic dishonesty and collaboration policy:
Don't cheat, plagiarize, or collaborate without permission, or you
will be dealt with very strongly.
The rules regarding collaboration are as follows:
- Midterm, final, quizzes, pop quizzes: No collaboration. Duh.
- In-lab: Discussion allowed and encouraged, helping on another
debug strongly encouraged. Help everyone you can.
- Programming projects: Discussion allowed, but stay away from one
another's code (except for group projects). When discussing a
problem, avoid talking in code, and avoid taking notes. If you
filter the discussion through your own memory, you are unlikely to
submit code that coincidentally indicates you collaborated. This is
for your own protection.
- Regrade Policy: Regrade requests must be
submitted in writing, on paper within two
lectures of the material being returned (or available for
pick-up if you don't pick up your results.) Any clerical errors in
grades sent to you should be reported within one week of posting if
possible, and certainly before the last week of
class.
- Cell Phones: Silence your cell phone. I reserve
the right to dock scores or publicly embarrass repeat offenders.
- Time Requirements: This is a four unit course,
and WILL take up the 12-16 hours that entails. I
will try to keep it within that range on average, but in the end it
is your responsibility to manage your time.
- Lab Attendance: Lab attendance is mandatory
(that is, worth points), with a couple exceptions. There will be
some labs toward the end of the quarter that are intended to be
supervised work-sessions for your projects. If you have submitted
all assigned projects before the lab begins, email your TA and you
will get the attendance points.
Labs during the second half of the quarter will be one hour
discussions about the assigned papers and readings. These will be
graded on participation and knowledge of the material.
- Style: Style and documentation will count for at
least 15% of your programming project grades. More information can
be found in the course style guide.