CS5410/514: Fault-tolerant Distributed Computer Systems

Fall 2008 focus: Cloud and Edge Computing Systems

Course Overview. Distributed systems are difficult to build and understand, for all sorts of reasons.  Failures are common in large systems, and we can't let them shut the application down; a well-engineered system will tolerate failures and repair any damage they caused.  A single event, perceived at multiple locations, may not be totally ordered with respect to other, conflicting, events.   Networks have annoying connectivity and bandwidth properties, that force the designer to confront challenging engineering trade-offs.

The focus of CS5410 is on the principles and techniques that one can use to achieve a high-quality, trustworthy, fault-tolerant distributed system. Lectures will present the principles; programming assignments will enable students to put these principles into practice.  The course project will expose students to state of the art technology platforms (notably web services) but will also involve using cutting-edge techniques that are not available (yet) in products.  The goal is to understand what these kinds of platforms can be expected to do “without help” but also to get used to the idea that one can push beyond their limitations when necessary, and that doing so can open the door to all sorts of creative possibilities. 

During fall of 2008, the course will be organized around the themes of "Cloud Computing" and "Edge Computing" (the latter is sometimes called "Peer to Peer" computing).  We'll be using the standard course textbook, but because the book isn't completely aligned with our themes, we aren't requiring it or assigning material from it.  Instead, we'll give references to the book where additional readings may be helpful.  A copy is on reserve in the Engineering Library for those who prefer not to purchase their own copy.  The underlying technology area corresponding to CS5410 is associated with standards called, variously, Web Services, CORBA, GIG and SOA or SOS.  But have no fear of the acronyms: cryptic multi-letter acronyms aren't really very interesting.  Our emphasis is on the way things work, not the specifics of how they look in different technology packages.  The theory is that if you understand the principles, working with a particular embodiment will be a breeze.


The tentative list of topics to be covered in each lecture is at Topic Outline.   More details appear on the Slides Page, with links to the slides and recommend readings.


Our projects will be coded using Microsoft's .NET platform.  The system supports a tremendous variety of programming languages, and we're not picky.  However, Professor Birman himself works mostly with Visual Studio using C#, a version of Java with libraries nicely integrated into the .NET runtime enviroment.  If you prefer to use Java, C++, Visual Basic, Python, or whatever, you are welcome to do so, but of course we may have more trouble helping if you depart from what we use ourselves and then hit "issues."

CS5410 targets many kinds of students -- the class typically includes MEng students from CS, ECE and ORIE, undergraduates who like the systems area and have taken CS4410 (cs414) and did well in the course, and a few PhD students too.  The emphasis, though, is fairly practical.  Students interested in a more theoretical treatment of the material might also consider CS6414, a course taught mostly from published research papers (many are "classics") and with a more foundational / research perspective.

Details for the Fall 2008 course offering: Professor Ken Birman.  TA: Jonathan Winter and Adam Davis

Textbook: Reliable Distributed Systems.  A copy of this book is on reserve in the Engineering Library.

MW   1010-1125A.  Room Hollister 110.  Please note that CS514 only meets twice weekly,  on Monday and Wednesday.

Fall calendar information for 2008:

Instruction Begins Thursday August 28
First lecture: CS5410 Monday Sept 1
Homework 1 due Monday Sept 22
Fall Break Begins, 1:10 PM Saturday October 11
Instruction Resumes, 7:30 AM Wednesday October 15
Thanksgiving Recess Begins, 1:10 PM Wednesday November 26
Instruction Resumes, 7:30 AM Monday December 1
Last Day of Classes Saturday December 6

Course News (last updated August 21, 2008):

·       Check out our newsgroup:  news://newsstand.cit.cornell.edu/cornell.class.cs5410   (The server is newsstand.cit.cornell.edu)

·        CS514 students who plan to use the CSUG lab should visit the new user web site to reset their passwords: http://www.csuglab.cornell.edu/userinfo

·         Net-Print accounts, lab door and MSDNAA access will be activated shortly after classes begin.

Assignments: Basis for your CS514 grade.  There will be three of them, weighted 25%/25%/50% in computing final grades.

Course Overview and Organization.

Lecture times, teaching staff, office hours, prerequisites, assignments and grading policy.


Topic Outline.

High-level listing of topics to be covered along with recommended readings.

Slide Sets

Learning C# and Visual Studio