Discussion of various aspects of computer operating systems design and implementation.
Topics include I/O programming, concurrent processes and synchronization problems, process management and scheduling of processes, virtual memory management, device management, file systems, deadlock problems, system calls, and interprocess communication.
Programming projects are required.
Prerequisites: CSCI-2300 (Data Structures and Algorithms) and CSCI-2500 (Computer Organization)
Upon successful completion of this course, students will:
Operating Systems, C, and Unix Network Programming
Pearson Education Group, 2011
(custom book - see below)
Operating Systems, 3rd ed.
The C Programming Language, 2nd ed.
by Kernighan and Ritchie
Unix Network Programming, Volume 1 (Sockets Networking API), 3rd ed.
We will use a variety of programming languages, most of which have compilers or interpreters available for free download from the Web. We will also use a variety of platforms, including Windows, Linux, and Macintosh. Expect to write programs in C, C++, Java, and/or Python. To study operating system concepts, we will focus on C on Ubuntu.
There will be a midterm exam and a final exam, each of which is open book, open notes.
Because it is vital that students apply what they learn, expect frequent homework assignments, projects, and other such exercises. Assignments are due on the due date specified and will be penalized 10 points for each day late, up to a maximum of 5 days, after which the assignment cannot be accepted for credit.
Numerous assignments will be assigned and reviewed in subsequent classes, though not all will be collected for credit. Regardless, doing all such assignments will greatly improve your understanding of the course material and therefore your grades on homeworks, projects, and exams.
Instructions for submitting assignments will be made available for each assignment. All programming assignments must execute successfully in Ubuntu.
Grades for individual and team-based assignments are determined by the instructor and the TAs. Students may appeal a grade by contacting the instructor via email or in person at the end of our designated class time.
Grades will be provided to students throughout the semester (via the RPI LMS) to provide an ongoing assessment of their progress. By mid-semester, students will have some homework and project grades, as well as their midterm exam scores.
Please attend class and be prepared to participate in class discussions and activities.
Further, team-based work requires full cooperation and coordination from each team member. Lack of participation is detrimental to team-based work and grades suffer accordingly. Note that students are not required to work in teams.
Turn off cell phones and other non-classroom electronic devices before class begins.
Federal law requires all colleges and universities to provide specified types of assistance to students with disabilities. If you have such special assistance, please obtain an authorizing memo from Disability Services for Students by contacting Mark Smith, Dean of Students, in the Dean of Students Office (x6266). Information about a student's special needs will be treated as confidential.
Please submit a copy of your authorizing memo to your professor well in advance of any affected exam or assignment. Failure to do so may result in a lack of special accommodations.
From The Rensselaer Handbook of Student Rights and Responsibilities: Intellectual integrity and credibility are the foundation of all academic work. Academic dishonesty is, by definition, considered a flagrant offense to the educational process. It is taken seriously by students, faculty, and Rensselaer and will be addressed in an effective manner.
Individual programming assignments in this course must be the sole work of the individual student, though your professor, TAs, and fellow classmates may help in figuring out how to solve the given problems. For team-based work (though working in a team is optional), work must be the sole work of the individual team members, though your professor, TAs, and fellow classmates may help in figuring out how to solve the given problems.
Copying of code is strictly forbidden and will not be tolerated.
Tests and exams in this course are certainly to be the sole work of each individual student.
If found in violation of academic dishonesty policy, students may be subject to two types of penalties: (1) the instructor administers an academic (grade) penalty; and/or (2) the student may be subject to the procedures and penalties of the student judicial system outlined in this handbook.