Names and Numbers:
- Lecture: Wednesday/Friday 10:00-11:30
- Instructor: Bettina Kemme. Office: McConnell 109N. e-mail: firstname.lastname@example.org
- Office Hours Instructor: Wednesday/Friday after class, or by appointment
- Teaching Assistants: Alex Krolik, Mathieu Boucher, Hongji Chen TBA
Access to computing resources anywhere/anytime has become reality. 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 component-based architectures for
web-service and business applications are omni-present. Building such
complex distributed infrastructures is challenging:
communication, data management, 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:
- Communication Paradigmms
- basic network protocols
- synchronous and asynchronous communication
- client / server communication basics
- RMI: remote method invocation
- group communication
- publish subscribe
- physical clocks
- logical clocks
- Distributed data management
- data partitioning strategies
- distributed computation (map-reduce vs. distributed SQL)
- distributed transaction: concurrency control and commit protocols
- Data replication
- scalability vs. fault-tolerance vs. performance
- consistency levels
- Performance (how to measure it and how to understand the results)
- Case Studies (e.g. Google File System, Hadoop Hbase, ...)
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
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.
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.
- 15% written assignments
- 35% programming project
- 10% midterm
- 40% final exam
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
for more information).
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