Prerequisites
Cmp Sc 2700, Cmp Sc 2750, and Cmp Sc 3130

Textbooks
Bill Stallings. Operating Systems: Internals and Design Principles. Prentice-Hall , Englewood Cliffs, NJ. 2017.
Robbins/Robbins. Unix Systems Programming -- Communication, Concurrency, and Threads. Prentice-Hall. 2003.

Course Description

This course covers the structure of a generic operating system, considering in detail the algorithms for interprocess communications, process scheduling, resource management, memory management, file systems, and device management. It presents examples from contemporary operating systems. This course also requires practical projects implemented within a modern operating system or simulator environment.

Topics

We'll discuss the structure of a generic operating system, with an emphasis on the algorithms and data structures needed to perform various tasks to manage processes, resources, memory, files, and I/O devices. There will be extensive programming in C under Linux environment. The sequences of topics will be as follows (in that order):

Outcomes

At the end of this course, you are expected to be able to proficiently perform system programming tasks. You should also be knowledgeable in different operating systems topics as outlined above. You should understand the algorithms to achieve various tasks in operating systems and use the knowledge to improve the performance of your programs.

Requirements

I'll expect you to be present in most of the classes. I will not be taking attendance but if you start missing too many classes, please take responsibility for your absence, specially when it concerns tests and homeworks. When you come to class, you must change your cell phones to silent mode. If your cell phone rings during the test, I'll deduct 10% points from that test score for you. If you are more than ten minutes late, please try to not disrupt the class. I'll penalize you by one letter grade for habitually coming late to class (more than five times I notice you coming late or leaving early).

All correspondence shhould be made through your UMSL-provided email. Please use the class email list on Canvas for communications. Any unsigned email and email not in plain text will go unanswered by me. Please do no send me any attachments without talking to me first.

Projects

You will be given programming assignments, typically a set of programs every two weeks. Assignments will be due at 11:59pm on the day noted on the assignment. Assignments should be submitted on hoare and must execute properly on hoare for credit. You should start working on the projects as soon as they get assigned as some of them may get tricky. In the past, the students who have asked a lot of questions have scored better grades. Do not hesitate to ask a question in class, in my office, or over email, especially if you do not have an idea on how to start working on the project.

Grading

The grade will be based on programming assignments and three tests. All tests will be open book and open notes. Tests are non-comprehensive but may have a small overlap of material from one test to next. Each assignment must be meticulously documented and clearly identify its purpose, author, and date. I will like to read your submitted code; I should not have to figure it out. It will do you good if you peruse the Gnu Coding Standards. When you come to me for help with the code, or when you submit the code, make sure that you follow good indentation practices. If you miss any test or assignment without making prior arrangements, you will have a zero. When making such arrangements, please stop by my office instead of sending me an email. I will not give any make up tests. The distribution of grades will be as follows:

Programming assignments 40%
Three tests 20% each

Students taking the course in graduate standing will be required to show a greater mastery of the material. This can be shown by additional work and additional mastery shown in exams.

Anyone desiring an EXC grade after March 31, 2020 must be passing the course at that point to get EXC.

Failure to hand in any assignment will result in an automatic zero for that assignment. If some student is unable to hand in an assignment by the deadline, he/she must discuss it with me before the deadline. I'll encourage you to talk to other students regarding homework but you should not collaborate to the extent that two submissions are copies of each other. If you are found copying an assignment (from another student or internet), or if your submission has unreasonable similarity to another submission, you get a zero for that assignment automatically. A second offense will be reported to the University officials and students involved will face serious consequences. I may ask you to come to my office and explain your code to me; in case you are not able to explain the code to my satisfaction, I'll assign you a zero in that project.

Instructional Strategies

The instruction will follow the standard lectures using PDF notes as an aid. You are encouraged to ask questions if something is not clear or if you start to get lost in the lectures. If a project is not clear to you, you should ask questions to clarify that in class, in my office, or via email. If you do not have any idea on how to start working on a project, say so and I’ll try my best to help you. However, I’ll expect that you will ask project-related questions early on and not at the last minute when the project is due.

Miscellaneous

If you have any disability that requires an accommodation (as per UMSL policy), you must notify me in advance. If you cannot attend the class due to a religious holiday or a university-sanctioned event, please let me know in advance as well. For religious holiday, please also fill in this form. In case you are down with flu, stay absent from the class till you recover, and contact me via phone or email. I'll try my best to make accommodation for you in that case.

You will have an account on the Linux machine hoare.cs.umsl.edu in the CS department and you should use it for all assignments. All programs must be done in C. Any assignment that fails to run on hoare automatically gets a zero. You can access hoare from home by signing on to campus VPN, or by logging on to admiral and then, ssh'ing from there.

Exam Dates

Test 1 February 26, 2020
Test 2 April 08, 2020
Test 3 Scheduled on final exam

In case of class cancellation due to weather-related or other campus emergency on the day of a test, the test will be held in the following class period. For the third test, if the campus is closed on the scheduled date, the alternative date will be the day after the scheduled date; possibly in the conference room in the department.

Other important dates

January 27, 2020 Last day to enroll in the course
February 17, 2020 Last day to drop without receiving a grade
March 16, 2020 Last day to drop the course with instructor approval
April 20, 2020 Last day to drop the course with instructor approval

Anyone desiring an EXC grade after March 31, 2020 must be passing the course at that point to get EXC.

UMSL Course Policies

Participation (expectations)

Academic Integrity/Plagiarism

Mandatory Reporting

Access, Disability and Communication

Student Support and Services

Technical Support

Academic Support

Student Services

Departmental Tutoring

OS-related links