CS 154/156, Fall 2009: Operating Systems

Instructor: Professor Gabriel Parmer

gparmer at gwu dot edu

Class Schedule: Tues, Thurs 12:45--2:00pm, Tompkins 205
Office Hours: Philips Hall, room 720E, Thurs: 3--5pm. Other times by Appointment.

Lab (Required Attendance): Thursday 6:10--8:00pm, Tompkins 211

Course Outline

This course covers the fundamental concepts of operating systems. This includes OS structure, processes and thread management, communication with peripherals, synchronization, deadlocks, memory management, virtual memory, file systems, networking (sockets and protocols), and distributed systems.

Course Objectives

In completing this class, students will...

Course Prerequisites

CS 135, 143.

Assignments for this class will be done in C. Thus, a familiarity with C or a willingness to learn it quickly is required.

Course Material

Required Text: Operating Systems Concepts, 8th edition, by Silberschatz, Galvin, and Gagne

Recommended Text: Linux Kernel Development by Robert Love

Lab Section

Location: Thompkins 211

Time: Thurs 6:10-8:00

Students in either 154/156 must be enrolled in lab for CSCI 154. Lab section attendance is required and will cover the practical implementation of systems.

TA: James Marshall (jcmarsh at gwmail dot gwu dot edu).

Written Assignments

Syllabus (subject to change)

  1. Introduction and OS fundamentals (Chapter 1,2)

    Definitions, Computer Architecture, OS History, OS Structure

  2. Processes, Inter-Process Communcation, Threads (Chapter 3, 4)

    Address spaces, I/O, Isolation, and Run-states

  3. CPU Scheduling and Synchronization (Chapter 5, 19, 6)

    Scheduling Mechanisms, Algorithms, and Evaluation. Critical Sections and how they are provided

  4. Synchronization Cont. and Deadlock (Chapter 6, 7)

    Semaphores/Monitors, Deadlock conditions and Solutions

  5. Memory Management and Paging (Chapter 8)

    Allocation Algorithms, Segmentation, Address Translation

  6. Virtual Memory (Chapter 9)

    Demand Paging, Algorithms for Page Replacement, Thrashing

  7. Midterm Examination on October 20th, 2009

  8. File-Systems and I/O (Chapters 10, 11, 12, 13)

    File-System API, Rotating Storage, File-System Layout, Block Device Scheduling

  9. The Networking Stack: Internetworking and Transport Layers (Chapter 16)

    IP, UDP/TCP, Socket API

  10. The Networking Stack: Physical and Link Layers

    Device Drivers, DMA

  11. Distributed Systems (Chapter 17)

    Overview, Distributed FS, Stateful vs. Stateless

  12. Distributed Coordination (Chapter 18)

    Event Ordering, Election Algorithms

  13. Final Exam: Tuesday Dec 15th, 2009, 12:40-2:40pm in Tompkins 205



Grades will be assigned with the following proportions:

Homeworks and Quizes: 45%
Midterm: 20%
Final: 25%
Class and Lab Participation: 10%

Academic Honesty

You are not allowed to collaborate on the homeworks and the lab assignments. The group projects require collaboration amidst each group, but no collaboration between teams is permitted. Please refer to the academic integrity policy linked from the course web page. This policy will be strictly enforced. If you're having significant trouble with an assignment, please contact me.
Academic Integrity Policy
Credit: I'd like to thank Prof. Narahari for the first versions of this academic honesty policy.