CIS 4307: Introduction to Distributed Systems and Networks
[Fall 2009]

Prerequisites, Textbooks, Description, Grading, Exams, Homeworks, Laboratories, Outline.

Additional information about this course can be found on WWW at URL http://www.cis.temple.edu/~ingargio/cis307/
A detailed discussion of cis4307 as it relates to the ACM2001 suggested curricula is here.
The course has a discussion board on Blackboard.
It meets on Tuesday and Thursday from 12:30pm to 1:50pm in Tuttleman 1A.
The laboratory is on Monday from 2:00pm to 3:50pm. All labs are in CC207.

Instructor: Dr. Giorgio P. Ingargiola
Office: Wachman Hall, Room 1038
Phone: (215)204-6825
E-Mail: giorgio@temple.edu
Contact Hours: Tuesday and Thursday from 10:30am to 12:00pm or by appointment, or take your chances and drop by

Teaching Assistant:Vladan Radosavljevic
Office: room 1000M Wachman Hall
Phone: 215-204-5773 [215-204-3950 in room 1000M]
Homework: Use drop box in Blackboard
Questions E-Mail: http://www.ist.temple.edu/~vladan
Contact Hours: Mondays from 12pm to 2pm, Wednesdays from 3pm to 5pm, Fridays from 10am to 12pm
Home Page: TBS

Ombudsperson:TBS
Office: Room 210 Wachman Hall
Phone: 215-204-1146
E-Mail: TBS
Contact Hours: TBS
The grievance procedures are available online

Miscellaneous: Our first class is on Tuesday, September 1 and the last class is on Tuesday, December 8. The last day to drop the course (and get tuition refund) is Monday, September 14. The last day to withdraw from the course (no refund) is Monday , November 2. Students who have previously withdrawn from this course, or who have already withdrawn from 5 courses since September 2003 may not withdraw.
Any student who has a need for accomodation based on the impact of a disability should contact me privately to discuss the specific situation as soon as possible. Students with documented disabilities should contact Disability Resources and Services at 215-204-1280 in 100 Ritter Hall to coordinate reasonable accomodations.
Freedom to teach and freedom to learn are inseparable facets of academic freedom. The University has adopted a policy on Student and Faculty Academic Rights and Responsibilities (Policy # 03.70.02) which can be accessed through the following link: http://policies.temple.edu/getdoc.asp?policy_no=03.70.02

PREREQUISITES

CIS2166, CIS3207, and CIS3223 must have been completed with a grade of C or better before beginning cis4307.

RECOMMENDED TEXTBOOKS

Tanenbaum & Vansteen:
Distributed Systems, Principles and Paradigms, Prentice-Hall, 2006, Second Edition
Stevens, Fenner, Rudoff:
Unix Network Programming, Volume 1, 3rd edition, Addison-Wesley, 2004

DESCRIPTION

Introduction to the concepts that are fundamental for understanding distributed systems and the technical infrastructure that makes them possible. We re-examine issues presented in operating systems, like concurrency, mutual exclusion, deadlocks, and scheduling, and examine issues that arise in distributed systems, like lack of shared memory, partial failures, global state, and lack of a single clock. We review the networks that make distributed systems possible. Finally we examine simple patterns for programming distributed applications. Lectures will mostly be expository and conceptual. The aim is to acquire a system perspective and an understanding of enduring issues, like reliability, security, scalability, performance evaluation, and of the trade-offs they involve. Directed closed laboratories and homework assignments will require the solution of distributed programming problems.

GRADING

10-minute tests: 20% Eleven tests (only your top 10 scores are used in computing your grade)
Midterm1: 10% [Thursday, October 8]
Midterm2: 10% [Thursday, November 5]
Final: 35% Thursday, December 17, 10:30am-12:30am. Exam is in our regular classroom.
Homeworks: 25%

The exams consist of expository questions and of programming questions. Disastrous performance in either the expository questions, or the programming questions, or in the homeworks, will result in a Fail grade. Class attendance is required. Absence in more than 25% of the classes will result in a penalty of half a letter grade. People who are more than 30 minutes late will not be admitted that day. Lab attendance is mandatory. Absence from more than four labs will result in a drop of a letter grade.

EXAMS

The exams are closed book. Their content is cumulative, i.e. they address the material covered up to the day of the exam. If a student misses one of the ten 10-minute tests, the student will lose the points associated to that test. If a student misses a midterm for an emergency [as agreed by instructor], there will be no makeup exam: the other exams will become proportionally more important. If you miss a midterm without previous agreement and without definite proof as to the medical or legal reasons, you will get a zero for that exam grade. The final exam is mandatory. Examples of questions from past exams are available.

HOMEWORKS

You will be assigned about 5 homeworks that involve programming and discussion in the laboratory sessions. Additional homeworks of a more theoretical nature may also be assigned.
Each assignment must be completed on time. Late homeworks will not be accepted except in extreme circumstances as recognised by the instructor.
Group work is not allowed, unless explicitly requested by instructor or TA. If you use material you did not create, include detailed acknowledgement as to the source. You will not receive credit for that portion of your code. Read and be familiar with the
University Policy on Plagiarism and Academic Cheating.
In computing your grade for the course each homework will have a weight proportional to the time allocated to do that homework. So for example if a homework is allocate one week and a second homework is allocated two weeks, then the grade of the second homework will count twice as much as the grade of the first homework.
The programming homeworks aim to develop and test your ability to conceptualize and realize problem solutions using a variety of pre-existing services as provided by a modern operating system (Unix). Here are directives that I have given to the TA when dealing with the homeworks. Please read this document carefully.

LABORATORIES

Laboratories are lead by the graduate assistants. Attendance to the laboratory is MANDATORY. A portion of the laboratory time will be dedicated to work on your programming assignments, the rest will review the use of software tools and services

OUTLINE

[4 weeks]

Review of Operating Systems and Systems Programming Concepts including InterProcess Communications and the use of Threads. The Client-Server model. Performance Evaluation.

[4 weeks]

Foundations of Computer Networks and Data Communications - Architectures, TCP/IP suite. Socket programming, and Remote Procedure Calls.

[4 weeks]

Foundations of distributed systems - Synchronization, distributed shared memory, global state, time problems, consensus. Scalability. Fault tolerance. Atomic transactions. Security.

[1.5 week]

Architectures for distributed applications: n-tier applications, peer-to-peer, Enterprise-Java-Beans, .NET, the Google framework.