CS 2510: Advanced (Distributed) Operating Systems
Fall 2019

Daniel Mosse

Computer Science Department
University of Pittsburgh


NEWS:



Class:

MW 11:00-12:15pm, Sennott Square 5317
Instructor: Prof. Daniel Mosse (mosse@cs.pitt.edu)
Office Hours: 6423 SENSQ, MW 9:30- 11:00 and 12:15-1pm (or by appointment)

TA: TBA
Office Hours: TBA
Office:

No Required Text, but since we'll be describing PRINCIPLES, most texts in distributed systems are acceptable supplemental reading, even books as old as "Distributed Systems" by Andrew S. Tanenbaum and Maarten Van Steen

Course Objectives
The purpose of this course is to understand and use the basic concepts of distributed operating systems, common to most computer systems, which interfaces the machine with the programmer. In particular, this class is meant to introduce processes such as the processing unit, process management, synchronization, memory management and I/O management.

The successful student will be able to understand the basic components of a computer operating system, and the interactions among the various components. The course will cover an introduction on the policies for scheduling, deadlocks, memory management, synchronization, and file systems. The students will implement solutions via  programs using Unix/Linux.


Grading

  • Two Midterm exams (50%): 30% on higher grade and 20% on lower grade. Make-up exams can be scheduled well in advance, with written notices
  • Programming projects (40%):  three projects 15% top two grades, 10% bottom grade. There will be demos of the projects with the TA and/or professor.  Demo of last project during finals week or by appointment. Late submissions are allowed with a 10% reduction per late business day (weekday, zero penalty over the weekend).

  • There may be assignments and pop quizzes throughout the term. These will be worth 5% of your final grade.
  • 5% class  participation.
     

  • Programming Assignments

    The programming assignments are an important component of the course.  Mostly, there will be group projects, with groups of two.  You can choose your groupmate, and you will be required to explain what your part in the project was.

    The programming assignments will be evaluated on several factors:
  • Documentation: your code must be well-commented and must include a design document describing your solution.  Documentation includes authorship.
  • Correctness: your code must do what it is supposed to do.
  • Structure: your code should be broken into natural functions and modules (a good chance to document and assign authorship)
  • Style: your code should be easy to read, well indented, well commented, and use clear, self-explanatory variable and function names.
  • Your grade for each assignment will be based on your design and actual code. Good design and documentation are absolutely crucial for this class because of the difficulty of the concepts.

    Important dates: Projects due at 2am in some date (TBD) in october, november, december (3 projects). 

  •  There will be project demonstrations.

  • Attendance

    Class attendance is mandatory. Homeworks, assignments, and important dates will be posted on the class web page, but this is provided as a courtesy and is not always complete. Contact your classmates to avoid missing something important if you skip class.

    Office hours are optional. They are your chance to ask the professor and the TA questions about the material being covered, the programming assignments, etc.  Take advantage of them.


    Academic Honesty: Collaboration vs. Cheating

    This really should not be an issue, but to make things as clear as possible the following is necessary.

    You are encouraged to discuss the course material and concepts with other students in the class. However, all work that you submit must be your own. Under no circumstances may you look at anyone else's code or show anyone else your code. And while you may discuss the concepts used in the programming assignments, you may not discuss implementation details of the assignments themselves.

    If you are caught copying or otherwise turning in work that is not solely your own, you will fail the course.

    The bottom line is that you are expected to conduct yourself as a person of integrity - you are expected to adhere to the highest standards of academic integrity. This means that plagiarism1 in any form is completely unacceptable. As a (soon to be) computing professional, I encourage you to consult the code of ethics appropriate to your discipline2.

    On work that is essentially the same as that of other students, plagiarism will be assumed until disproved. This includes identically incorrect, off-the-wall, and highly unusual duplicate answers where the probability of a sheer coincidence is extremely unlikely. All parties to this unacceptable collaboration will receive the same treatment.

    You should bring a picture identification with you to all examinations and be prepared to show it upon request.

    If you are unsure of what is and is not allowed by this policy, talk to the instructor.

    1 pla-gia-rize vt. to steal and pass of as one's own (the ideas or words of another) to present as one's own an idea or product derived from an existing source - pla-gia-riz-ern. (source: Webster's New World Dictionary).
    2 The Association for Computing Machinery is http://www.acm.org/, the IEEE is http://www.ieee.org/ and the IEEE Computer Society is http://www.computer.org/.


    Getting Answers to your Questions

  • Attend class
  • Meet with the professor and TAs during office hours
  • Email the professor and TAs
  • Check the class web page - we will post as much information as we can

  • These web pages were built using material kindly provided by Prof. Scott A. Brandt a long time ago