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 201, CS 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:

  1. Read technical material that refers to operating system concepts.
  2. Write system-level code.
  3. Apply synchronization-related concerns when implementing code.
  4. Continue on to study advanced operating systems.
  5. Describe observed application runtime behavior.
Textbooks:

1. Operating Systems: Three Easy Pieces, Remzi Arpaci-Dusseau and Andrea Arpaci, Dusseau, 2016

2. Xv6: a simple, Unix-like teaching operating system, Russ Cox, 2014

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:

1. Processes

2. Inter-process communication

3. Concurrent Programming

4. Scheduling

5. Memory Management

6. File Systems

7. Synchronization

8. Device Management

9. 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 either 1 written report approx. 5 pages in length, or a number of shorter reports.
Social and Ethical Issues: None.
Theoretical Content: Deadlock and resource graph models. 3 hours (out of 40 total)
Problem Analysis: Students complete a variety of projects that require problem analysis, design, coding, and testing.  For example, students might design a shell program based on knowledge of desired shell behavior, or design and add synchronization to a multithreaded code. Specific projects vary for each course offering.
Solution Design: One or more projects require solution design, for example, change an existing code to remove a race condition.