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)
Part A - Concurrent Programming:
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
Part B - Software Security:
Security mechanisms, Security providers, Access Control Lists, Message Digests, Cryptography, Digital signatures, Digital certificates, Java security architecture, Software application security
Keywords
Concurrency, Distributed algorithms, Real-Time Systems, Security mechanisms, Software application security
Course Bibliography (Eudoxus)
1. M. Ben-Ari, "Αρχές Προγραμματισμού με Ταυτοχρονισμό και Κατανομή Λογισμικού", 2η έκδοση/2015, Εκδόσεις Τζιόλας, ISBN: 978-960-418-591-7
Κωδικός Βιβλίου στον Εύδοξο: 50655947
2. Ι.Κ.Κάβουρας, Ι.Ζ.Μήλης, Γ.Β.Ξυλωμένος, Α.Α.Ρουκουνάκη, "Κατανεμημένα Συστήματα με Java", Συστήματα Υπολογιστών - Τόμος ΙΙΙ, 3η έκδοση/2011, Εκδόσεις Κλειδάριθμος, ISBN: 978-960-461-463-9
Κωδικός Βιβλίου στον Εύδοξο: 12533080
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