CSE 60641 - Operating Systems - Fall 2010
9:30-10:45 Tue-Thu in Fitzpatrick 356
Prof. Douglas Thain
Email: dthain at cse dot nd dot edu
Office: 382 Fitzpatrick
Office Hours: TBA
Course Web Page:: http://www.cse.nd.edu/~dthain/courses/cse60641/fall2010
This is a graduate course in the theory and practice of operating system
design and implementation. We will examine and discuss a wide variety
of technical concepts found in operating systems both current and
historical. Topics will include storage and file systems, concurrency,
memory management, virtualization, and distributed operating systems.
Within each topic, we will study foundational work,
established advanced topics, and recent research.
The medium of the course will be the short academic paper.
The short paper is the primary method of communicating new results
in science and engineering, so students will gain experience in
carefully absorbing this sometimes difficult literary form.
The course readings will be taken from a selection of
both "classic" and recent technical papers. Students will be expected
to engage in discussion of assigned readings in every class period.
In parallel with the readings, students will undertake a course project.
Projects will be designed by the students with the advice of the instructor.
Each project must be highly literate undertaking.
A significant amount of time will be spent on developing and revising the
ideas to be explored. The final paper will be a highly polished result
within "striking distance" of submission to an academic conference.
To encourage a process of continuous refinement, the course will include
a series of milestones: an annotated bibliography, a project proposal,
an office conference, a progress report, a draft paper,
peer reviews, a final talk, and a final paper.
- Graduate standing or consent of the instructor.
- An undergraduate class in operating systems such as CSE 341.
- Proficiency in a systems programming language such as C, C++, or Java.
Students successfully completing this course will be able to:
Describe and evaluate advanced concepts in operating system design and implementation.
Presented in course readings, evaluated in midterm and final.
Compare and contrast competing architectures and implementations of operating system components.
Presented in class discussions, evaluated in midterm and final.
Describe important historical developments in operating systems in terms of architectural philosophies, influential personalities, and well-known systems.
Presented in readings and discussions, evaluated in midterm, final, annotated bibliography, draft paper, and final paper.
Design and perform perform a small piece of operating systems research with some guidance.
Presented, practiced, and evaluated in each of the project milestones.
Effectively communicate research results orally and in writing.
Presented in readings and class discussions, practiced and evaluated in progress report, final talk, draft paper, and final paper.
The primary material for this course will be a selection of research papers.
Some will be "classic" papers that are widely known in the research community,
and others will be more recent results in the literature.
Each class period will involve lecture and discussion on the papers assigned for that day.
Every student must be prepared to discuss the papers assigned each class period.
Although most papers are short -- usually 8-12 pages -- many are quite dense and will require
several readings to absorb completely. To get the most of each paper, students will form
small reading groups and meet outside of class to discuss the papers.
Sign-ups will be provided in class in order to facilitate this.
Here is a good way to work on the papers:
Be prepared to answer the following questions about each paper:
- Alone, skim the paper quickly to pick up the general ideas.
- Alone, read the paper again carefully, taking detailed notes on the main ideas and difficult sections.
- In group, review the main ideas and help each other to understand difficult sections.
- Alone, skim the paper again to see what you missed the first time.
- What is problem that the paper is addressing?
- What is the primary technique used to attack the problem?
- What are the major components of the system described and how do they interact?
- If the paper is experimental, then what precisely does each of the experiments demonstrate?
- How exactly to the experiments, proofs, or examples presented serve to support the primary argument of the paper?
- What lessons can you apply to your own paper writing?
Each student will undertake a semester project resulting in a paper of
form and style similar to those discussed in class.
The instructor will suggest several project ideas early in the semester.
Students may propose their own project ideas, but should consult with
the instructor very early in the semester to ensure that the project
has appropriate size and scope. Projects may be done singly or in pairs.
The course project must be highly literate. A significant amount of time
will be spent on developing and revising the ideas to be explored.
The final paper will be a highly polished result within "striking distance"
of submission to a conference. To encourage a process of continuous
refinement, the course will include a series of milestones:
a project proposal, a progress report, a
draft paper, peer reviews, a final talk, and the final paper.
Details of each milestone will be forthcoming.
The class will conclude with a workshop in which each
student presents their results.
Caution: The most important results of the project will
be the ideas and results presented in the final paper.
Students will not receive credit simply for creating a
software or hardware artifact, no matter how sophisticated.
Any artifacts created must serve to flesh out the ideas
in the final paper. The project milestones will help to maintain
focus on the writing process.
Several facilities are available for carrying out your project.
- College of Engineering Cluster. The regular Engineering workstation cluster on the first floor of Fitzpatrick may be used for this course. Note that a person sitting at the console of such a machine has priority over those who log in remotely.
- Cooperative Computing Lab (CCL). The instructor manages the CCL, a distributed computing facility of about 1000 CPUs owned by various people in the College of Engineering. Several software system are run acorss the CCL, including a Condor pool, a Hadoop cluster, and a Chirp storage pool. See the CCL web page or contact the instructor for further information.
- Virtual Machines. Projects that involve developing or modifying kernel code may be conducted on virtual machines allocated from our OpenNebula cloud
- Computing Research Center. The CRC is a University-wide facility that provides access to a large high performance computing cluster as well an assortment of large memory and many-core machines. See the CRC web page to obtain an account.
Projects may be done singly or in pairs.
Pairs will be expected to accomplish more than singletons.
Both members of a pair will receive the same grade on work done jointly.
Both members of a pair are expected to contribute to the project.
If any serious difficulty should arise between you and your project
partner, consult the instructor sooner rather than later.
All assignments are due at the beginning of class on the date due.
Late assignments will receive no credit.
This includes assignments submitted after class has begun.
Exceptions will be made only for grave emergencies.
For each assignment, a numeric grade will be assigned.
Throughout the semester, students will be advised of their numeric grades and the class average.
At the end of the semester, number grades will be converted to letter grades.
The relative weight of each assignment is as follows:
| Warm-Up Assignment || 5
| Annotated Bibliography || 5
| Project Proposal || 5
| Progress Report || 5
| Draft Paper || 10
| Final Talk || 5
| Final Paper || 15
| Exam I || 15
| Exam II || 15
| Exam III || 20
Collaboration and Attribution
As a Notre Dame student, you are bound by the Academic Code of Honor. (http://honorcode.nd.edu) Be sure to read and understand it.
As a scholar-in-training, you will be adding your own ideas and discoveries
to a body of work with many previous contributors. Collaborating with
others and building upon their ideas is normal and encouraged, but you
you have a professional responsibility to clearly indicate what is your
work, and what has been done by others.
Anything that you submit -- paper, email, computer code, slides -- with your
name attached is assumed to be entirely your creation. If any part of
your submission contains someone else's words, ideas, or work, it should be
clearly indicated by a proper citation or acknowledgement.
Submitting someone else's words, ideas, or work as if they were your own
is a serious violation of professional ethics and will result in
severe consequences up to and including failure of the course and
dismisal from the University.
Collaboration rules specific to this class:
To understand the class readings, you may consult with anyone at all.
You are strongly encouraged to form a reading group of 3-4 people,
and meet to discuss the papers at least once a week.
To undertake the course project, you may work singly or in pairs.
To refine your project ideas, you may consult with anyone at all.
You may employ software written by others and hardware provided by
others, provided that you obtain the necessary permissions and give
credit within your work. However, all software development,
experimental work, and paper writing must be done solely by you
and your partner.
Exams are closed book and to be taken alone.