Learning Outcomes
Cognitive: The main aim of the course is to understand the challenges of software design with concurrency and communication between multiple processes, of the problems and the security mechanisms to address them.
Skills: Students are expected to be able to develop concurrent programs, to verify their correctness, and formulate algorithms for distributed systems based on fundamental correctness criteria.
Course Content (Syllabus)
Concurrency in programming languages (atomic statements, interleaving, correctness), The Critical Section problem, Verification of concurrent programs, Advanced algorithms for the Critical Section problem, Semaphores, Monitors, Channels, Spaces, Distributed algorithms, Global properties, Consensus, Real-Time Systems
Course Bibliography (Eudoxus)
1. M. Ben-Ari, "Αρχές Προγραμματισμού με Ταυτοχρονισμό και Κατανομή Λογισμικού", 2η έκδοση/2015, Εκδόσεις Τζιόλας, ISBN: 978-960-418-591-7
Κωδικός Βιβλίου στον Εύδοξο: 50655947
2. S. Ghosh, "Κατανεμημένα Συστήματα: μία αλγοριθμική προσέγγιση", 2η έκδοση/2023, Εκδόσεις Κλειδάριθμος, ISBN: 9789606454721
Κωδικός Βιβλίου στον Εύδοξο: 122075001
Additional bibliography for study
1. M. Herlihy and N. Shavit, "The art of multiprocessor programming", Morgan Kauffman, 2008
2. G. Taubenfeld, "Synchronization Algorithms and Concurrent Programming", Pearson / Prentice Hall, 2006
3. N.Lynch, "Distributed Algorithms", Morgan Kauffman, 1996
4. S. Oaks,"Java Security", O'Reilly, 1998