Βασικές αρχές κατανεμημένης και παράλληλης επεξεργασίας. Σύγχρονα συστήματα και αρχιτεκτονικές κοινής και κατανεμημένης μνήμης (πολυεπεξεργαστές, πολυυπολογιστές, πολυπύρηνα συστήματα, συστήματα συστοιχιών υπολογιστών, υβριδικά συστήματα και αρχιτεκτονικές). Many-core αρχιτεκτονικές και σύγχρονες τεχνολογίες επιταχυντών-συνεπεξεργαστών. Επιτάχυνση και αποδοτικότητα παράλληλων αλγορίθμων. Τοπολογίες δικτύων διασύνδεσης. Εισαγωγή στον προγραμματισμό κοινής μεταβλητής. Παράλληλοι αλγόριθμοι σε περιβάλλον κοινής μνήμης (αλγόριθμοι ταξινόμησης, υπολογισμού προθεμάτων, υπολογισμών σε λίστες κ.α.). Παράλληλος/πολυνηματικός προγραμματισμός κοινής μνήμης (Pthreads, OpenMP). Προγραμματισμός επιταχυντών/GPUs (CUDA, OpenCL). Τεχνικές παραλληλισμού κατανεμημένης μνήμης. Παράλληλοι αλγόριθμοι σε περιβάλλον κατανεμημένης μνήμης (αλγόριθμοι ταξινόμησης, επιστημονικού υπολογισμού κ.α.). Παράλληλος προγραμματισμός κατανεμημένης μνήμης μέσω ανταλλαγής μηνυμάτων (MPI). Παράλληλος προγραμματισμός σε υβριδικό περιβάλλον (MPI+OpenMP+CUDA). Οργάνωση κατανεμημένων συστημάτων. Το Μοντέλο πελάτη-διακομιστή (client-server). Ομότιμα συστήματα (P2P systems). Ενδιάμεσο λογισμικό (middleware). Μοντέλα και αρχές υλοποίησης ενδιάμεσου λογισμικού (κλήση απομακρυσμένων διαδικασιών (RPC), κλήση απομακρυσμένων αντικειμένων (RMI)). Κατανεμημένα λειτουργικά συστήματα (πολυυπολογιστών και δικτύου – ειδικές απαιτήσεις, θέματα σχεδίασης και απόδοσης, κατανεμημένα συστήματα αρχείων κ.α.). Βασικά αλγοριθμικά θέματα κατανεμημένου υπολογισμού (χρονοσφραγίδες, εκλογή αρχηγού, αμοιβαίος αποκλεισμός, ανοχή σε σφάλματα). Υπολογισμός σε περιβάλλον συστοιχίας υπολογιστών (Cluster computing), τεχνολογίες και εργαλεία προγραμματισμού, τεχνολογίες δικτυακής επικοινωνίας κ.α. Επεξεργασία σε υπολογιστικά πλέγματα (Grid computing), τεχνικές δρομολόγησης εργασιών, πολιτικές εκχώρησης πόρων κ.α. Κατανεμημένη επεξεργασία σε κινητά αδόμητα δίκτυα (πρωτόκολλα δρομολόγησης, τεχνικές ομαδοποίησης κ.α.).
Βιβλιογραφία