Course: Distributed Systems

« Back
Course title Distributed Systems
Course code KIV/DS
Organizational form of instruction Lecture + Tutorial
Level of course Master
Year of study not specified
Semester Winter
Number of ECTS credits 6
Language of instruction Czech
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Otta Maxmilián, Ing. Ph.D.
Course content
1. Introduction to distributed systems, properties, architecture, requirements, models. 2. Interprocess communication, message passing, remote procedure calls. 3. Group communication, reliable group communication protocols. 4. Transactions, nested transactions, distributed transactions, locking, timestamps, error recovery. 5. Time, time synchronization, logical and physical clocks. Time synchronization algorithms. 6. Distributed algorithms, types, properties, synchronization, semaphores. 7. Deadlock, avoidance, prevention, detection. Deadlock in distributed systems. 8. Consistency, client centric and data centric models, file replication, distributed shared memory. 9. Distributed systems security, Attack, resource protection, cryptography, message fingerprint. 10. Secure communication, user authentication, key distribution. 11. Distributed file system, DFS examples (NFS, AFS). 12. Peer-to-peer systems, distributed hash tables. 13. Wireless sensor networks.

Learning activities and teaching methods
Students' portfolio, One-to-One tutorial, Task-based study method, Individual study, Students' self-study, Self-study of literature, Lecture, Practicum
  • Preparation for an examination (30-60) - 45 hours per semester
  • Contact hours - 65 hours per semester
  • Preparation for formative assessments (2-20) - 12 hours per semester
  • Presentation preparation (report) (1-10) - 8 hours per semester
  • Graduate study programme term essay (40-50) - 50 hours per semester
prerequisite
Knowledge
to demonstrate knowledge of computer networks at the level of the KIV/PSI course
to demonstrate knowledge of operating systems at the level of the KIV/OS course
to demonstrate knowledge of the C programming language
to demonstrate knowledge of finite automata and their implementation in a programming language
to be familiar with abstract data types and their implementation in the C programming language
to demonstrate knowledge of the Linux operating system including networking applications
to demonstrate knowledge of parallel process and thread management
to demonstrate knowledge of synchronization methods in the Linux operating system
Skills
to be able utilize common development and versioning tools
to be able to work on a personal computer in the Linux operating system
to be able to use common C language development environments on a basic user level
to be able to develop advanced programs in the C programming language
to be able to develop communication software using the BSD sockets API in the Linux operating system environment
Competences
N/A
learning outcomes
Knowledge
to be familiar with distributed systems issues
to demonstrate theoretical knowledge of common problems requiring independent process coordination and distributed algorithms the be solved
to demonstrate profound knowledge of network programming, specially system functions
to demonstrate profound knowledge of graphical user interfaces
to demonstrate knowledge of selected distributed algorithms
to demonstrate knowledge of the problems of time synchronization, data consistency, multiple copies, distributed transactions, distributed file systems and P2P networks
to demonstrate knowledge in the area of distributed systems reliability and failure detection
Skills
to be familiar with parallel process and thread programming and their synchronization
to know how to pass data between processes and threads in the UNIX/Linux operating systems environment
To be familiar with command line commands in the Linux operating system environment, especially those, related to the networking layer. To be able to analyze and check the networking layer settings and verification and also problem diagnostics
To be able to design and implement client/server network applications. To be able to design and implement solutions based on selected distributed algorithms
To be able to debug software in a distributed environment
To be able to analyze applications and to find possible bugs
Competences
N/A
N/A
teaching methods
Knowledge
Practicum
One-to-One tutorial
Lecture
Task-based study method
Self-study of literature
Individual study
Skills
Students' portfolio
Individual study
Competences
Lecture
assessment methods
Knowledge
Test
Seminar work
Combined exam
Continuous assessment
Skills
Individual presentation at a seminar
Seminar work
Competences
Written exam
Recommended literature
  • Coulouris, George; Dollimore, Jean; Kindberg, Tim. Distributed systems : concepts and design. 3rd ed. Harlow : Addison-Wesley, 2001. ISBN 0-201-61918-0.
  • Tanenbaum, Andrew S.; Van Steen, Maarten. Distributed systems : principles and paradigms. Upper Saddle River : Prentice Hall, 2002. ISBN 0-13-088893-1.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester