Syllabus
CSE 341 - Operating Systems Principles
Spring 2005
Tue-Thu 11:00-12:15 AM
Room 120 Debartolo Hall
Instructor: Prof. Douglas Thain
Email: dthain at cse dot nd dot edu
Phone: 631-6845
Office: 356-D Fitzpatrick Hall
Office Hours: Tue 2-3, Wed 10-11
Teaching Assistant: Santanu Chatterjee
Email: schatter at cse dot nd dot edu
Phone: 631-3096
Office: in Fitzpatrick Lab
Office Hours: Mon 9-11, Thu 3-5
Overview
An operating system is a layer of software that manages hardware resources and that provides user programs with a simple and consistent interface to the machine. In this course, we will examine services and abstractions commonly provided by operating systems, and we will study the underlying mechanisms used to implement them. Topics may include processes and threads, synchronization, cpu scheduling, resource management deadlocks, memory management, segmentation and paging systems, storage and file systems,
and advanced research topics in operating systems.
The goals for each student in this course are:
The course materials will test each student's achievement of these goals at several levels. For each topic in the course, students must be able to:
Required Textbook:
Andrew S. Tanenbaum, Modern Operating Systems, 2nd edition, Prentice-Hall. (at ND bookstore)
Alternate Textbook:
Silberschatz and Galvin, Operating System Concepts, 5th edition, Addison Wesley, 1998. (on reserve)
Strongly Recommended Reading:
Kernighan and Ritchie, The C Programming Language, Prentice-Hall, 1988. (at any bookstore)
W. Richard Stevens, Advanced Programming in the Unix Environment, Addison-Wesley, 1992. (at any bookstore)
Course Web Page:http://www.cse.nd.edu/~dthain/courses/cse341/spring2005
Assignments, announcements, and other critical information will be posted to the course web page. Students are responsible for checking the page periodically for new material.
Course Mailing List: http://listserv.nd.edu/archives/cse341-01-sp05.html
Announcements and discussion of course projects will take place on the course mailing lists.
All students are responsible for keeping a valid email address on file with the registrar
and checking new messages regularly.
Prerequisites:
Courses: CSE 232, CSE 321, CSE 331, CSE 322 (coreq)
Language: Students must already be fluent in a systems programming language such as C or C++.
The primary language used in the course will be C,
but the course will not teach the C language per se. Students must be able
to locate and use appropriate programming resources such as online manual
pages, reference books, and the like.
The instructor will help by suggesting appropriate references, but students
should expect to spend significant time engaged in the "dirty work" of
digging up the necessary details to write programs.
Grading
The course grade will be based on five programming projects, two exams, a final exam, and classroom participation throughout the semester. 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.
All assignments must be submitted by the day and time indicated. Late assignments will receive no credit! Programming assignments will generally be submitted electronically by simply copying your work into an AFS directory. Note that electronic submissions may be closed automatically by the clock. If you are working at the last minute (not recommended) then you may submit a draft of your work well before the deadline. Exceptions will be made only for grave emergencies.
Students must attend class regularly. Anyone missing class more than once or twice should expect to see a reduced participation grade and is likely to miss presented material not found in the textbook. If you are absent due to illness, make sure to obtain notes from a classmate.
| Work | Fraction of Grade |
| Class Participation | 10% |
| Project 1 | 5% |
| Project 2 | 10% |
| Project 3 | 10% |
| Project 4 | 10% |
| Project 5 | 15% |
| Exam I | 10% |
| Exam II | 10% |
| Final Exam | 20% |
Collaboration
The programming projects are to be done individually.
You must be the sole author of all code and other written material that you submit for grading.
You may not read, re-use, or submit code created by others.
However, you may discuss general ideas, algorithms, and problems with your classmates.
Any activity that falls into the gray area between "authorship" and "discussion" should be
assumed off-limits unless explicitly approved by the instructor.
The midterm and final exams are to be taken alone.
You must read, understand, and abide by the Department Honor Policy and the University Academic Code of Honor, both available on the web. At key points during the semester, the matter of appropriate collaboration will be discussed in class.
Any violation of these rules will be considered a very serious matter and will result in a referral to the University honor committee and the appropriate rector and academic advisor. Penalties may include failure of the class and suspension or expulsion from the University.
Miscellaneous
Please turn off cell phones during class.