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

Textbooks
Bill Stallings. Operating Systems. Prentice-Hall , Englewood Cliffs, NJ. 2015.
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. 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 \emph{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).

Grading

The grade will be based on programming assignments and three tests. All tests will be open book and open notes but no electronic devices will be permitted. 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
Anyone desiring an EXC grade after March 31, 2016 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.

The projects in this class will take up a lot of your time. So, you should start working on those as soon as they are assigned. 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.

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.

Please use the class email list on MyGateway for communications. Any unsigned email and email not in plain text will go unanswered by me. Please do not send me any attachments without talking to me first.

Exam Dates

Test 1 February 22, 2016
Test 2 March 23, 2016
Test 3 May 05, 2016

There is no 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 May 05, the alternative date will be the May 06, 2016, possibly in the conference room in the department.

Other important dates

January 25, 2016 Last day to enroll in the course
February 15, 2016 Last day to drop without receiving a grade
April 18, 2016 Last day to drop the course with instructor approval

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