[MUSIC PLAYING]
SEIF HARIDI: Welcome to KTH, the Royal Institute
of Technology in Stockholm, Sweden.
I am Seif Haridi, professor of computer systems at KTH,
and I'll be the instructor of this course on reliable distributed
algorithms.
As you might know, most of today's IT Infrastructures
are distributed systems.
From telecom systems and the internet, the data
centers of cloud computing that follow the current revolution of global IT
services.
Example of these services include Google, Facebook, and Netflix
among others.
At the core of many global services, you find distributed algorithms.
The services are implemented by algorithms
that run on multiple computers and communicate only
by sending or receiving messages.
It is crucial for many of these services that they continue to work 24/7,
even if some of the computers fail or some messages are lost in transit.
This course series will give you a solid foundation of reliable distributed
systems.
I will be joined by Paris Carbone and Lars
Kroll, who will lead you through the problem-solving sections
and the programming assignments.
PARIS CARBONE: You'll get experiments and develop a variety of algorithms
in a very engaging interactive programming environment using
Scala programming language.
LARS KROLL: We will guide you throughout the programming assignments
and provide you with intuitive examples to get you started.
SEIF HARIDI: In this course, you will learn a lot.
You will learn how to specify distributed service
and how to implement it correctly by distributed algorithms.
You'll get familiar with many core services
that are used in cloud computing and big data environments.
It will become clear that implementing a service
will depend on the underlying distributed system model.
In some models, it might be easy to implement a service,
while in others, it can even be impossible.
You will understand why this is the case.
You are going to grasp most of these major concepts
and results of distributed computing in a precise way.
Concepts such as consistency models, broadcast abstractions, consensus,
and the caps Finally, you will learn and understand
many advanced distributed algorithms.
A great example is the famous PRAXIS algorithm for agreement protocols.
If you are interested in designing and implementing distributed system,
you will find that writing a distributed program
is quite different from writing a sequential program.
The series programs are not just functions from input to output.
Rather, they are concurrent, reactive programs
that run continuously and interact with their environment.
Therefore you'll need a paradigm shift.
Even professional software engineer will need to change their mindset.
So in this course, you will learn how to program
distributed algorithm in a compositional event-driven programming paradigm.
This course is based on a course given at KTH
at the master level for a long time with many refinements over the years.
At the end, I want to warn you that this course is focused on understanding
and reasoning rather than just acquiring a new skill set
or getting a high-level overview of some topics in distributed computing.
So if you are brave enough to just jump in, the rewards will be great.