170 likes | 182 Views
Explore topics on distributed system services, socket programming, reliability in distributed applications, and more. Understand the principles behind communication structures and fault tolerance.
E N D
Instructor • Dr. Hanan Lutfiyya • Middlesex College 418 • Ext. 86888 • hanan@csd.uwo.ca • Office Hours: Tuesday from 12:05-1:05 and Thursday from 11:05-1:05.
Prerequisites • CS305 -- Operating Systems • CS350 -- Computer Architecture (sometimes not enforced) • CS357 -- Computer Communications Networks It is expected that you have good C skills and some knowledge of makefiles. This course is an antirequisite to SE 466 (from the Department of Electrical and Computer Engineering)
Textbooks • Required textbook • Andrew S. Tanenbaum and Maarten van Steen, Distributed Systems:Principles and Paradigms, Prentice-Hall • References • G. Colouris, J. Dollimore and T. Kindberg, Distributed Systems: Concepts and Design, 3rd edition, Addison-Wesley, 2001 • J. Kurose and K. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, Addison-Wesley, 2001. • R. Stevens, Unix Network Programming, Volume 1, Prentice-Hall • Links to web pages on various topics; man pages
Lecture Notes • Lecture overheads will be available (hopefully) before each lecture. • They will be available in powerpoint format.
E-mail Contact • All e-mail that I send will be to your GAUL account. It is your responsibility to check your GAUL account or to forward the e-mail to another account. • I will ignore e-mail from hotmail accounts and other UWO accounts unless you cc your UWO account in the message.
Student Evaluation • Final Exam: 40% (April 13) • Quiz: 15% (Feb 17) • 3 Programming Assignments: 45% • No makeup quiz except for religious reasons. I need two weeks warning and you must go through your Dean’s office. • If you miss your quiz for a non-religious reason and present valid documentation to the Dean’s office, your Final exam mark will be reweighed to include the weight of the Quiz.
Special Note for Graduate Students • Graduate students must complete paper reviews.
Student Evaluation • To be eligible to pass the course, a student must receive at least 40% in the quiz/exam component and at least a 40% in the individual assignments. • To be eligible to receive an overall grade of 60% or higher in the course, a student must receive at least 50% in the quiz/exam component and at least 50% in the individual assignments.
Assignments • Three programming assignments • Assignments are made available through the course web page. • All assignments are due by midnight. You must submit to both the locker and electronically.
Late Assignments • There is a penalty of 2^n marks, where n is the number of days late. • The weekend counts as one day. • Extensions will be granted only on serious medical or compassionate grounds. • Extensions will NOT be given for minor illness.
Late Coupons • You are given 3 “late coupons” • Each coupon is a one day extension. • Rules • No transfer to other students • Once used, you may not receive it back • Coupons cannot be redeemed retroactively • Unused coupons are not redeemable for extra marks • Use of a late coupon does not change the final date on which an assignment will be accepted. • No more than three coupons may be used for an assignment.
More Assignment Information • Keep a backup! • Requests for an adjustment in an assignment mark must be made within 2 weeks after the assignment is returned in class. All such requests are to be written and submitted to me. • Assignments must satisfy the specifications given in the assignment description!
Course Objectives • The main objective is to study the principles of distributed computing. • Distributed computing is a broad subject. This course roughly focuses on the following: • Topics related to distributed system services such as support for RPCs and file systems. • Topics related to the development of reliable distributed applications. This includes socket programming, RPC, replication, election algorithms, time, consistency and security. Your programming assignments will focus on this.
Topics • Communication • Network organization • Socket Programming • RPC • Processes • Iterative vs. Concurrent servers • Thread Programming • Design Issues • Client/Server • Peer to Peer • Naming • Synchronization • Consistence and Replication • Fault Tolerance • Mobility
Assignment Structure • The first assignment requires that you implement a peer to peer application whose design is loosely based on Gnutella. • The second assignment will have you implement algorithms related to time, elections and/or consistency. • The third assignment looks at making distributed applications reliable and fault-tolerant.