Lecturer(s)
|
-
Brenkus David, 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.
|