Distributed+Computing

Overview
Distributed Computing is a study in the architectures, algorithms, tools and techniques for doing computations on a Distributed System - A network of autonomous nodes tasked with achieving a singular objective. Autonomy of nodes imply Ethernet/Infiniband based interconnect supporting communication and synchronization between nodes by message passing instead of shared memory. Some famous applications include [|WWW], [|Massively multi-player online games], Online banking, ATM networks, Airline reservation systems, Industrial control systems, [|CAN networks in modern auto-mobiles], [|Beowulf clusters], [|SETI@Home] etc. This course will offer an introduction to the core concepts, some industry-strength tools as well as recent breakthroughs in Distributed Computing. By the end of this course, the student should be able to analyze problems in Distributed Computing, break them into simpler problems, associate the simpler problems to established techniques, design efficient algorithms using these techniques and finally realize the algorithms by developing computer programs

Course Outline

 * **Week** || **Lecture** || **Topic** ||
 * < 1 ||< 1 ||< Introduction ||
 * ^  ||< 2 ||< Basic Concepts ||
 * < 2 ||< 3 ||< Architecture 1 ||
 * ^  ||< 4 ||< Architecture 2 ||
 * < 3 ||< 5 ||< //Client-Server Tutorial// ||
 * ^  ||< 6 ||< Synchronization 1 ||
 * < 4 ||< 7 ||< Synchronization 2 ||
 * ^  ||< 8 ||< //Coursework Tutorial// ||
 * < 5 ||< 9 ||< //Presentations/Revision// ||
 * ^  ||< 10 ||< **First-Term Exam** ||
 * < 6 ||< 11 ||< Remote Procedure Calls 1 ||
 * ^  ||< 12 ||< Remote Procedure Calls 2 ||
 * < 7 ||< 13 ||< Introduction to Erlang 1 ||
 * ^  ||< 14 ||< Introduction to Erlang 2 ||
 * < 8 ||< 15 ||< //Erlang Tutorial// ||
 * ^  ||< 16 ||< Fault Tolerance 1 ||
 * < 9 ||< 17 ||< Fault Tolerance 2 ||
 * ^  ||< 18 ||< //Fault Tolerance Invited Talk// ||
 * < 10 ||< 19 ||< Security in Distributed Systems ||
 * ^  ||< 20 ||< //Coursework Tutorial// ||
 * < 11 ||< 21 ||< //Presentations/Revision// ||
 * ^  ||< 22 ||< **Second-Term Exam** ||
 * < 12 ||< 23 ||< MapReduce 1 ||
 * ^  ||< 24 ||< MapReduce 2 ||
 * < 13 ||< 25 ||< //MapReduce Tutorial// ||
 * ^  ||< 26 ||< BOINC ||
 * < 14 ||< 27 ||< SETI@Home Case Study ||
 * ^  ||< 28 ||< //BOINC Tutorial// ||
 * < 15 ||< 29 ||< P2P Case Study ||
 * ^  ||< 30 ||< Mobile Applications Case Study ||
 * < 16 ||< 31 ||< DVCS Case Study ||
 * ^  ||< 32 ||< //Cloud Computing Video Lecture// ||
 * < 17 ||< 33 ||< //Presentations/Revision// ||
 * ^  ||< 34 ||< **Final Exam** ||

Resources

 * [|Distributed Systems @ Google code University (Thanks Jehanzaib)]
 * [|Distributed Systems video lectures at ArsDigita]

Books

 * [|Distributed Systems - Concepts and Design] [|by George Coulouris, Jean Dollimore, Tim Kindberg]

Assignments (Coming up in a couple of days)

 * First term assignment
 * Second term assignment
 * Final assignment

=Miscellaneous=
 * I have decided that I am going to give away 5 marks for 'Class Participation'. Check out the formula:
 * (Number of valid entries in discussion forums) * 5.0 / (Maximum number of valid entries in discussion forums by a student)
 * Good luck :)
 * If you are wondering what a Wiki is and why does it exist, please check [|this] out.