CSCI 402 Syllabus
Description
Issues in the design of modern operating systems, with examples.
For their project, students will implement several subsystems of an instructional operating system.
Prerequisites
Familiarity with C and C++ and have taken EE 357.
Examinations
Exams are closed book, and will cover the lectures, readings, and programming assignments. Missing an exam without prior approval,
or a documented medical emergency, will result in a score of zero for the missed exam. There are no exceptions.
Projects
The projects are to build significant parts of an operating system for a simulated MIPS-style workstation. The project consists of four phases:
thread management, multiprogramming, virtual memory, and distributed systems. The projects are to be done in teams of two or
three students. The assignments will be the same for either size team.
Grading
All scores will be posted to Blackboard at http://blackboard.usc.edu.
The projects are worth 40% or your grade and the examinations are worth 60% of your grade. To pass the course
you must have an average of at least 53% on both the exams and projects. The course is not curved.
Failure to average at least 53% on both the exams and the projects will result in an F in the course. My grading scale is below.
| Percent Range | Grade |
| 90 - 100 | A |
| 86 - 90 | A- |
| 82 - 86 | B+ |
| 78 - 82 | B |
| 74 - 78 | B- |
| 70 - 74 | C+ |
| 66 - 70 | C |
| 62 - 66 | C- |
| 59 - 62 | D+ |
| 56 - 59 | D |
| 53 - 56 | D- |
Course Text
See the required materials.
Course Objectives
Consider and address the issues in the design of modern operating systems of both single and multiple
processor systems. Students will also obtain programming experience in operating system implementation
through four projects using the Nachos operating system simulator code. These projects will give students
the opportunity to program portions of an operating system.
Course Outcomes: After the course the student will be able to:
- Understand the difference between processes and threads.
- Understand the issues and use of locks, semaphores and monitors for synchronizing multithreaded systems and
implement them in multithreaded programs.
- Understand the issues of scheduling of user-level processes/threads.
- Design and implement multiprocessing in Nachos
- Understand the concepts of deadlock in operating systems and how they can be managed/avoided.
- Understand virtual memory management.
- Design and implement virtual memory management in Nachos.
- Design and implement improvements to the Nachos network system.
- Understand the types of security problems faced by operating systems and how to minimize these problems.
- Understand the organization and synchronization of distributed operating systems.
- Understand the differences between multiprocessor and multicomputer configurations.
- Understand communication in distributed systems and how it can be used in remote procedure calls, remote objects and message-oriented communication.
- Understand organizing principles for distributed systems through election algorithms