COMP 345: Operating Systems, Spring 2025

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 01/22 (Week 1) Operating Systems Overview OSTEP 0, 1, 2
Fri 01/24 C Review Tutorial, Project 1 out
Mon 01/27 (Week 2) More C Exercises  
Wed 01/29 CPU Virtualization: Limited Direct Execution 3,4
Fri 01/31 Project 1 Questions; fork() 5, 6
Mon 02/03 (Week 3) Basic Scheduling Policies 7, Project 1 due at 10:00 AM
Wed 02/05 Project 1 Solutions  
Fri 02/07 More Sched. Algs, MLFQ 8, Project 2 out
Mon 02/10 (Week 4) Finish MLFQ, Lottery Scheduling 9, 11
Wed 02/12 Memory Virtualization 12, 13, 14
Fri 02/14 Translation, Segmentation 15, 16
Mon 02/17 (Week 5) Project 2 Questions  
Wed 02/19 Intro to Paging 18
Fri 02/21 (slack)  
Mon 02/24 (Week 6) TLBs 19, Project 2 due at 10:00 AM
Wed 02/26 Multi-level Page Tables 20
Fri 02/28 Project 2 Solutions  
Mon 03/03 (Week 7) Swapping, Replacement Policies 21, 22
Wed 03/05 Exam Review 23, 24
Fri 03/07 Exam 1  
(Mon 03/10 – Fri 03/14) (Spring Break)  
Mon 03/17 (Week 8) Exam Solutions; Project 3 25, 26, Project 3 out
Wed 03/19 Intro to Concurrency, Threat API and Locks 27
Fri 03/21 Concurrent Data Structures, Building Locks 28, 29
Mon 03/24 (Week 9) Ticket Locks  
Wed 03/26 Locks with Queues 30
Fri 03/28 Condition Variables  
Mon 03/31 (Week 10) Producer/Consumer  
Wed 04/02 Semaphores 31
Fri 04/04 Project 3 Questions/Debug  
Mon 04/07 (Week 11) Concurrency Bugs 32, 34, Exam 2 (take-home) out
Wed 04/09 I/O Devices 35, 36
Fri 04/11 Disk Scheduling 37
Mon 04/14 (Week 12) RAID 38
Wed 04/16 More RAID Project 3 due at midnight
(Fri 04/18) (Easter Break)  
(Mon 04/21) (Week 13) (Easter Break)  
Wed 04/23 File Systems 39, Project 4 out
Fri 04/25 File System Implementation 40, Exam 2 due at midnight?
Mon 04/28 (Week 14) Finish VSFS, Intro to FFS 41
Wed 04/30 FFS  
Fri 05/02 Project 4 Questions 42
Mon 05/05 (Week 15) Journaling Project 4 due at midnight
Wed 05/07 Exam Review  
Mon 05/12 11:30 AM–2:30 PM Exam 3 (Final)  

Monmouth College Services