Our treatment of the topic will be set in the context of a major new architectural standard for building distributed systems: the so-called "Web Services" architecture. Web Services are easy to build and the architecture is easy to understand, but the limitations just mentioned are serious obstacles to building "trustworthy" Web Services applications that scale well, manage themselves, are fault-tolerant, and have other robustness properties. With this in mind, we'll skim the basic architecture quickly and will focus our treatment on the best ways of achieving these kinds of properties in systems that also adhere to the Web Services standards.
Course URL: http://courses.cs.cornell.edu/cs514/2005sp
Krzys(Upson 5162, Ph:5-7421): Wednesdays 12-1, Fridays 1:15-2:15
Mahesh(Upson 316, Ph:5-0226): Tuesdays 2:30-3:30, Thursdays 2:30-3:30
Vivek(Upson 328, Ph 5-7216): Mondays 4:30-5:30, Wednesdays 3-4
TA Office hours in a tabular format:
| Monday | Tuesday | Wednesday | Thursday | Friday |
| Vivek:4:30-5:30 | Mahesh:2:30-3:30 | Krzys:12-1 | David:1-2 | David:11-12 |
| Vivek:3-4 | Mahesh:2:30-3:30 | Krzys:1:15-2:15 |
Professor Ken Birman   (255-9199)
4115C Upson Hall
Office hours: Ken doesn't have specific office
hours but is available from 10am until 2:30pm most days. Just drop in.
If you prefer an appointment, contact Bill Hogan (whh@cs.cornell.edu)
email: ken@cs.cornell.edu.
Teaching Assistant: Vivek Vishnumurthy (255-7216)
Vivek is the primary TA for the course. He knows the material well and is
a good person to seek out if you need help with the core topics.
350 Upson Hall
Office hours:
TBA
email: vivi@cs.cornell.edu
MEng Teaching Assistant: David Lifson
[dml48@cornell.edu]
David is a half-time TA for us; he'll help out when people hack themselves into
corners.
Krzys Ostrowski (krzys@cs.cornell.edu)
and Mahesh Balikrishnan
(mahesh@cs.cornell.edu) are our two "office hours only" TA's. They
won't do anything but help with hacking and other questions, but have listed
office hours and will be happy to help you during the designated times.
The course programming assignments are designed to be completed in the Visual Studio C# language using its ASP.NET framework. We also accept projects in Java using the J2EE environment, but if you do use Java, we may not be able to help you out if you get stuck! C# and Java are essentially identical languages, the real differences are in the associated runtime environment and libraries. Thus if you know how to program in Java, you know C#, and just didn't know that you know it! The libraries are extensively documented in the Visual Studio online help system and you should be able to cut and paste anything elaborate, such as thread creation or tricky kinds of event handling.
Assignments and Grading. In keeping with the professional (and practical) orientation of the course, homework assignments are underspecified, open-ended, and motivated by problems that arise in the real world (messy as it is). You will have to think, refine problem specifications, make reasonable and defensible assumptions, and be creative.
Most of your grade is based on the programming project, which involves the design and implementation of a fault-tolerant, distributed, banking system using the Web Services architecture. To make your solution robust, you'll implement protocols drawn from the ones we'll be learning about during the course.
Your final course grades will be computed as follows:
Assignments are due on the date stipulated. No late assignments will be accepted.
Students are encouraged to work in groups of 2 - 5 on each phase of the project. Working with other people not only can lead to a better understanding of the material but it will enable you to develop collaboration skills that should prove helpful throughout your career. Attacking CS514 assignments in groups will also enable you to manage the course workload in the time allowed by dividing the work and by working on different assignments in parallel. Each participant in a group, however, should be able to explain the entire content of any submitted solution.
MEng Project Option. Students enrolled in the Master of Engineering program in Computer Science may use the CS514 project to satisfy their project requirement for that degree. Here's what you would need to do: