Cmp Sc 4760 -- Operating Systems
Fall 2020
- 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.
- Bic. Operating Systems. zyBooks, 2021. Optional. It has
good exercises that can help you prepare for tests. It also has
some animations that can explain some points better.
Welcome
This is a course about operating systems and system programming. You
will learn the algorithms to manage the internals of operatings systems,
specifically interprocess communications, process scheduling, resource
management, memory management, file systems, and I/O scheduling. The
course will help you with the ability to explain the internals of
operating systems and improve your programming skills through large
projects. I use the lessons learned in operating systems in my research
and consulting work to optimize the code that I write. I’ll like for
you to improve your understanding of programming in C for tasks
involving interactions with the system. We’ll do all programming in
Linux using the Gnu C compiler on opsys.
This is one of the most difficult courses you will encounter in the
curriculum. However, I emphasize that I’ll like you to succeed and am
here to help you in any possible way, short of doing your projects.
Teaching Philosophy
I believe in learning by doing things. Thus, I’ll be assigning a number
of projects to simulate the algorithms you learn for operating systems.
The tests will be created to assess your mastery of the concepts while
the projects will assess your ability to apply the right procedure by
analyzing a situation and create code to solve complex problems. I’ll
be happy to help any student who gets stuck while working on the
project. You are welcome to get in touch with me via Zoom at any time,
or send me a message to meet over zoom to discuss any issue related to
class, or even related to your career.
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.
Goals of the course
This course will deepen your understanding of system programming,
building on the foundation acquired in CMP SCI
2750. You will use your programming skills to design and implement
data structures and algorithms used in the innards of an operating
system. The overall goals of the course are:
- Understand the internals of a generic operating system
- Improve your programming skills by working on some some non-trivial
simulations
- Become an expert programmer, ready to tackle industrial strength
projects
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.
We'll touch on the security aspects of the operating systems throughout
the course. There will be
extensive programming in C under
Linux environment. The sequences of topics will be as follows (in that
order):
The
videos of lectures on Youtube are available.
Outcomes
At the end of this course, you are expected to be able to proficiently
perform system programming tasks. You should also be able to explain
different operating systems topics as outlined above. You should
know the algorithms to achieve various tasks in operating systems
and use the knowledge to improve the performance of your programs.
Online Learning
This is a fully online asynchronous course, meaning that there is no
requirement for you to meet face-to-face or virtually. The course was
designed this way to allow for maximum flexibility, so you can integrate
learning course content into your busy lives. That said, this is not a
self-paced course, meaning that you do have to turn in assignments and
participate in discussions by specific due dates. These due dates will
require good time management on your part. You will notice that with
the magnitude of projects, you may get stuck on some point/bug and end
up wasting a lot of time; so it is prudent to start on your projects
early.
Time Requirements
This is an active class with online instruction complemented with
extensive programming projects. Our course is a 3-credit hour course
and requires 3 hours of your time each week to imbibe the online
lectures in addition to the time it takes you to read the required
materials, watch the videos, and complete the projects, with the
programming projects taking up a lot of your time. That means that you
need to plan to spend a minimum of 8 hours every week (possibly up to
10-12 hours a week) on activities related to this course. If you would
like to explore how the online Canvas activities work, please consult
the Online Canvas
Overview course in Canvas where you can practice posting to a
discussion board, take a practice quiz and more.
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:
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 22, 2021 |
Test 2 |
March 26, 2021 |
Test 3 |
May 07, 2021 |
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)
- It is vitally important that our classroom environment promote the
respectful exchange of ideas. This entails being sensitive to the
views and beliefs expressed during discussions whether in class or
online. Please speak with me before recording any class activity.
It is a violation of University of Missouri policy to distribute
such recordings without my authorization and the permission of
others who are recorded.
- Turn off sound on beepers, cell phones, and other devices during
class. Adherence to the Student Conduct Code is expected.
- I am committed to insuring a positive learning environment by
respecting that University policy (p.
66).
- Your success in this course will heavily depend on your ability to
communicate, engage and participate in all course activities.
Successful completion of this course requires that a student keep up
with all assignments, quizzes, projects and tests.
- If you are unable to participate in the scheduled class activities,
you must notify the instructor within the week of that class module.
An unexcused failure to engage or participate with the class will
be counted as an absence; unexcused absences may result in failure.
The instructor reserves the right to make judgment to accept
and/or makeup assignments missed because of failed participation in
the course activities.
Academic Integrity/Plagiarism
- Students are responsible for being attentive to and observant of
campus policies about academic honesty as stated in the University's Student
Conduct Code (p.~60).
- To avoid accusations of academic dishonesty, please submit all
written work to the Turnitin system before finalizing what you
submit for evaluation. Check information about The Writing Center
@UMSL that is linked to MyGateway Home.
- Plagiarism is the use of another persons words or ideas without
crediting that person. Plagiarism and cheating will not be
tolerated and may lead to failure on an assignment, in the class,
and dismissal from the University. View
this campus policy
Mandatory Reporting
- Under Title IX, all UMSL faculty, staff, and administrators (with
limited exception) are obligated to report any incidents of sexual
harassment, sexual misconduct, sexual assault, or gender
discrimination to the Student Affairs office and/or other University
officials. This ensures that all parties are protected from further
abuses and that victim(s) are supported by trained counselors and
professionals. Note: There are several offices at UMSL (e.g.,
Counseling Services, Health Services, Community Psychological
Service, Center for Trauma Recovery, and Student Social Services)
whose staff are exempt from Title IX mandated reporting, when the
information is learned in the course of a confidential
communication.
Access, Disability and Communication
- Students who have a health condition or disability, which may
require accommodations in order to participate effectively in this
course, should contact the Disability Access Services
Office. Information about your disability is confidential.
- 144 Millennium Student Center
- Phone: (314) 516-6554
- If you have difficulty communicating in English with the instructor
of this course, contact the Office of International
Students and Scholar Services.
- Phone: (314) 516-5229
- Email
Student Support and Services
Technical Support
- My Gateway (Blackboard): If you have problems logging into your
online course, or an issue within the course site, please contact
the Technology
Support Center.
- Phone: (314) 516-6034
- Email
- Wimba: If you have any questions regarding Wimba Classroom and
Wimba Voice Tools, contact the Faculty Resource Center:
- Phone: (314) 516-6704
- Email
- Outside normal office hours, you may also contact Wimba for 24/7
assistance:
- Phone: (866) 350-4978
- Email
Academic Support
- The Online Writing Lab: At our My Gateway site, students can
send their papers to our tutors, who will read them and send them
back with suggestions. Students can also access SafeAssign, which
identifies quoted material in their essays.
- Visit the online Writing Lab page on MyGateway to submit drafts
online.
- We try to respond within 48 hours, but it may take longer, so
allow ample time.
- NetTutor: Online tutoring in many subjects is now available
through NetTutor. In your courses on MyGateway, click on Tools and
select NetTutor to log in.
Student Services
Departmental Tutoring
- The department offers tutoring for up to Cmp Sci 3130, and
occasionally for other courses
- Check MyGateway organization CSTutoring.
OS-related links