Overview

Throughout this course we will explore concepts of operating systems both from the design side and the implementation side perspectives. The design side will be investigated via lectures (discussions), presentations and reading core system research papers. The implementation side will be realized through several programming projects. The programming component will give you a real taste of systems programming and the inner workings of a real-world Operating System.

The learning goals of the course is to learn the basic principles of operating systems and how operating systems are organized and utilized. Specific topics include:
  • Processes.
  • Sockets.
  • Threads.
  • Scheduling.
  • Synchronization.
  • Deadlock.
  • Memory Management.
  • Virtual Memory.
  • File Systems.
  • I/O Systems.
  • Mass Storage.
  • Distributed Systems.
  • Protection & Security.

Topics will be covered either by lecture, reading or both.


Staff/Office Hours

Date /Time: Tu/Th: 2:00-3:15 Chem 0455
  We: 2:30-3:30 Chem 0455
       
Instructor     Maria Hybinette
Office Hours Tu 3:15-4:30 After Class/Boyd 219D
TA     Keyang He (kh45436 AT uga.edu, keyang AT uga.edu)
Office Hours      
       
Mailing List     Piazza
       

Course Material & Textbook

Cover Image


Operating System Concepts 9th Edition

Abraham Silberschatz, Bell Laboratories
Peter Baer Galvin, Corporate Technologies
Greg Gagne, Westminster College

 

The course material covered in class is primarily drawn from two text books: (1) The "Operating System Concepts (9th updated edition - for 2018) by Silberschatz, Galvin and Gagne", or as it is sometimes called the Dinosaur book, and (2) Modern Operating Systems by Andrew Tanenbaum and Woodhull.

The first textbook, the dinosaur books is required.

The lectures are influenced by additional resources such as William Stallings (previously MIT); Deitel & Deitel’s OS Book and many more, other instructors & colleagues: Andrea & Remzi Arpaci-Dusseau, University of Wisconsin; Andy Wang, (UCLA) now at Florida State University Fred Kuhns, Washington University; Jeff Donahoo, Baylor University (TCP/IP and sockets), Darrell Long, UC Santa Cruz, Chris Kruegel, UC Santa Barbara, students feedback and last but not least Wikipedia.

Grading Policy and Evaluation:

You are evaluated via exams & quizzes, projects, paper summaries, presentations and implementation of software projects. The distribution is below, but is subject to change.

Participation :
on-line and in class
quizzes

10%
Exam 1
10%
Exam 2
10%
Final Exam:
15%
Projects
30%
HW/Summaries
20%
Presentations/Demo
05%

 

The general grading philosophy is the following (the context is "programs" and "projects" but it should generalize to summaries and to other required elements). See translation from percentage to letter grades finger grade in link further below.

A+ Extraordinary, goes beyond the minimum criteria both in depth and breath. Design is thorough and well thought out, code base and implementation is beautiful- modularized, complete, clear and concise. A well thought out debugging strategy is apparent. Well documented code. The evaluation plan is well executed and well thought out, goes beyond the simple cases and illustrates strong problem solving skills.

A Superior (somewhat less than an A+, almost perfect code, beautiful, concise, minimum criteria met, not as much depth and forethought as an A+ but it is superb), goes beyond meeting the minimum criteria demonstrates depth, can apply solution to a variation of similar problems.

B Good, minimum criteria well executed and well done, shows some depth and understanding, meets most test cases but does not demonstrate as much forethought as an A;

C Fair, minimum criteria met, but could have been executed with more depth and forethought.

We will use the College Board's convention to convert from percent grades to letter grades grades:

(see here).

Late Policy

Assignments, and summaries (if applicable to class) are due on the date and time specified in the assignment or the day of demonstration (email as a time stamp and hand-in hardcopy the next day). Late homework cannot be accepted.

Homework and Projects Posting

Projects and homework will be posted on the web from the scheduling page (see link top menu bar), and will be accessible from anywhere on the Internet. Assignments may be posted before they are officially assigned; however, you should not assume that an assignment on the schedule page is in final form until the date it is assigned. In other words, assignments are subject to change before the date that they are officially assigned. There may be additional required elements.

The software programming projects are of-course an important component of this course. You'll be making programs of the languages specified in class or on schedule page (e.g., Scala, Java, C, C++). The programming tools you'll need (game engine, simulation engine, compiler, debugger, etc.) may be denoted on the project page and should be downloaded and installed on your laptop and /or workstation.

Technical Paper Summaries

You will read/skim at least one technical paper or essay approximately every week. For each week each you will prepare a 1-page summary on one of the presented papers (you may chose any one of the two). This summary must be emailed to the grader account (or instructor if we don't have a grader), before midnight on the day the paper is due, typically a Wednesday. You also must turn in a hard copy of the paper the following day (Thursday). The hardcopy will be used for grading and the email will check when you turned in the summary. The summary needs to reflect that you made an effort to read and understand the paper. The summary should address the questions listed on the reading list. You should also include a brief critique of the current week's presentation (both presentations). What else should have been included?/excluded? Suggested improvements? You may skip 1 summary without a penalty (see reading page link above for specific questions that you need to address). If we do 12 summaries - you may skip 2 summaries.

Presentations

You will present on 1-3 topics throughout the semester, each presenter is expected to read additional technical papers (or essays) to ensure breadth of the week's topic. Some suggestions to add "breath" to your theme topic are listed in the reading list, or you may choose your own. You will select the theme, but the specific paper will be assigned (however you may suggest or express interest in particular paper). If we have a large class the presentations may be presented as a group (a group of 2) presentation.

Participation and Attendance

Class attendance is mandatory; we typically do not take attendance - but it happens, and class participation is 5% of your grade.

Other Class Policies

If you miss class it is your responsibility to find out what you missed if you don't attend class. Please do not email instructor and ask what you have missed.

You are required to subscribe to the class email list or forum - and be aware that sometimes homework is assigned via the forum - or there are some hints posted in the forum - you probably do not want to miss that.

The purpose of the assignments and projects is familiarization of concepts and details of programming.. The assignments & projects are expected to be individual work unless other specified. However, you are encouraged to ask questions of one another, and to respond to other student's questions on the email list.

Direct exchange of code is prohibited, as is line-by-line assistance from anyone or thing (this includes internet copying). This is checked for every assignments. If you do get help from other sources than book, slides, or TA you must acknowledge the source in the material that you turn in -but note still no copying is allowed.

Unless otherwise specified, exams are closed-book and no additional materials may be used. Missing an exam: absence due to serious illness will be an acceptable reason for missing an exam. Doctor's diagnostic note is required (these absences may be confirmed with your doctor). The final grade will be scaled accordingly. You must subscribe to the class email list, see details HW1 listed on the schedule page. Assigned homework (if any) must be typed, you must also email a copy to the class email account.