This course covers the basic principles of operating systems. Major
concepts to be discussed include processes and threads,
concurrency and synchronization,
CPU scheduling, memory management, storage,
and file systems.
(Undergraduate level CS 310 Minimum Grade of C) and (Undergraduate
level CS 367 Minimum Grade of C or Undergraduate level ECE 445 Minimum
Grade of C). In order to succeed in the class you must be comfortable
programming in C.
The required textbooks for this class is: Operating
Systems: Three Easy Pieces, by
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau,
Arpaci-Dusseau (Version 1.00) (free PDF for each chapter available
The recommended textbooks are 1. Operating System Concepts by Silberschatz,
Galvin and Gagne, 10th Edition, John Wiley & Sons 2018, ISBN: 978-1-118-06333-0.
2. Operating Systems Principles and Practice, by Thomas Anderson and Michael Dahlin, Second Edition.
ISBN: 978-0-9856735-2-9, Recursive Books, Ltd.
Upon completion of this course, the students should be able to:
Demonstrate knowledge of operating systems features, evolution, and
Show an understanding of the need for concurrent operation of multiple
tasks (processes/threads) and an ability to solve basic process
synchronization problems that arise from concurrent operation
Demonstrate knowledge of process scheduling, basic memory management,
storage systems, and file system manageme
Be able to implement basic algorithms for OS services such as memory
management and process scheduling
Demonstrate knowledge of security threats to an operating system from
both processes and networked sources and show an understanding of
Demonstrate knowledge of how system calls work along with the mechanisms for interrupt handling
There will be several programming projects in using the Operating
System OS/161. All projects will be programmed using the C language.
Submission of the projects and homeworks is via the
Projects are very time-consuming, and most likely are significantly
more time-consuming than your projects in other
classes. You will need to understand the OS kernel code, design new
OS features, and implement and test them!
Each project will come with the specific instructions, as well as
There is no late token. Always start your project as early as you can!
Remember to frequently backup your work.
If your code does not compile, you will get no credit.
We reserve the right to use MOSS and other software to detect plagiarism.
Tentative dates for midterm exams and the final exam are
Mar. 4th, April 15th, and May 13th, 1:30-4:10 pm.
No credit if your project does not compile. Late homeworks/projects
will have a penalty (specified in each assignment) and will not be accepted
3 days after the due date. There is no make-up for missed exams.
The students are responsible for keeping back-ups of their work while
they are working on an assignment.
For group programming assignments, each member of the group must make a separate submission. If a student makes multiple submissions, only the last submission will be graded. It is critical that the students double check the files they are submitting, as submitting a wrong, corrupted, or empty file is very likely to result in a score of 0 for that assignment.
If you think your work is not correctly graded then you must
initiate contact with the grader within a week of receiving the grade
(either email or on the
Blackboard). Grade contesting beyond this time window will not be
If you have a learning or physical difference that may affect your
academic work, you will need to furnish appropriate documentation to
GMU Disability Resource Center.
If you qualify for accommodation, the DRC staff will give you a form detailing appropriate accommodations for your instructor. If you have such a condition, you must talk to the instructor during the first week of the term about the issue.