CS 372 Operating Systems Syllabus
This course examines the important problems in operating system design and implementation. The operating system provides an established, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for sharing resources (e.g., disks, networks, and processors), providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from interfering with one another. The course will start with a brief historical perspective of the evolution of operating systems over the last fifty years and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), and file systems; and on operating system support for distributed systems.
Results
You will have an opportunity to learn a lot of practical information about how programming languages, operating systems, and architectures interact and how to use each effectively. This course is the first time you will learn about how concurrency and distributed systems communicate and work correctly. This knowledge will help you to more effectively use and manipulate computers and computer programs. I have designed the written and programming assignments to build on and enhance the lectures. You will hear the concepts in lecture, read them in the book, analyze them in the written homework, and put them in practice in the programming assignments.
Communication
Use the newsgroup for all but personal issues. You must read the newsgroup, and you should post course related technical questions and responses to this newsgroup. I expect my students to make heavy use of the course newsgroup and of TA support when they have technical or administrative questions or problems.
You should use the news.cs.utexas.edu news host.
Materials
Requirements and Grading
You must attend class regularly, read the assigned reading before class, and participate in class discussions. The course will be graded on a curve.
Due Dates, Times, and Policies
You must turn in written homework on time without exception, because we will provide solutions at the next class period (to give you quick feedback).
We will grade written homework 1 point per problem on a 1/.5/0 scale. This course covers a lot of material and late assignments will seriously impact your ability to learn the next section of the course. For documented illness or death in the family that results in late homework, I will exclude the assignment from your grade average.
You will have 5 slip days for all but the first programming assignment. You may divide your slip days across the remaining projects in any way you wish to extend deadlines for the projects. To help the TA track your slip-day status, the top of your project README file should include the line:
Slip days used (this project): _______ Slip days used (total): ______
Plan on turning your assignments on time and only using your slip days for unexpected illness. We will only grant extensions on labs only for documented illness and death in the family that consumes more than 5 days.
Cooperation and Cheating
The Student Code of Conduct documents your rights and responsibilities as a student.
Copyright Notice: These lecture notes, homeworks, and lab assignments are part of a first course on operating systems. You must ask me permission to use these materials. I do not grant to you the right to publish these materials for profit in any form.
Kathryn S. McKinley, The University of Texas at Austin