CIS 307: Introduction to Distributed Systems and Networks
[Fall 2004]

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

Additional information about this course can be found on WWW at URL http://knight.cis.temple.edu/~ingargio/cis307/
A detailed discussion of cis307 as it relates to the ACM2001 suggested curricula is here.

Section 001 meets on Tuesday and Thursday from 8:40 to 10:00am in Tuttleman 407AB. Sections 002 meets on Tuesday and Thursday from 10:10 to 11:30am in Tuttleman 403B.
The laboratory for Sections 001 is on Tuesday from 2:40pm to 4:30pm, for Section 002 is on Wednesday from 8:40am to 10:30am. All labs are in CC207.

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

Teaching Assistant:Yilian Qin
Office: Room 206 Wachman Hall
Phone: (215)204-6823
Homework E-Mail: c307100@lucas.cis.temple.edu for Section 1 c307200@lucas.cis.temple.edu for Section 2
Questions E-Mail: yilian@temple.edu
Contact Hours: Monday 1:00-3:00, Tuesday 9:00-12:00, Wednesday 12:30-2:30 (On Tuesday fro 10:30 to 12:30 Ms.Qin will be in room 213 not 206)
Home Page: http://astro.temple.edu/~yilian/

Ombudsperson:Joshua Crean
Office: Room 210 Wachman Hall
Phone: 215-204-1146
E-Mail: jarsh@temple.edu
Homepage: TBS
Contact Hours: Tu: 9:30-11:30; Wed: 8:30-10:30; Thu: 9:30-11:30

Miscellaneous: Our first class is on August 31st and the last class is on December 7th. The last day to drop the course (and get tuition refund) is Monday September 13, 2004 The last day to withdraw from the course (no refund) is Monday November 1, 2004. 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.

PREREQUISITES

CIS166, CIS207, and CIS223 must have been completed with a grade of C- or better before beginning cis307.

TEXTBOOKS

REQUIRED:
Tanenbaum & Vansteen: Distributed Systems, Principles and Paradigms, Prentice-Hall

RECOMMENDED:
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 partial failures 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: 13% Eleven tests (only your top 10 scores are used in computing your grade)
Midterm1: 10% [September 30]
Midterm2: 10% [November 4]
Final: 34% [December 14 for section2, December 16 for section 1. Exams are from 8:30am to 10:30am.]
Homeworks: 33%

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 nine 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 final will become proportionally more important. The final exam is mandatory. Examples of questions from past exams are available.

HOMEWORKS

You will be assigned about 8 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.
You are expected to work and complete all the homeworks on your own. Copying of program code, data, documentation, etc is not allowed. If you use material you did not create, include detailed acknowledgement as to the source. See 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, Enterprise-Java-Beans, .NET.