Principles of Operating Systems

(CMSC 421)

Course Summary

This class covers the basics of modern computer operating systems, including processes and synchronization, memory management, I/O, file systems, and security / protection. Students taking this class should have completed CMSC 341 (Data Structures) and some combination of hardware courses depending on whether they are CMSC or CMPE majors. The precise combinations are specified above. You MUST have completed ALL the prerequisites before you take this course. In addition, students must be familiar with C / C++ because the projects will require a significant amount of programming effort and constitute a significant chunk of the grade. Students not comfortable with their programming skills under UNIX would benefit from the Stevens text. Students not comfortable with the C Programming language will benefit from the K & R book. The projects will involve modifying the Linux kernel which is written in C. Copious documentation on the Linux kernel is available on the internet, and we shall provide you with links to several appropriate sites. If you prefer to have that in a book form however, we will suggest the book shortly. Tannenbaum's text is an interesting alternative to our main textbook, and does a better job of presenting some of the material. Note however that the recommended texts are just that . recommended. You are not required to buy any of them.

Class Time:
Section 01: MW (5:30 PM - 6:45 PM) ITE-233
Section 03: TuTh (11:30 AM - 12:45 PM) ITE-229 (

Books (Required): Operating Systems Concepts
Recommended: The C programming Language
Recommended: Understanding the Linux Kernel
Recommended: Advanced Programming in the UNIX Environment
Highly Recommended The Linux Cross Reference Alternative LXR Free Electrons

Discussion Group : Piazza

Instructors:
Nilanjan Banerjee (Section 01) (email: nilanb AT umbc.edu)
Anupam Joshi (Section 03) (email: joshi AT cs.umbc.edu)

Nilanjan Banerjee: Office hours (Room # 362) :
Monday (2:00 - 3:00 pm), Wednesday (2:00 - 3:00 pm)
Anupam Joshi: Office hours (Room # 328) : Open door or by appointment

Teaching Assistant:
Lawrence Sebald (email: lsebald1 AT umbc.edu)
Office hours : M (11:00 AM -- 1:00 PM), Tu (9:30AM - 11:30AM) ITE240
Milind Patil (email: milindp1 AT umbc.edu)
Office hours: Tu (11:00AM - 1:00PM), Th (1:00PM - 3:00PM) ITE240

Grade Distribution: Projects (40%), Homeworks (10%), Midterm (20%), Finals (25%), In-class Discussion (5%)

Academic Honesty: UMBC's academic honesty policy can be found here . As you have probably been told umpteen times by now, violating this policy is a strict no-no! If we catch anyone cheating, we will take the maximum action possible against them, including reporting the matter to the appropriate university authorities. In fact, we are now mandated to report even minor infractions that in the past we would have dealt with within the course by dropping a letter grade on the assignment, etc. Please cooperate by doing your own work and not seeking inappropriate help from your classmates. You may, of course, discuss homework and other assignments amongst yourselves, as long as that discussion does not lead to a exchange of solutions. You should be aware that we may use a cheat-checker program to run over randomly selected assignments and look for unusual similarities. This program isn't perfect, but it does a great job of identifying the few pairs of handins that should be hand-checked for cheating. In previous classes, this program has done very well at finding cheaters, so please don't force us to demonstrate how well it works this semester.

ADA Compliance: We recognize that some of you may have disabilities that require special attention from the instruction staff. Please make us aware of them at your earliest convenience so that UMBC can make suitable arrangements.

Acknowledgements: Some parts of the course is adapted from the Operating Systems course taught at UMass by Prof. Mark Corner and at UIC by Prof. Jakob Eriksson

News Items