The computer's operating system is the lowest-level software
running on your computer. It coordinates the use of the computer's
hardware resources, such as its CPU, memory and I/O devices. Beyond
this, it provides security, protecting users from each other and
providing a firewall to protect access through the network. In this
course, we study a variety of techniques used in operating systems
to perform these services, including CPU scheduling, memory
management, concurrency, and file systems.
This course is programming intensive. Prereqisite:
Computer Science 221.
Learning Outcomes: In this course students will learn:
- The major tasks that an operating system performs,
including scheduling processes to execute on the CPU, allocating
memory to processes, organizing a filesystem on disk, and performing
- The relationship between a program sitting in a file and
a process executing on a computer,
- The importanace of concurrency, the problems that can arise if
care is not taken when writing concurrent programs, and constructs
used to develop concurrent programs.
Students will learn alternative strategies for the tasks that an
operating system performs, such as alternative approaches to CPU
scheduling and memory management. Exercises will involve evaluating
the behavior of running systems, studying well-known algorithms, and
implementing pieces of an operating system in C.
CS 322 contributes to the
learning goals that encourage students to:
- Develop the critical thinking skills to solve problems by
designing and implementing algorithms.
- Be able to design, implement, test, and document computer
programs that solve substantial computational problems.
- Be able to think at multiple levels of detail and abstraction.
- Develop a foundation that allows and encourages learning new and
relevant skills and technologies as the field evolves.
- Understand the interplay between theory and practice.
- Understand the interplay between software and hardware.
- Be able to communicate clearly in written and oral form.
- Be able to work effectively on a team.
More specifically, students are expected to master the following
- Computer programming—including working knowledge of at least two
programming languages in different paradigms.
- Abstraction to manage complexity.
- The conceptual organization of computers—including both computer
architecture (the hardware level) and operating system issues.