| 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. Prerequisite: CS 201, 202. |
| Prerequisites: | CS 201, 202 |
| 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:
|
| Textbooks: | Operating System Concept Essentials, by Silbershatz, Galvin, and Gagne, John Wiley & Sons 2011. ISBN 978-0-470-88920-6. |
| References: | The C Programming Language, 2nd ed.Kernighan and Ritchie, Prentice Hall, 1998. ISBN 0131103628; Practical Guide to Linux Commands, Editors, and Shell Programming, A (2nd Edition) ISBN 0131367366 |
| 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. |