George Mason University

DEPARTMENT OF COMPUTER SCIENCE

CS 471 Operating Systems - Fall 2013

Instructor: Dr. Hakan Aydin

 

 


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.

 

Readings:
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: Engineering Building, Room 5308)

  

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 GMU Disability Resource Center.  If you qualify for accommodation, the DRC staff will give you a form detailing appropriate accommodations for your instructor. If you have such a condition, you must talk to the instructor during the first week of the term about the issue.

 

 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.