CS677
Distributed Systems Spring 2006 |
|||||
|
|
Instructor: V. Arun Teaching assistant: Chang Wang
Objectives This course is about principles of distributed computing. The focus will be on fundamentals rather than high level system design. We will learn about some key ideas that have emerged as powerful building blocks in building distributed systems. We will learn about fundamental problems, designing protocols, reasoning about the correctness of protocols, impossibility results and how practical systems attempt to ameliorate them, and examples of these principles as applied to distributed systems today. This course will not cover Java, RMI, RPC, HTTP, TCP, CORBA, Jini etc. However, there will be a significant implementation component in homeworks and projects.
Prerequisites Students should have taken undergraduate course on Operating Systems, Networks, and Algorithms. Typical computer science majors should do fine. Non CS majors will be expected to know about concepts such as mutual exclusion, programming with threads, programming with sockets, and proving properties about algorithms. You should also be comfortable programming in C, C++, C#, or Java. If you lack these prerequisites, please talk to me before registering for the course for grade.
Grading
The regular project option involves building a content distribution
system that is architecturally a combination of a managed Akamai like
system and a peer-to-peer Gnutella like system. More details will be
put up in due time. The projects are typically expected to be done in
groups of two although you are welcome to do it individually. Students opting for a research project may define their own project,
possibly related to their area of research, and use that in place of
the regular project and final. Research projects will require a 2 page
proposal in the second month and a project report at the end of the
semester. I will meet individually with students taking up research
projects.
Cooperation Policy A homework is meant to be an individual effort. Projects done in groups are meant to be discussed with your partners only.You may discuss a question's interpretation with a classmate, but not solution approaches. Discussing a solution approach is equivalent to scholastic dishonesty. You may use existing libraries, reference material available online, and operating system code. However, you should not use code or methods from someone else's project on a similar topic even if it is available online.
|