COMP 345: Operating Systems, Fall 2026

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class. Individual exceptions to the policies and schedule are granted only in cases of true emergency. Please make arrangements with me if an emergency arises.

Logistics

Content

Introduces basic operating system concepts including virtualization, memory management, process and thread management, concurrency, file systems, and process scheduling. Students will also gain hands-on experience with the C programming language and Unix-based operating systems via programming projects.

Topics

Possible topics include:

Processes Concurrent Data Structures
CPU Scheduling Concurrency Bugs
Virtual Memory I/O Devices
Free Space Management Redundant Disk Arrays
Locks File Systems

Course Goals

  1. Develop a deep understanding of operating system principles, including process management, memory management, concurrency, file systems, and CPU scheduling.
  2. Gain practical experience with systems programming in C and Unix-based environments to solve real-world problems.
  3. Build the skills necessary to analyze, design, and implement operating system components.
  4. Cultivate problem-solving skills to debug and optimize complex software systems.
  5. Prepare students for advanced courses or careers in systems programming, software engineering, or related fields.

Sources

The required course textbook is:

It is available online at http://pages.cs.wisc.edu/~remzi/OSTEP/.

Policies

Assessment

Assignments and Workload

The weekly workload for this course will vary by student and over the semester, but on average should be about 12 hours per week. The follow table provides a rough estimate of the distribution of this time over different course components for a 16 week semester.

Category Amount Final Grade Weight Total Time Time/Week (Hours)
Lectures 55 10% (Participation) - 2.5
Reading Quizzes 6–10 10% - -
Projects 3–5 40% 64 5.5
Exam Study - - 27 1.5
Exams 3 40% - -
Reading+Unstructured Study - -   2.5
        12

Grading

Your participation grade is based on a variety of activities. During class I will often make use of the Socrative (https://socrative.com) app, so you’ll need to install this on your phones. Participating in Socrative questions and with in-class group activities is required for a decent participation grade; an A includes asking questions either in class or in office hours.

Your final grade is based on a weighted average of particular assignment categories, with weights shown above. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing.

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge*.

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge.

Schedule

The following tentative calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

Date Topic Assignment
Wed 08/26 (Week 1) Operating Systems Overview OSTEP 0, 1, 2
Fri 08/28 C Review Tutorial, Project 1 out
Mon 08/31 (Week 2) More C Exercises  
Wed 09/02 CPU Virtualization: Limited Direct Execution 3,4
Fri 09/04 Project 1 Questions; fork() 5, 6
(Mon 09/07) (Week 3) (Labor Day – No Classes)  
Wed 09/09 Basic Scheduling Policies 7, Project 1 due at 1:00 PM
Fri 09/11 Project 1 Solutions  
Mon 09/14 (Week 4) More Sched. Algs, MLFQ 8, Project 2 out
Wed 09/16 Finish MLFQ, Lottery Scheduling 9, 11
Fri 09/18 Memory Virtualization 12, 13, 14
Mon 09/21 (Week 5) Translation, Segmentation 15, 16
Wed 09/23 Lab Day: Project 2  
Fri 09/25 Project 2 Questions  
Mon 09/28 (Week 6) Intro to Paging 18
Wed 09/30 (slack)  
Fri 10/02 TLBs 19, Project 2 due at 1:00 PM
Mon 10/05 (Week 7) Multi-level Page Tables 20
Wed 10/07 Project 2 Solutions  
Fri 10/09 Swapping, Replacement Policies 21, 22
Mon 10/12 (Week 8) Exam Review 23, 24
Wed 10/14 Exam 1  
(Fri 10/16) (Fall Break)  
Mon 10/19 (Week 9) Exam Solutions; Project 3 25, 26, Project 3 out
Wed 10/21 Intro to Concurrency, Thread API and Locks 27
Fri 10/23 Concurrent Data Structures, Building Locks 28, 29
Mon 10/26 (Week 10) Ticket Locks  
Wed 10/28 Locks with Queues 30
Fri 10/30 Condition Variables  
Mon 11/02 (Week 11) Producer/Consumer  
Wed 11/04 Semaphores 31
Fri 11/06 Lab Day: Project 3  
Mon 11/09 (Week 12) Project 3 Questions/Debug  
Wed 11/11 Concurrency Bugs 32, 34, Exam 2 (take-home) out
Fri 11/13 I/O Devices 35, 36
Mon 11/16 (Week 13) Disk Scheduling 37
Wed 11/18 RAID 38, Project 3 due at midnight
Fri 11/20 File Systems 39, Project 4 out
Mon 11/23 (Week 14) File System Implementation (VSFS) 40, Exam 2 due at midnight
(Wed 11/25) (Thanksgiving Break)  
(Fri 11/27) (Thanksgiving Break)  
Mon 11/30 (Week 15) Fast File System (FFS) 41
Wed 12/02 Journaling 42
Fri 12/04 Project 4 Questions RQ: You MUST bring a question about the project!
Mon 12/07 (Week 16) Project 4 Questions RQ: You MUST bring a question about YOUR code!
Wed 12/09 Exam Review Project 4 due at midnight
Sat 12/12 8:00 AM–11:00 AM Exam 3 (Final)  

Monmouth College Services