CMSC 412
Course Overview 

Operating Systems

Spring 2023


The goal is an in-depth understanding of how an operating system manages resources in a computer and provides programmers with a machine and device independent interface. There is a difficult and time-consuming programming project (GeekOS). You are provided the source code (a few thousand lines of C and some assembly) of a skeleton "Unix-style" operating system kernel for a PC-like x86 platform. You have to understand a large part of this code and augment it in various ways: pipes, fork, signals, semaphores, cpu scheduling, memory paging, file system, etc. The x86 platform is simulated by QEMU. The programming environment is Gnu/Linux.

Administrative stuff


Ashok Agrawala 
Email: (put "412" in the subject) 
Office: IRB 5204

Zoom Room:
Office hours: By Appointment





On Piazza

TA office hours

On Piazza


Projects and GeekOS



Course grade

We will be using several assessment tools for this semester for this course, including

Participation means asking good questions and/or answering questions well. To make my life easier, you will get these points only if you're just below a cutoff (otherwise it doesn't matter).


Required: cmsc412:Operating Systems –based on

Operating System Concepts, Silberschatz, Galvin and Gagne, 10th edition, from

Here are the instructions to access the book

1. Sign in or create an account at

2. Enter zyBook code: UMDcmsc412AgrawalaSpring2023

3. Subscribe

You have to enroll at this site as a student. This is an online book from which reading and other assignments will be given.

Videos (Neil Spring)

(Should require umd central authentication for box access)

Excused Absence and Academic Accommodations

Recently the University approved a policy for class absence for students. All students are expected to attend ALL classes.


Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:

a) Make a reasonable attempt to inform the instructor of his/her illness prior to the class.

b) Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness.  Each note must contain an acknowledgment by the student that the information provided is true and correct.  Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.

c) This self-documentation may not be used for the Major Scheduled Grading Events as defined below and it may only be used for only 1 class meeting during the semester.


Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, the student must provide written documentation of the illness from the Health Center or from an outside health care provider.  This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities.  No diagnostic information shall be given. 


University is in the process of specifying the Excused Absence policy for this semester and we will conform to it.


Disability Support Accommodations

Read the section "Accessibility" in UMD's Course Related Policies.

Academic Integrity

Read the CS Department Academic Integrity policy.

Also read the sections "Academic Integrity" and "Code of Student Conduct" in UMD's Course Related Policies.

Projects are to be done individually.

Consider each programming assignment to be a take-home exam.

Do not expose your source code to others. Do not leave it potentially accessible to others, e.g., unlocked unattended laptop, publicly accessible websites, unsecured servers, unsecure communications.

Do not use any parts of other's source code. This also applies to code from online searches, e.g., Sourceforge, Stackoverflow, Google.

Interaction via course discussion forum is permitted. Discussion of problems and code solutions is permitted as long as you do not write down code during your discussion and you wait at least 30 minutes after the end of the discussion before you write code based on the discussion.

Procrastination and Piazza

Do not wait for project or exam deadlines before asking your questions.

Piazza is not a replacement for office hours as far as getting responses from staff is concerned.

Response times on Piazza will inevitably deteriorate as the semester goes by. Early on, the projects are simple and your questions are relatively precise. Later projects are more intricate and typically there is a flood of vague questions (eg, "Why is this not working?") just before due dates. It's unlikely you will get helpful answers to such questions in time and on Piazza.

This also applies to questions about class material. Just before exams, there is usually a flood of questions that should have been asked in office hours or class when the material was covered. Again, it's unlikely you will get helpful answers in time and on Piazza.


Back to CMSC 412homepage

lastmodified 01/19/2023

Web Accessibility