DEPARTMENT OF COMPUTER
SCIENCE
CS 471
Operating Systems - Fall 2013
Description: This course covers the principles of operating systems
theory and practice. Fundamental concepts such as processes, synchronization,
scheduling, memory management, file systems and security will be presented.
Prerequisites:
Grade of C or better in CS 310 (Data Structures) and CS 367 (Computer Systems
and Programming). The students should be fluent in C programming language in
order to complete the course work, which includes substantial programming
projects.
Meeting Time and Location: Monday and Wednesday 1:30 – 2:45 PM, Sandbridge
Hall Room 107.
Required Textbook: "Operating System Concepts", by Silberschatz, Galvin and Gagne (9th Edition, John Wiley
& Sons 2012, ISBN 978-1-118-06333-0).
"Modern Operating Systems" (3rd edition, Prentice Hall 2008, ISBN:
0-13-600663-9) by A. S. Tanenbaum is another good
book on the principles of operating systems.
Office Hours: Monday, 3:00 – 4:00 PM; Wednesday
7:30 PM – 8:30 PM; and by appointment (Office:
Topics:
·
Introduction
·
Processes
·
Threads
·
Process Communication
and Synchronization
·
CPU Scheduling
·
Memory Management
·
File, I/O and Storage
Systems
·
Protection and
Security
·
Virtual Machines
·
Distributed Systems
Course Home Page: Throughout
the term, the course material (lecture slides, assignments, and announcements)
will be posted to the GMU Blackboard system which can be accessed at http://mymason.gmu.edu.
Teaching Assistant
(TA): Abhishek Roy (aroy6@gmu.edu)
TA Office Hours and
Location: Tuesday, 2:00 - 4:00 PM;
Thursday, 2:00 - 4:00 PM (Engineering Building, Room 4456)
Grading:
·
Midterm Exams (15% + 15%)
·
Final Exam 30%
·
Programming Projects
and Homework Assignments 40%
The students must
achieve a total score of at least 90 (out of 100) to be considered for an A. No
early exams will be given and make-up exams are strongly discouraged. A student should present an official and
verifiable excuse to miss an exam (such as a doctor's note).
All students must abide by the GMU Honor
Code and CS
Department's Honor Code and Academic Integrity Policies during the
semester. The students are supposed to work individually on the assignments/projects.
Collaboration will be allowed only for the group projects, within each group.
We reserve the right to use automated tools such as MOSS to detect plagiarism.
Violations of the Honor Code or a total score of 49 (or less) will result in an
F.
Computer Accounts: All students should have accounts on the central
Mason Unix system mason.gmu.edu
and on
VS&E Unix cluster zeus.vse.gmu.edu
(Instructions and related links are here). Students
can work
in VS&E computer labs for programming projects during the
specified hours.
Classroom
Behavior: During the lectures, the students should avoid behavior that
may distract others, including chatting, sleeping, playing games. The use of electronic devices (including laptops, PDAs, tablets, cell phones) is not allowed in this class. If you feel that your learning will be hampered by not having access to your tablet/laptop computer for note-taking or other course-related purpose, you should speak to the instructor at the beginning of the term.
Disability Statement: If you have a learning or physical difference
that may affect your academic work, you will need to furnish appropriate
documentation to
Course Outcomes:
· Demonstrate knowledge about the role and purpose of the operating systems
· Be able to explain the features of operating systems found in different types of computer systems (e.g. mainframe systems, personal computers, multiprocessor systems, handheld systems)
· Demonstrate basic knowledge about the evolution of operating system concepts from early batch systems to today’s sophisticated multiuser/multiprocessor systems.
· Demonstrate knowledge about different approaches to operating system design and the involved trade-offs
· Be able to explain the main performance evaluation criteria for computer systems and how the operating system design can have an impact on these.
· Show an understanding of the need for, and the potential run-time problems arising from, the concurrent operation of multiple tasks (processes/threads).
· Be able to solve the basic process synchronization problems, by also making use of basic data structures and programming techniques covered in previous courses.
· Demonstrate the knowledge about process scheduling, basic memory management and file system management techniques and their impact on the overall performance.
· Demonstrate the basic knowledge about distributed systems and how the ever-increasing networking features have affected (and are affecting) operating system design.
· Be able to identify potential threats to operating systems and the security features designed to guard against them.
· Be able to implement (in a high-level programming language such as C or Java) a suit of basic algorithms proposed for the main OS services such as memory management and process scheduling.
· Be able to implement a simple client/server application using system calls and distributed programming.