COMP 345: Operating Systems, Spring 2023

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

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

Monmouth College Services