Distributed computer systems are all around us: they appear as sensor networks; cloud computers; control networks in airplanes and automotives; smart-home installations, to name but just a few. The field of distributed systems is well established and in the last 30 years the body of knowledge has become considerable. Unfortunately, this body of knowledge has too often not led to simple designs that can be easily understood and assessed for their technical merits. On the contrary, we often witness new developments that easily catch the attention of the less experienced causing new waves of often unfounded excitement. Examples include public peer-to-peer systems, cloud systems, and more recently blockchains.
In this course, we ask ourselves whether these excitements are justified. The complexity of distributed systems often makes it difficult, even for the expert, to quickly come with the correct answer. Moreover, there is often no correct answer, as it all depends on the context in which a solution is deployed. The question then becomes how to get closer to investigating claims that accompany new developments. Are public peer-to-peer systems secure? Can we just migrate all our data and computations to cloud systems? Can blockchains really rule out the use of trusted third parties?
By looking at a number of specific cases, the course aims to improve critical thinking about distributed systems such that new developments can be better and more quickly assessed for their merits. Transferring what we already know about the field is less useful as it may be soon obsolete, especially when looking at what some consider important today. Preparing ourselves to still being able to pick up what pops up tomorrow is what matters more. This course is all about developing the cognitive skills to be prepared for the unknown in distributed systems.
Place in the curriculum
The course offers a number of case studies of distributed systems that will need to be assessed for their technical merits by a team of 3-5 students. The assessment itself is eventually documented in the form of an essay. That essay, in turn, will be used as the basis by another student team whose task is to critically evaluate the assessment.
Bloom distinguishes the following levels of increasing cognitive development:
- Knowledge: remember learned information
- Comprehension: demonstrate and understand the facts
- Application: apply knowledge to actual situations
- Analysis: break down concepts into simpler parts, and from there on generalize
- Synthesis: compile components into a new whole or new solutions
- Evaluation: make and defend judgements
For this course, we primarily focus first on levels 1 and 2, in which you are required to study existing material by yourself. Level 2 is tested by means of individual presentations within your group, in which you are asked to explain what you have learned. The underlying hypothesis is that a good explanation can be delivered only if you thoroughly understand what is to be explained.
Next to levels 1 and 2, there is a strong focus on levels 4 and 5, yet particularly on 6. You are required to investigate specific problems in distributed systems, assess proposed solutions, and come to a conclusion that addresses an initial question about that distributed system. By focusing on levels 4-6, the underlying idea is that you can more easily go through that process again when confronted with another problem in distributed systems. In other words, rather than learning what distributed systems are all about, you are being trained to critically think about distributed systems.
To take the course, students must have a basic understanding of computer organization, operating systems and computer networks. It is Master's course for students of computer science (MSc CSC) and embedded systems (MSc EMSYS). Due to the novel, experimental setup of this course, at most 20 students can participate in 2019-2020.
The course contents consists of studying and assessing a specific problem in distributed systems. There will be multiple problems, and each problem is to be tackled by a team of 3-5 students. You will be handed out material from a reference textbook as well as scientific articles to help you understand the problem at hand. During the first week, a lecture will be offered to provide an overview and introduction into the various problems. Part of the course consists of discovering additional material.
Typical subjects include:
- scalability of block chains
- security and privacy of block chains
- feasibility of peer-to-peer overlay systems in public networks
- the need for edge and fog computing
- managing privacy through the Tor network
- the controversies around containers and virtual machines for cloud computing
The core of the work consists of an assignment in student teams, divided into three phases, each lasting 2 weeks:
- Come to an overview of the essentials, wrapped up in a 15-minute, annotated presentation
- Dig into technicalicaties related to the problem, in which each member of a team works on a specific subproblem
- Prepare an advice, perhaps taking alternative solutions into account, wrapped up in the form of an essay
The essays are to be evaluated by other student teams (1 week), followed by a presentation by the original team, and a critical assessment by the assessment team (1 week)
Student teams and individual students will thus prepare annotated presentations as well as an essay containing an advice for the specific problem at hand. Much of the work will be in studying material that allows you to get a good grip on the specific problem, as well as explaining that material to others.
Examination takes place through peer review, not only of the presentations and essays, but also of the peer assessments. Satisfactory presentations, essays, and participation in discussions will automatically result in a passing grade. There will be no exam at the end of the course. Students who have actively participated, yet performed below an acceptable level, can pass the course by writing a much more involved essay on an agreed upon subject of choice related to distributed systems.