CSCI 5105 -- Changes

Thu Jan 27 12:06:55 2011

Effective Term: New:  1119 - Fall 2011
Old:  1089 - Fall 2008
College: New:  TIOT - College of Science and Engineering
Old:  TIOT - Institute of Technology
Course Title Short: New:  Intro to Distributed Systems
Old:  Foundations of Modern OS
Course Title Long: New:  Introduction to Distributed Systems
Old:  Foundations of Modern Operating Systems
New:  Introduction to distributed system design and implementation. Topics include distributed communication and synchronization, data replication and consistency, distributed file systems, fault tolerance, and distributed scheduling.
Old:  Advanced concepts that build foundations of modern operating systems. Advanced scheduling algorithms, distributed communication/synchronization, consistency/replication models, distributed file systems, security, protection/virtualization, OS architectures.
for Catalog:
New:  5103 or equivalent or #
Old:  5103 or #
Proposal Changes: New:  New title for class will more accurately reflect the contents of the class.Most of the topics covered in the class relate to Distributed Systems, such as multiprocessors, clusters, Web, Grids, and cloud computing. This will avoid confusion among students from other Operating Systems classes such as CSci 4061: Intro to Operating Systems and CSci 5103: Operating Systems that cover traditional OS concepts.
Old:  <no text provided>
History Information: New:
6/07 Update years/terms offered.
Jan 2011- Title change
6/07 Update years/terms offered.
Sponsor E-mail Address:
Student Learning Outcomes: * Student in the course:

- Can identify, define, and solve problems


Please explain briefly how this outcome will be addressed in the course. Give brief examples of class work related to the outcome.

Students will be able to identify and solve problems in distributed system design and implementation, which are applicable to a wide range of systems such as clusters, Web, and Grids. Examples include design of distributed scheduling algorithms, data replication and consistency models, and fault tolerance techniques. Students will learn to identify the design tradeoffs based on the properties and scale of a distributed system, and determine the appropriate solutions applicable to the system based on these tradeoffs.

How will you assess the students' learning related to this outcome? Give brief examples of how class work related to the outcome will be evaluated.

Students will be presented with case studies of real systems, and asked to identify various tradeoffs and applicable techniques. As part of their programming assignments, they will also be asked to implement small systems based on the concepts learned in the course. A mix of individual and group activities will be used to assess their learning.

Old: unselected

Please provide a provisional syllabus for new courses and courses in which changes in content and/or description and/or credits are proposed that include the following information: course goals and description; format/structure of the course (proposed number of instructor contact hours per week, student workload effort per week, etc.); topics to be covered; scope and nature of assigned readings (texts, authors, frequency, amount per week); required course assignments; nature of any student projects; and how students will be evaluated.

The University policy on credits is found under Section 4A of "Standards for Semester Conversion" at . Provisional course syllabus information will be retained in this system until new syllabus information is entered with the next major course modification, This provisional course syllabus information may not correspond to the course as offered in a particular semester.

New:  CSci 5105 Course Overview:
Recent years have seen the emergence of several new applications and technologies in the domains of Web, e-commerce, multimedia, Grid, and personal computing. Operating systems have been evolving to meet the new challenges presented by these applications---meeting their diverse requirements, and supporting them in disparate computing environments ranging from large-scale systems such as the Internet to small systems such as your desktop or personal devices. Despite their apparent diversity, many of these systems are based on common foundations. At the same time, their design and implementation has led to several advances in the area of operating systems.

In this course, we will study the foundational concepts relevant to modern systems, that go beyond traditional desktop operating systems. In particular, this course will introduce concepts in distributed systems that span multiple CPUs and computers, and also discuss advanced operating system concepts that are relevant to modern applications. This course is designed to build on the basic operating system concepts learned in CScI 5103 or equivalent, and the goal of the course is to prepare students for undertaking operating systems research and real-world system development.

The course will achieve the following main objectives:
*Students will learn the concepts that are required to understand recent advances in distributed systems.
*Students will get hands-on experience in applying these concepts to building real systems.
*Students will be prepared for undertaking distributed systems research and real-world system

The text would be based on a combination of a textbook and selected research papers.
The textbooks are:
- Required: "Distributed Systems: Principals and Paradigms (2nd Edition)", by Andrew S. Tanenbaum and Martin van Steen, Prentice Hall, ISBN-10: 0132392275, ISBN-13: 978-0132392273
- Optional: "Modern Operating Systems (3rd Edition)", by Andrew S. Tanenbaum, Prentice Hall, ISBN-10: 0136006639, ISBN-13: 978-0136006633.

CScI 5105 Course Work:

The course work consists of a combination of written homework assignments (15% of the grade),  programming projects (45%), and exams (40%).

Homework Assignments

There will be 3 written homework assignments (each worth 5% of the overall grade). The assignments will be due in
a week's time at the beginning of the class on the due date. The assignments would be based on the concepts covered in the lectures and the textbook/reading materials.

Programming Projects

There will be 3 programming projects (each worth 15% of the total grade). Each of these projects will be due in about 2 weeks time. You will be required to submit your code online along with a report, README file, makefile, and any other files as specified by the due date/time specified. The online submission must be done through the submit utility. Detailed submission instructions will be provided along with the project specifications.

For each project, you will be provided with certain system specifications, which you will be required to implement, and then test and evaluate this implementation. These projects will require you to apply the concepts (mechanisms/algorithms, etc.) that you learn in the course and the goal will be to expose you to the systems issues and tradeoffs in a real implementation, and also familiarize you with programming in a distributed systems environment.

We encourage you to work in teams of two for the programming projects, however, you can work alone if you prefer.

Late Submission Policy: There will be a 10% penalty assessed on submissions that are late by less than 24 hrs after the deadline, and an additional 15% for each additional day that the submission is late.


There will be 1 mid-term (15%) and 1 final exam (25%). The mid-term exam will be held in-class during regular class hours. It will cover the material covered until the previous class, and you will have about 1 hour to write your solutions. The exam will be open notes/open book.

The final will be take-home, with about 24 hrs time provided to solve it. The final exam will be comprehensive covering the whole curriculum covered in the course.

If you must miss an exam, notify the instructor before the exam. Acceptable excuses are limited to serious health or personal problems, religious needs, or substantial participation in University sanctioned student events.

Class Participation

All students are highly encouraged to participate in the class by initiating and responding during class discussions, as well as by asking questions. The main goal of class participation is to keep the class engaging, lively, and also making it a good learning experience both for the instructor and the students.

I would encourage the off-campus students to view some lectures live and interact by phoning in if possible. Off-campus students are also welcome to email me any questions/doubts after the class.


You will also be assigned readings from the textbook and additional material each week related to the topic being covered in the lectures.  You should plan on spending additional time outside the lecture to go through the reading material. Note that while the lectures will introduce the concepts, you must use the readings to get an in-depth understanding of the material.

Collaboration and Cheating

Written homework assignments must be done individually (not with your programming assignment partner or anyone else). All your answers must be original and written by you.

Programming projects are to be done within your groups. You may discuss ideas and ask for clarifications freely with others on or off the class forum, and with Professor Chandra or with the TA. You must not provide or accept other assistance on the assignments. In particular, you are not to share code or assignment writeups with other students outside your group. All the code must be original and should not be taken from the Web or other sources, including from students who have taken this course in the past.

Providing or receiving information about exams from students in your class or from students who have taken another version of the same exam (for example, if you must take a makeup exam), or use of any unauthorized material during the exams, is cheating.
All instances of academic dishonesty will be dealt with in accordance with University policies.

Guidelines for Off-Campus (UNITE) Students

Off-campus students can submit the written assignments and hard copies of programming assignments through their local UNITE coordinator, or mail/fax it in to the UNITE Office. Detailed instructions are here. It is important that you hand in these things in time so that they get timestamped with the correct date/time. Note that the deadlines would be the same for both on-campus and off-campus students.

The off-campus students can decide to come in for the in-class exam or arrange with their local site coordinator. You must let the instructor know in advance what you plan to do.

Week one: Introduction
Week two: Distributed Architectures
Week three: Communication: RMI, Messages
Week four: Communication: Epidemic Protocols. Naming: Basics and Flat Naming
Week five: Naming: Structured and Attribute-based Naming
Week six: Synchronization: Distributed Mutual Exclusion
Week seven: Data Replication and Consistency: Consistency Models
Week eight: Web Caching
Mid-Term Exam:
Week nine: Multiprocessor and Distributed Scheduling
Week ten: Fault Tolerance: Basics and Redundancy
Week eleven: Distributed File Systems: Overview and NFS
Week twelve:Multimedia Systems: Overview
Week thirteen: Multimedia File Systems
Week fourteen:  Virtual Machines: Basics. Virtualization Techniques and Resource Virtualization
Week fifteen: Cloud Computing: A Brief Overview. Wrapup: Lookback and Lookahead
Final Exam:

Old:  <no text provided>