CS 333 Introduction to Operating Systems
| Credit Hours: | 4 |
| Course Coordinator: | Karen Karavanic |
| Course Description: | Introduction to the principles of operating systems and concurrent programming. Operating system services, file systems, resource management, synchronization. The concept of a process; process cooperation and interference. Introduction to networks, and protection and security. Examples drawn from one or more modern operating systems. Programming projects, including concurrent programming. Prerequisites: CS 200, 201, 311. |
| Prerequisites: | C programming
Basic data structures
Machine organization |
| Goals: | To expose students to the fundamental architectural
and algorithmic concepts involved in the design and implementation
of modern operating systems. This will include the design and
coding of concurrent programs.
Upon the successful completion of this course students will be able
to:
- Read technical material that refers to operating system concepts.
- Write system-level code.
- Apply synchronization-related concerns when implementing code.
- Continue on to study advanced operating systems.
- Describe observed application runtime behavior.
|
| Textbooks: | Modern Operating Systems, 2nd Edition, by Andrew S. Tanenbaum, Prentice Hall.
(ISBN 0-13-031358-0) |
| References: | Advanced Programming in the UNIX Environment. W. Richard Stevens. Prentice-Hall. 1992. |
| Major Topics: | Processes, inter-process communication, concurrent programming,
scheduling, memory management, file systems, synchronization, device
management, introductions to protection & security and to networking. |
| Laboratory Exercises: | |
| CAC Category Credits |
Core | | Advanced |
| Data Structures |
| 0.5 |
| Algorithms |
| 0.5 |
| Software Design |
0.5 | |
| Computer Architecture |
| 0.5 |
| Programming Languages |
| |
| Oral and Written Communications: | Every student is required to submit at least 1 written report of typically
5 pages. |
| Social and Ethical Issues: | None. |
| Theoretical Content: | Deadlock and resource graph models. 3 hours (out of 40 total) |
| Problem Analysis: | Students must design a shell program based on knowledge of desired shell behavior.
They must solve the problem of correct concurrent process synchronization, and
be able to analyze their solution for correctness. Additional projects present
a more advanced aspect of an Operating System that students must implement and/or
study (for example, in the paging study project, students must design and
implement a set of performance experiments, then write a report to explain their
results.) |
| Solution Design: | Solution design is part of the 2 or 3 projects
assigned. One project is a simple Operating System shell, and one varies by
course offering, for example, write a simulator to evaluate paging
strategies. |
|