2021年度 分散アルゴリズム   Distributed Algorithms

文字サイズ 

アップデートお知らせメールへ登録 お気に入り講義リストに追加
開講元
情報工学コース
担当教員名
DEFAGO XAVIER 
授業形態
講義     
メディア利用科目
曜日・時限(講義室)
月7-8  木7-8  
クラス
-
科目コード
CSC.T438
単位数
2
開講年度
2021年度
開講クォーター
1Q
シラバス更新日
2021年3月19日
講義資料更新日
-
使用言語
英語
アクセスランキング
media

講義の概要とねらい

Distributed algorithms form the basis of cloud computing systems and networked applications. The primary objective of this course is to present the basic concepts, theory, and techniques that are at the heart of distributed systems.
As much as possible, the course tries to relate algorithms and their proofs, with practical implementations, by interleaving coursework with occasional practical exercises.
This course extends basic lectures on operating systems concepts (in particular about concurrency) and presents the fundamental aspects of distributed algorithms, such as causality, resource allocation, the evaluation of global predicates, and message ordering, as well as the most common approaches used to solve them.

到達目標

Upon completing this course, the student will be able to understand how distributed systems work and what problems these systems need to address. This understanding will be a useful tool to formalize ideas and acquire a sharper and deeper understanding of the issues involved in more specific areas of asynchronous concurrent systems, such as cloud computing systems, peer-to-peer systems, cluster computing, IoT, system-on-chip, etc.
In addition and more importantly, the student will acquire a modular view of algorithms by being able to decompose classical algorithms into their basic parts and recombine them to address new problems or new environments.
At the end of the course, the student should be able to read and quickly understand most of the recent literature on distributed algorithms.

キーワード

Distributed algorithms, message-passing, network topology, synchrony models, global states, logical time, resource allocation, termination detection, randomized algorithms

学生が身につける力(ディグリー・ポリシー)

専門力 教養力 コミュニケーション力 展開力(探究力又は設定力) 展開力(実践力又は解決力)

授業の進め方

Typical classes will combine slide-based presentations, interactive discussions, and practical programming exercises. Active contribution to class discussions will be strongly encouraged. To prepare for class, students should read the course schedule section and check what topics will be covered. Required learning should be completed outside of the classroom for preparation and review purposes.

授業計画・課題

  授業計画 課題
第1回 Introduction to distributed algorithms - Nature and purpose of a distributed system. How to express distributed algorithms and prove their correctness. - Preparation and settings of the programming environment. Prepare a working programming environment with network, IntelliJ IDEA and Java JDK.
第2回 Network traversal algorithms - Discovery of the communication graph - Parallel traversal, spanning tree, depth-first traversal. 授業時に指示する.
第3回 Distributed graph algorithms (I) - Distributed shortest path - Distributed graph coloring - Maximal independent set 授業時に指示する.
第4回 Distributed graph algorithms (II) - Computing a global function, Distance-vector routing - Finding cut vertices 授業時に指示する.
第5回 Distributed mutual exclusion - Mutual exclusion problem, permission-based algorithms, edge-reversal - Quorum construction 授業時に指示する.
第6回 Mobile objects and navigation - Concept of mobile objects in a process graph - Navigation on a spanning tree 授業時に指示する.
第7回 Causality and logical time - Causality in distributed systems - Locigal time (linear time, vector time) - Cuts and consistent cuts 授業時に指示する.
第8回 Global state and checkpointing - Global states, snapshot algorithms - Application to checkpointing 授業時に指示する.
第9回 Distributed termination detection (I) - Termination predicate; termination detection problem - Safra's termination detection algorithm 授業時に指示する.
第10回 Distributed termination detection (II) - Consistent intervals and waves - Termination detection in an arbitrary topology 授業時に指示する.
第11回 Leader election - Leader election problem, leader election in a ring - Adaptation to leader election in an arbitrary topology - Randomized leader election in anonymous networks 授業時に指示する.
第12回 Order constraints on message delivery - Causal message delivery - Totally ordered broadcast 授業時に指示する.
第13回 Distributed shared memory - Abstraction definition, shared register - Atomic consistency (linearizability) - Sequential consistency 授業時に指示する.
第14回 Q&A + final test 授業時に指示する.

授業時間外学修(予習・復習等)

学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。

教科書

Michel Raynal, "Distributed Algorithms for Message-Passing Systems," Springer, 2013. ISBN 978-3-642-38123-2
(NB: e-book available for download through Tokyo Tech agreement with Springer)

参考書、講義資料等

Course materials. Slide copies, research papers, programming resources, ... distributed during lectures and/or made available for download from the course webpage.

成績評価の基準及び方法

The examination will assess the understanding of basic concepts of distributed algorithms (problems, algorithms, correctness, and methodology). Programming reports will assess the ability to apply the knowledge to practical problems.
Homework, programming, and class discussions (50%), tests and exams (50%)

関連する科目

  • MCS.T213 : アルゴリズムとデータ構造
  • MCS.T314 : オペレーティングシステム
  • MCS.T406 : 分散システム

履修の条件(知識・技能・履修済科目等)

Basic knowledge on algorithms and data structures, and some knowledge on concurrent systems (as typically taught in undergraduate courses on operating systems). To fully benefit from the practical exercises, students are advised to have some programming experience, preferably in Scala, Java, Javascript, Swift, Python, Ruby, Scheme, ML,...

その他

As much as possible, prepare and bring a laptop (preferably Mac, Linux, or BSD) with university wireless network support and latest versions of IntelliJ IDEA and Java JDK already installed.
(When the course is taught online, less focus will be given to hands-on exercises.)

このページのトップへ