COMP-512: Distributed Systems (Fall 2012)
Names and Numbers:
- Lecture: Tuesday/Thursday 10:00-11:30
- Instructor: Bettina Kemme. Office McConnell 109N. e-mail:
kemme@cs.mcgill.ca
- Office Hours Instructor: Tuesday/Thursday after class,
by appointment
- Teaching Assistants: Amir Yahyavi and Omar Asad
Overview:
Access to computing resources anywhere/anytime has become realitiy. We
upload our documents to the cloud, play games onlines and make phone
calls via the Internet. Companies use cloud providers to provide them
not only Infrastructure as a Service (IaaS) but complete distributed
Platforms as a Service (PaaS). Distributed multi-tier architectures for
web-service and business applications are omni-present. Building such
complex distributed infrastructures faces many challenges:
communication, asynchronous behavior of the different components in
the system, architectural considerations, failures etc. Over the last
20 years many fundamental building blocks have been developed that
build the backbone of current distributed infrastructure.
These building blocks are the main focus of this course.
The objective is to learn the state-of-the-art of practical distributed systems, to understand the typical problems and challenges encountered in distributed environments, and to discuss both sound and practical solutions for them.
Topics that will likely be covered
- Overview
- Communication Paradigmms
- basic network protocols
- synchronous and asynchronous communication
- client / server communication basics
- RMI: remote method invocation
- group communication
- publish subscribe
- ...
- naming services
- synchronization
- physical and logical clocks
- distributed transactions and concurrency control
- fault-tolerance
- replication
- agreement protocols
- scalability
- replication and caching
- load balancing
- Examples of distributed environments and applications (e.g., JEE,
Peer-to-peer systems, cloud services, distributed gaming)
Flavor of the course
The objective is to understand the typical problems encountered in
distributed environments and develop solutions for them. For each
topic, we will first look at the foundations, develop some
basic algorithms, and then look how the issues are handled in real
systems.
Of course, the course will not cover all interesting topics in this
area. But it should enable you
- to recognize the fundamental issues in distributed systems
- and to apply the aproaches and mechanisms discussed in class to any
kind of distributed environment.
You will work both theoretically and practically. The course will have
written assignments in which you develop algorithms and analyze
different solutions to specific problems.
Furthermore, there will be a
considerable programming project.
Prerequisites:
COMP-251 and COMP-310 (or equivalent). Knowledge of computer network
principles will be very useful, but a networks course is not a pre-requisite
Marking Scheme
- 18% written assignments
- 35% programming project
- 12% midterm
- 35% final exam
Recommended Textbook:
Distributed Systems: Concepts and Design by G. Coulouris,
J. Dollimore, T. Kindberg and G. Blair. Addison-Wesley, 5th ed.
A note on academic integrity
McGill University values academic integrity. Therefore all students must understand
the meaning and consequences of cheating, plagiarism and other academic offences
under the Code of Student Conduct and Disciplinary Procedures (see
http://www.mcgill.ca/students/srr/honest/ for more information).
French/English
In accord with McGill University's Charter of Students' Rights, students in this
course have the right to submit in English or in French any written work that is to
be graded.