Term: Spring 2026

Instructor: Aline Normoyle

  • Welcome! To those of you about to rock, I salute you!

Course Info

Welcome to CS355: Operating Systems!

octopus os

A practical introduction to modern operating systems, using case studies from UNIX, MSDOS and the Macintosh. Topics include computer and OS structures, process and thread management, process synchronization and communication, resource allocations, memory management, file systems, and select examples in protection and security. This is a challenging, implementation-oriented course with a strong lab component

Students should expect to spend at 15-20 hours of work each week, including 4.5 hours or class and lab time

Learning Goals:

  • Processes and threads, Unix system calls

  • Synchronization, classic IPC problems such as race conditions and deadlocks,

  • Processor scheduling

  • Memory management internals

  • File system internals

  • I/O and disks

  • Other OS topic such as multi-processor, visualization and the cloud, OS security, etc

  • Kernel design and implementation

  • Performance profiling and debugging

  • Experience in low-level systems programming in a realistic development environment

  • programming assignments enable students to further develop the analytical skills required to manage system complexity, creative problem solving, and engages student in collaborative and in-depth application of their high-level operating system knowledge.

Learning Outcomes

  • Understanding fundamental OS components and structure.

  • Understanding OS design challenges and algorithms

  • Knowledge of the services provided by the OS and details of major OS concepts.

  • Experience in developing low-level operating system code.

  • Understanding the performance and design trade-offs in complex software systems

  • Experience in developing benchmarks and test suites to evaluate the performance and robustness of system

Meeting Times

Activity Location Time

Lecture

Park 336

Tuesday and Thursday 11:40 PM - 1:00 PM

Lab

Park 231

Thursdays 2:40 PM - 4:00 PM

Office Hours - Prof. Aline Normoyle

Park 230/231/200A

Tuesdays and Thursdays, 4-5 PM, by appointment

Office Hours - Rebecca Lassman

Park 231

Schedule

The syllabus may change during the semester. Please check here every week for updates on lecture content, worksheets, and assignments.

Week Date Agenda

1

January 20, 22

Introduction, C/C++ Review, Bash shell review, Git

  • Topics: History, Bash, Compiling and Building, C/C++, System calls, OS concepts

  • Assignment 01: Due January 27

  • Reading: Tanenbaum 1.1-1.6

  • Optional reading: Dive into systems

  • Recommended study questions (Thurs): Tanenbaum pgs 81-83: 1, 6, 9, 10, 12, 20, 26, 28, 30

2

January 27, 29

Processes

3

February 3, 5

Job Control

4

February 10, 12

Threads

  • Topics: Threads, pthreads

  • Lab Feb 12:

  • Assignment 04: Due Feb 17

  • Read: Tanenbaum 2.2

  • Optional reading: Dive into systems

  • Recommended study questions (Tues): Tanenbaum pgs 174-180: 9, 13, 14, 15, 16, 17, 18

5

February 17, 19

Thread synchronization

  • Lab Feb 19

  • Assignment 05: Due Feb 24

  • Read: Tanenbaum 2.3, 2.5

  • Optional reading: Dive into systems

  • Recommended study questions (Tues): Tanenbaum pgs 174-180: 19, 21, 24, 25, 26, 27, 30

6

February 24, 26

Scheduling and Deadlock

  • Lab Feb 26: Userthread library demos

  • Assignment 06: Due March 3

  • Read: Tanenbaum 2.4, 6

  • Recommended study questions (Tues): Tanenbaum pgs 174-180: 40, 42, 43, 44, 45, 47, 48, 49, 50, 51

  • Recommended study questions (Thurs): Tanenbaum pgs 465-470: 2, 3, 10, 14, 15, 16, 21, 22, 24, 26, 27, 34

7

March 3, 5

Midterm I

  • Study Guide 01

  • Review and Exam 01 In Class, March 5 (80 minutes, closed book. One written cheat sheet)

8

March 10, 12

Spring Break

  • NO LECTURES, LABS, HOMEWORKS

9

March 17, 19

Malloc/Free, Memory Management

10

March 24, 26

Virtual Memory and Paging

  • Read: Tanenbaum 3.4-3.6

  • Lab March 27: Memory management demos

  • Recommended study questions (Tues): Tanenbaum pgs 254-262, 15, 20, 28, 30, 33, 36, 47

11

March 31, April 2

File Systems I

  • Read: Tanenbaum Chapter 4.1-4.3, 4.5

  • Lab April 2

  • Assignment 07: Defragmentor, Due Sunday, April 6

  • Recommended study questions (Tues): Tanenbaum pgs 332-336, 6, 10, 18, 19, 21, 24, 26

12

April 7, 9

File Systems II

  • Read: Tanenbaum Chapter 4.4

  • Lab April 10

  • Project: File System, Due Sunday, April 27

  • Recommended study questions (Tues): Tanenbaum pgs 332-336, 28, 30, 33, 40, 41

13

April 14, 16

I/O, Virtualization

  • Read: Tanenbaum Chapter 5.1-5.3, 7.1-7.11

  • Lab April 17: File System checkins: format, writing files

  • Recommended study questions: Tanenbaum pgs 332-336,

14

April 21, 23

Security and Protection

  • Read: Tanenbaum Chapter 9

  • Lab April 24: File System checkins: simple shell integration

  • Recommended study questions: Tanenbaum pgs 332-336,

15

April 28, 30

Review and Midterm

Text and Tools

Grading Policies

All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

30%

Exams

60%

Assignments, labs, projects, oral exam

5%

Reading quizzes

5%

Participation

Late Policy

There are weekly or bi-weekly programming assignments as well as written homeworks (problem sets). You are encouraged to work together, but you should write up your own solutions (except for group programming assignments).

You may submit up to one day late for any reason no questions asked. You must ping the instructor if you plan to submit late. Beyond one day, no assignment or lab work will be accepted.

Some programming assignments will be eligible for resubmission. On these assignments, you are encouraged to submit partially complete work. To be eligible for resubmission, your submission must compile and have a minimal set of features implemented, as specified by the assignment. You may resubmit once to earn up to 90\% of the credit. The resubmission policy is our way of acknowledging the implementation challenges you will face in this class, while keeping you accountable.

Written homeworks (problem sets) are due in class on the day specified. Late written homeworks are not accepted.

Academic Integrity

At Bryn Mawr, we assume students are trustworthy and work with honesty and integrity. Look here for information about Bryn Mawr’s Honor Code.. Obviously, quizzes and exams must be your own work. However, you will be allowed to work with others on assignments; although everyone must submit their own work.

Collaboration is not allowed on exams or quizzes.

Programming is a creative skill that takes practice and effort to develop. It’s essential that you develop your own skills for developing algorithms and implementing them through programs.

You are encouraged to discuss the lecture material, projects and problems with other students, subject to the following restriction: the only "product" of your discussion should be your memory/understanding of it - you may not write up solutions together, or exchange written work or computer files. Group projects are the only exceptions to this - in this case, these collaboration rules apply to students outside of your group.

Code should not be copied without permission from the author. If permission is given, code should be cited at the location it is used with a comment. If your solution is inspired by any outside resources, you MUST cite them.

You understand the code you wrote if you can do the following:

  • Explain how your code works to someone else, without looking at your code

  • Explain the system calls necessary to complete your assignment without looking them up online

  • Write a similar program within a few minutes, without looking up help online

Here is advice of what has helped me the most to improve as an engineer and programmer:

  • Most beneficial: Writing my own programs from scratch, followed by stepping line by line using a debugger to make sure it worked as intended

  • When stuck, debugging the program with the help of a more experienced developer

  • Comparing my solutions with others after I finished my own solution

I do not recommend relying on stack overflow, copying old solutions, and using Chat-GPT. The absolute worst way to program is by cutting and pasting code you don’t understand, guessing your way to something that kind of works.

I am not going to police how you study and develop skills. But I will be assessing you on the results of your effort. If you’re not doing well, you need to figure out how to work differently.

Guidelines:

  • DO discuss ideas and approaches with your classmates.

  • DO discuss ideas and approaches with your TAs and instructor.

  • DO search for documentation and sample programs for built-in C functions and C syntax.

  • DO use code from our text books and class (with attribution).

  • DON’T use Chat-GPT (or other LLMs) to generate solutions.

  • DON’T copy full solutions, from online tutorials, previous students, etc

  • DON’T use functions and C syntax that is disallowed by the Makefile. We are deliberately using simple and portable C.

  • DON’T modify any basecode that comes with your assignment.

  • DON’T ever share your code with other students.

It’s ultimately up to you to learn and develop skills. No one can do it for you. You must do the work.

Academic Accommodations

To receive an accommodation for a course activity (such as more time on quizzes and exams), you must have an Accommodation Letter from the Office of Student Disability Services and you need to contact us to work out the details of your accommodation at least two weeks prior to the activity. Forms can be emailed to me, the instructor.

You are also welcome to contact us privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services. Also note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website. (http://www.brynmawr.edu/access-services/)

Covid and Sick Policy

Lectures and labs will have a mask-friendly policy. All are welcome to wear a mask if they so wish, but no one is mandated to wear a mask.

If you are symptomatic (coughing, sore throat, or running nose), please either stay at home or come into campus with a mask. Lectures will be recorded so they can be watched later. Missed lab activities and quizzes will have their grade credit transferred to the final.

Academic support

Title IX

Bryn Mawr/Haverford College is committed to fostering a safe and inclusive living and learning environment where all can feel secure and free from harassment. All forms of sexual misconduct, including sexual assault, sexual harassment, stalking, domestic violence, and dating violence are violations of Bryn Mawr/Haverford’s policies, whether they occur on or off campus. Bryn Mawr/Haverford faculty are committed to helping to create a safe learning environment for all students and for the College community as a whole. If you have experienced any form of gender or sex-based discrimination, harassment, or violence, know that help and support are available. Staff members are trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more.

The College strongly encourages all students to report any incidents of sexual misconduct. Please be aware that all Bryn Mawr/Haverford employees (other than those designated as confidential resources such as counselors, clergy, and healthcare providers) are required to report information about such discrimination and harassment to the Bi-College Title IX Coordinator.

Information about the College’s Sexual Misconduct policy, reporting options, and a list of campus and local resources can be found on the College’s website: