COURSE DESCRIPTION Department: Computer Science Course Number: 3013 Course Coordinator: Mark Claypool (MLC) Course Title: Operating Systems Total Credits: 1/3 unit Current Catalog Description: This course provides the student with an understanding of the basic components of a general-purpose operating system. Topics include processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students will be expected to design and implement a large piece of system software. Intended audience: computer science majors and others interested in studying the software and hardware components of computer systems. Recommended background: CS 2005 and CS 2011. Textbook: Modern Operating Systems. 2nd edition. by Andrew S. Tanenbaum. Prentice Hall, 2001. References: http://www.cs.wpi.edu/~claypool/courses/3013-B01/ Course Goals: This is an undergraduate course as an introduction to operating systems. The intent is to familiarize stduents with OS theory past and present, while exposing them to some practical issues in OS implementation. Students study the design and theory of multiprogrammed operating systems, concurrent processes, process communication, input/output devices, memory management, resource allocation and scheduling are studied. Part of the course deals with bookwork, part with implementation projects and part with OS research papers. Prerequisites by Topic: Prerequisites are a working knowledge of common data structures such as stacks, queues, and linked lists; a knowledge of computer organization; a strong programming background; and an interest in learning about operating systems. Recommended background: CS 2005 and CS 2011. Major Topics Covered in the Course: OS History, Concepts and Structure (2 hours) Process Scheduling (4 hour) Synchronization (4 hours) Memory management (12 hours) I/O Devices (2 hours) File Systems (1 hour) Laboratory projects: There are 3-4 projects in this course, typically something like: Project 0: 1 week Build and Install the Linux OS. This project gets students set up on their own Linux machine for the course. Students work in pairs. Project 1: 2.5 weeks. Design and implement a new process scheduling system in the Linux kernel. Students work in pairs. Project 2: 2.5 weeks. Design and implement a new synchronization mechanism in the Linux kernel. Students work in pairs. Project 3: 1 week Design and implement a virtual device driver in the Linux kernel. Students work in pairs. Estimate CSAB Category Content: CORE ADVANCED --------------------------------- Data Structures - 1 Algorithms - - Software Design - 2 Computer Organization and Architecture - - Concepts of Programming Languages - - Foundations - - Other - - Oral and Written Communications: Every student is required to submit at least __0___ written reports (not including exams, tests, quizzes, or commented programs) of typically __0__ pages and to make __0___ oral presentation of typically ___ minutes duration. Social and Ethical Issues: Not a principal focus of the course. Theoretical Content: Some discussion on complexity of various approaches to scale. Problem Analysis: Problem analysis occurs in all the projects, as well as in class discussion about interface design problems. Solution Design: Solution design occurs in Projects 1, 2 and 3. _____________________________________________________________________________