Syllabus - CSE 542 - Operating Systems - Fall 2005
11-12:25 Tue-Thu in DeBartolo 207
Prof. Douglas Thain
Email: dthain at cse dot nd dot edu
Phone: 574-631-6485
Office: 356D Fitzpatrick
TA: Phil Snowberger
Email: psnowber at cse dot nd dot edu
Office: 222 Fitzpatrick
Course Web Page:: http://www.cse.nd.edu/~dthain/courses/cse542/fall2005
Overview
This is an intensive, advanced course in the theory and practice of operating systems.
Students will study specific examples of operating system services in detail, focusing
on critical evaluation of structures, algorithms, and quantitative evaluation.
Topics may include virtual machines, file systems, synchronization, memory management,
system architectures, and security.
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
skimming and 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 a conference. To encourage
a process of continuous refinement, the course will include a series of
milestones: an annotated bibliography, a formal proposal, an office conference,
a progress report, a draft paper, peer reviews, a half-hour talk,
and a final paper
Prerequisites
- Graduate standing or consent of the instructor.
- Proficiency in a systems programming language such as C.
- An undergraduate class in operating systems such as CSE 341.
Readings
The primary material for this course will be a selection of research papers.
Some will be "classic" papers and some will be more recent results.
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 -- some 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:
- Alone, skim the paper quickly to pick up the general ideas.
- Alone, read the paper again carefully, taking 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.
Be prepared to answer the following questions about each paper:
- What is the primary argument of the author?
- What are the major components of the system and how do they interact? (Sketch an example!)
- How does this system differ from systems that you already know about?
- What, precisely, does each of the experiments demonstrate?
- Does the paper communicate effectively?
What lessons can you apply to your own paper writing?
Course Project
Each student will undertake a course project of his or her own devising.
The project may fall anywhere in the field of computer systems, broadly interpreted.
It may be experimental, theoretical, comparative, or demonstrative.
Students may employ any language, system, or platform suitable for the task.
A list of possible projects will be distributed early in the semester.
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:
an annotated bibliography, 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.
Facilities
The following facilities are available for carrying our your project.
- College of Engineering Cluster. The regular Engineering student machines may be used for this course. You may harness several machines at once remotely using ssh, but beware of two restrictions: 1) The machines will only allow communication within the cluster on ports 30000-31000; 2) Remote users may be automatically logged off in favor of a user sitting at the console.
- Cooperative Computing Lab (CCL). The instruction directs the CCL, a distributed computing facility composed of machines owned by different researchers as well as the CSE department. The CCL is especially useful if you wish to run a large number of distributed programs, or wish to perform distributed simulation. You may read the CCL web page or contact the instructor for further information.
- High Performance Computing Center. (HPCC) The HPCC has several clusters of varying architectures and operating systems. These machines require that you submit your programs as batch jobs, specifying the type and number of machines you wish to use. You jobs might run right away, or they might wait in a queue behind other users. However, you will have sole use of the machines while your jobs run. The HPCC may be a good resource to use for performance testing after building and testing your code elsewhere. If you think that you may use the HPCC, then apply for an account early in the semester.
Grading
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:
| Annotated Bibliography | 5
|
| Project Proposal | 5
|
| Midterm Exam | 20
|
| Progress Report | 5
|
| Draft Paper | 10
|
| Final Paper | 20
|
| Final Talk | 5
|
| Final Exam | 30
|
Collaboration
To understand the readings, you may consult with anyone at all.
You are strongly encouraged to form a reading group within the class.
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.
The midterm and final exam are to be taken alone.
Read and understand the Academic Code of Honor.