This is a grouped Moodle course. It consists of several separate courses that share learning materials, assignments, tests etc. Below you can see information about the individual courses that make up this Moodle course.

Distributed Computing - B2M32DSV

Main course
Credits 5
Semesters Winter
Completion Assessment + Examination
Language of teaching Czech
Extent of teaching 2P + 2C
Annotation
The course is focused on technologies that support distributed computing: on mechanisms ensuring reliable, efficient and secure connection of application processes, programming interfaces of communication channels and up-to-date middleware technologies. A significant part of lectures is dedicated to distributed algorithms that assure causality, exclusive access, deadlock detection/avoidance, fault-tolerance, mobile computing, and security.
Study targets
After passing the course, students will have an overview in the field of distributed systems. They will be aware of the limitations and advantages related to the deployment of such systems. They will also be able to design and implement a simple distributed system.
Course outlines
1. Distributed computation, graph algorithms (Dijkstra), synchronous and asynchronous model
2. Communication system - protocols, routing
3. Synchronous and asynchronous message passing, multicasting
4. Procedural communication - IDL interface, call semantics, asynchronous mechanisms
5. Models of distributed computing - client-server, peer-to-peer, publish-subscribe, cloud computing
6. Support for distributed applications - Java RMI, JMS, Jini; SOAP, REST
7. Time in distributed systems - physical clock synchronization, scalar and vector logical clocks
8. Sharing of resources, distributed algorithms of mutual exclusion
9. Leader election algorithms
10. Termination detection, deadlock - detection and avoidance
11. Replication of data and processes, ensuring consistency
12. Large scale distributed systems: Architecture and computations (DHT, CDN, MapReduce, PageRank, social networks)
13. Mobility in distributed systems - load balancing, mobile agents, cooperative ad-hoc systems
14. Security in distributed systems - Kerberos, PKI, PGP
Exercises outlines
1. Introduction
2. Examples of RPC, messaging queue
3. Examples of SOAP
4. Examples of REST
5. Work on small tasks, consultations
6. Work on small tasks, consultations
7. Distributed applications - sample implementation
8. Distributed applications - sample implementation, project assignment
9. Work on the project, consultations
10. Work on the project, consultations
11. Distributed Storage
12. Work on the project, consultations
13. Evaluation of the project
14. Evaluation of the project, credits
Literature
Coulouris G., Dollimore J., Kindberg T., Blair G.: Distributed Systems: Concepts and Design (5th Edition), Addison-Wesley 2011, ISBN: 0132143011.
Tel G.: Introduction to Distributed Algorithms, Cambridge University Press 2000, ISBN: 0521794838.
Attiya H., Welch J.: Distributed Computing: Fundamentals, Simulations, and Advanced Topics, John Wiley and Sons, Inc., 2004. Second Edition, ISBN: 978-0-471-45324-6.
Requirements
Basic knowledge in the area of computer networks and communication. Basic knowledge of Java programming language.

Distributed Computing - B6B32DSV

Credits 5
Semesters Winter
Completion Assessment + Examination
Language of teaching undefined
Extent of teaching 2P + 2L + 4D
Annotation
The course is focused on technologies that support distributed computing: on mechanisms ensuring reliable, efficient and secure connection of application processes, programming interfaces of communication channels and up-to-date middleware technologies. A significant part of lectures is dedicated to distributed algorithms that assure causality, exclusive access, deadlock detection/avoidance, fault-tolerance, mobile computing, and security.
Study targets
After passing the course, students will have an overview in the field of distributed systems. They will be aware of the limitations and advantages related to the deployment of such systems. They will also be able to design and implement a simple distributed system.
Course outlines
1. Distributed computation, graph algorithms (Dijkstra), synchronous and asynchronous model
2. Communication system - protocols, routing
3. A synchronous and asynchronous message passing, multicasting
4. Procedural communication - IDL interface, call semantics, asynchronous mechanisms
5. Models of distributed computing - client-server, peer-to-peer, publish-subscribe, cloud computing
6. Support for distributed applications - Java RMI, JMS, Jini; SOAP, REST
7. Time in distributed systems - physical clock synchronization, scalar and vector logical clocks
8. Sharing of resources, distributed algorithms of mutual exclusion
9. Leader election algorithms
10. Termination detection, deadlock - detection and avoidance
11. Replication of data and processes, ensuring consistency
12. Large scale distributed systems: Architecture and computations (DHT, CDN, MapReduce, PageRank, social networks)
13. Mobility in distributed systems - load balancing, mobile agents, cooperative ad-hoc systems
14. Security in distributed systems - Kerberos, PKI, PGP
Exercises outlines
1. Introduction
2. Examples of RPC, messaging queue
3. Examples of SOAP
4. Examples of Jini, REST
5. Work on small tasks, consultations
6. Work on small tasks, consultations
7. Distributed applications - sample implementation
8. Distributed applications - sample implementation, project assignment
9. Work on the project, consultations
10. Work on the project, consultations
11. Distributed Storage
12. Work on the project, consultations
13. Evaluation of the project
14. Evaluation of the project, credits
Literature
Coulouris G., Dollimore J., Kindberg T., Blair G.: Distributed Systems: Concepts and Design (5th Edition), Addison-Wesley 2011, ISBN: 0132143011.
Tel G.: Introduction to Distributed Algorithms, Cambridge University Press 2000, ISBN: 0521794838.
Attiya H., Welch J.: Distributed Computing: Fundamentals, Simulations, and Advanced Topics, John Wiley and Sons, Inc., 2004. Second Edition, ISBN: 978-0-471-45324-6.
Requirements
Basic knowledge in the area of computer networks and communication. Basic knowledge of Java programming language.

Algorithms for Distributed and Parallel Systems - A8M01ADP

Credits 5
Semesters Winter
Completion Assessment + Examination
Language of teaching Czech
Extent of teaching 3P+1S
Annotation
Předmět slouží jako teoretická průprava pro pokročilou algoritmizaci, paralelní a distribuovanou implementaci algoritmů
v oblasti zpracování signálů, optimalizačních úlohách a algoritmech komunikačních sítí. \\Výsledek studentské ankety předmětu je zde: http://www.fel.cvut.cz/anketa/aktualni/courses/A8M01ADP
Course outlines
1. Asymptotická složitost algoritmů, třídy složitosti P, NP a NPC
2. Polynomiálně řešitelné grafové úlohy: minimalní kostra, nejkratší cesta
3. NP úplné grafové úlohy: problém barevnosti grafu, distribuované algoritmy pro barvení grafu
4. Modely a representace pro paralelní a distribuované algoritmy, topologie, komunikace, synchronizace.
Paralelizovatelné úlohy.
5. Paralelní algoritmy na síťové architektruře, třídění, rekurze, směrování.
6. Paralelní algoritmy na dalších arthitekturách - hypercube, hvězda, kruh.
7. Sdílení paměti, pipeline, scheduling, masivně paralelní úlohy.
8. Aplikace paralelních algoritmů v numerických úlohách, zpracování signálu, optimalizace a komunikacích.
9. Programovací jazyky pro paralelní výpočty.
10. Distribuované algoritmy - komunikace, koordinace, symetrie, lokálnost
11. Volba koordinátora.
12. Distribuovaný konsensus (problém byzantských generálů).
13. Synchronizace.
14. Aplikace distribuovaných algoritmů v komunikačních a rozhodovacích sítích.
Literature
1. F. T. Leighton, Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes. Morgan
Kaufmann, 1992.
2. N. Lynch, Distributed Algorithms. Morgan Kaufmann, 1996.
3. G. Tel: Introduction to distributed algorithms, Cambridge 1994
4. D. P. Bertsekas, J. N. Tsitsiklis: Parallel and distributed computation: numerical methods