Παράκαμψη προς το κυρίως περιεχόμενο

CSE 461 Συστήματα για Μηχανική Μάθηση Μεγάλης Κλίμακας

Στόχοι Μαθήματος: Το μάθημα εμβαθύνει στις αρχές σχεδιασμού και υλοποίησης κατανεμημένων και δικτυωμένων λειτουργικών συστημάτων για Μηχανική Μάθηση. Δίνεται έμφαση σε κλασικές αρχές σχεδιασμού λειτουργικών συστημάτων και στην περιγραφή της υλοποίησης σύγχρονων συστημάτων που αποτελούν τη βάση της υποδομής επεξεργασίας και αποθήκευσης μεγάλων δεδομένων στο υπολογιστικό νέφος.

Μαθησιακά Αποτελέσματα: Στο τέλος του μαθήματος οι διδασκόμενοι θα είναι εις θέση να: (1) περιγράψουν τις σημαντικότερες αρχές σχεδιασμού κατανεμημένων συστημάτων, (2) περιγράψουν και χρησιμοποιήσουν βασικές τεχνικές υλοποίησης κατανεμημένων συστημάτων μεγάλης κλίμακας, (3) κατανοήσουν τις  αρχές λειτουργίας της υποδομής υπολογιστικού νέφους και Μηχανικής Μάθησης της Google, Amazon, Facebook και άλλων γιγαντιαίων διαδικτυακών υπηρεσιών, (4) διαβάζουν και να κατανοούν ερευνητικές αναφορές της μηχανικής υπολογιστικών συστημάτων, (5) κατανοούν την υλοποίηση ενός περίπλοκου και μεγάλης κλίμακας κατανεμημένου συστήματος για Μηχανική Μάθηση ώστε να μπορούν να το τροποποιήσουν και να αξιολογήσουν την απόδοση του

Περιεχόμενο Μαθήματος: Η ύλη του μαθήματος περιλαμβάνει τα ακόλουθα. Virtual Memory, Process Management και Inter-process Communication. Το λειτουργικό σύστημα Unix. Log-structured συστήματα αρχείων. Κατανεμημένα συστήματα αρχείων. Virtual Machines. Θέματα που αφορούν τον κύκλο ζωής της ανάλυσης δεδομένων για Μηχανική Μάθηση (ML), περιλαμβανομένων των data sourcing and preparation για ML, προγραμματιστικά μοντέλα ML, συστήματα για κλιμακώσιμη δημιουργία μοντέλων ML, και αναδυόμενα θέματα όπως διακυβέρνηση ML συστημάτων, επεξηγησιμότητα, και ηθική (fairness, transparency, etc.) της Μηχανικής Μάθησης.

CSE 423 Εισαγωγή στην Κρυπτογραφία και την Ασφάλεια Υπολογιστών

Στόχοι Μαθήματος: Το μάθημα προσφέρει μια ολοκληρωμένη εισαγωγή στις θεμελιώδεις αρχές και βασικές μεθοδολογίες της κρυπτογραφίας και της ασφάλειας υπολογιστών. Στόχος είναι να εφοδιάσει τους φοιτητές με το θεωρητικό υπόβαθρο και τις πρακτικές γνώσεις που απαιτούνται για την κατανόηση, υλοποίηση, εφαρμογή και αξιολόγηση πρακτικών και μηχανισμών ασφάλειας σε σύγχρονα συστήματα. Κύριος στόχος είναι η εξοικείωση των φοιτητών με τις θεμελιώδεις έννοιες που διέπουν τον σχεδιασμό και την υλοποίηση ασφαλών συστημάτων, συμπεριλαμβανομένων τόσο των κλασικών όσο και των σύγχρονων προσεγγίσεων σε κρυπτογραφικές τεχνικές και μεθόδους αντιμετώπισης απειλών. Δίνεται έμφαση στην ανάπτυξη ικανότητας κριτικής ανάλυσης των απαιτήσεων ασφάλειας, κατανόησης των απειλών, εκτίμησης κινδύνων και εφαρμογής κατάλληλων κρυπτογραφικών εργαλείων, μηχανισμών και στρατηγικών για την προστασία υπολογιστικών συστημάτων. Πέρα από την βασική ύλη, το μάθημα προσφέρει μια σύντομη εισαγωγή σε προχωρημένα θέματα, όπως η μετα-κβαντική κρυπτογραφία και η ομομορφική κρυπτογράφηση, με στόχο την ενημέρωση για τις αναδυόμενες προκλήσεις και εξελίξεις στον τομέα. Το μάθημα αγγίζει επίσης θεμελιώδεις έννοιες σχετικές με την ιδιωτικότητα, στο ευρύτερο πλαίσιο της ασφάλειας.

Μαθησιακά Αποτελέσματα: Με την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές θα είναι σε θέση να: 1. Κατανοούν τις θεμελιώδεις αρχές της ασφάλειας υπολογιστών, συμπεριλαμβανομένων των βασικών στόχων ασφάλειας: εμπιστευτικότητα, ακεραιότητα και διαθεσιμότητα. 2. Περιγράφουν και συγκρίνουν βασικές κρυπτογραφικές δομές, όπως συμμετρική και ασύμμετρη κρυπτογράφηση, συναρτήσεις κατακερματισμού (hash functions), κώδικες αυθεντικοποίησης μηνυμάτων (MACs) και ψηφιακές υπογραφές. 3. Εφαρμόζουν κρυπτογραφικά πρωτόκολλα, όπως ανταλλαγή κλειδιών και ψηφιακά πιστοποιητικά (PKI), στο πλαίσιο του ασφαλούς σχεδιασμού συστημάτων και ασφαλών επικοινωνιών. 4. Δείχνουν επίγνωση επιλεγμένων προχωρημένων θεμάτων, όπως η μετα-κβαντική κρυπτογραφία και η ομομορφική κρυπτογράφηση. 5. Εντοπίζουν και αναλύουν συνήθεις απειλές ασφάλειας και επίπεδα επίθεσης, όπως κακόβουλο λογισμικό (π.χ. ιοί, worms, δούρειοι ίπποι), spoofing και phishing, επιθέσεις άρνησης υπηρεσίας (DoS), cross-site scripting (XSS), επιθέσεις SQL injection και ευπάθειες υπερχείλισης buffer. 6. Αναγνωρίζουν τις εξελισσόμενες απειλές ασφάλειας και τις ευπάθειες συστημάτων και σχεδιάζουν ασφαλή συστήματα/εφαρμογές επιλέγοντας και εφαρμόζοντας κατάλληλες στρατηγικές άμυνας, όπως αυθεντικοποίηση, εξουσιοδότηση και έλεγχο πρόσβασης. 7. Αξιολογούν εναλλακτικές κρυπτογραφικές τεχνικές και μηχανισμούς ασφάλειας, λαμβάνοντας υπόψη συμβιβασμούς, απόδοση, πολυπλοκότητα, χρηστικότητα και την αξία των προστατευόμενων πόρων. 8. Συζητούν βασικά ζητήματα ιδιωτικότητας στα υπολογιστικά συστήματα και κατανοούν θεμελιώδεις πρακτικές προστασίας της ιδιωτικότητας.

Περιεχόμενο Μαθήματος: Το μάθημα αποτελεί εισαγωγή στις θεμελιώδεις έννοιες και τεχνικές της κρυπτογραφίας και της ασφάλειας υπολογιστών. Ξεκινά με τις βασικές αρχές και στόχους της ασφάλειας, όπως εμπιστευτικότητα, ακεραιότητα, διαθεσιμότητα, καθώς και αυθεντικοποίηση, μη αποποίηση ευθύνης (non-repudiation) και λογοδοσία. Παρουσιάζονται επίσης οι αρχές σχεδιασμού ασφαλών συστημάτων και τα κλασικά μοντέλα ασφάλειας. Οι φοιτητές εισάγονται σε τεχνικές εκτίμησης κινδύνου και μοντελοποίησης απειλών ως βάση για την αξιολόγηση ευπαθειών συστημάτων και την αντιμετώπιση πιθανών επιθέσεων. Οι βασικές κρυπτογραφικές ενότητες περιλαμβάνουν συμμετρική και ασύμμετρη κρυπτογράφηση, συναρτήσεις κατακερματισμού (hash functions), γεννήτριες ψευδοτυχαίων αριθμών, ροής κρυπτογράφησης (stream ciphers), κώδικες αυθεντικοποίησης μηνυμάτων (MACs) και ψηφιακές υπογραφές. Το μάθημα καλύπτει επίσης πρακτικές διαχείρισης κλειδιών και κρυπτογραφικά πρωτόκολλα, όπως ασφαλή ανταλλαγή κλειδιών και χρήση ψηφιακών πιστοποιητικών στο πλαίσιο Υποδομών Δημοσίου Κλειδιού (PKI). Μελετώνται θεμελιώδη μοντέλα και μηχανισμοί αυθεντικοποίησης και ελέγχου πρόσβασης, καθώς και μοντέλα εξουσιοδότησης και διαχείρισης ταυτοτήτων. Εξετάζονται ευπάθειες λογισμικού και συστημάτων, όπως επιθέσεις άρνησης υπηρεσίας (DoS), κακόβουλο λογισμικό (π.χ. ιοί, worms, δούρειοι ίπποι), phishing, spoofing, καθώς και συνήθη ζητήματα ασφάλειας ιστού, όπως cross-site scripting (XSS), επιθέσεις SQL injection και υπερχείλιση buffer. Οι φοιτητές εκπαιδεύονται σε ασφαλείς πρακτικές προγραμματισμού και αρχές μείωσης κινδύνων που σχετίζονται με το λογισμικό, καθώς και σε μηχανισμούς ασφάλειας φυλλομετρητών, όπως η Πολιτική Ίδιας Προέλευσης (Same-Origin Policy). Το μάθημα καλύπτει βασικούς μηχανισμούς άμυνας που χρησιμοποιούνται στην πράξη, όπως λογισμικό προστασίας από ιούς, τείχη προστασίας (firewalls), συστήματα ανίχνευσης εισβολών (IDS) και συστήματα αποτροπής εισβολών (IPS). Παρουσιάζονται επίσης πραγματικά πρωτόκολλα ασφαλείας, όπως TLS/SSL, μηχανισμοί αυθεντικοποίησης βάσει κωδικών πρόσβασης, διαχείριση και αποθήκευση κωδικών, καθώς και μηχανισμοί πολυπαραγοντικής αυθεντικοποίησης. Το μάθημα εξετάζει επίσης τεχνικές κοινωνικής μηχανικής, τον ρόλο του ανθρώπινου παράγοντα στην ασφάλεια και τις προκλήσεις εξισορρόπησης της ασφάλειας με την πρακτικότητα και τη χρηστικότητα. Τέλος, περιλαμβάνεται συνοπτική αναφορά σε επιλεγμένα προχωρημένα θέματα κρυπτογραφίας, όπως η μετα-κβαντική κρυπτογραφία, η ομομορφική κρυπτογράφηση και οι ελαφριές κρυπτογραφικές μέθοδοι, ενώ γίνεται εισαγωγή σε έννοιες που σχετίζονται με την ιδιωτικότητα και σε μηχανισμούς και πρακτικές προστασίας της ιδιωτικότητας.

CSE 329 Στατιστική αναγνώριση προτύπων και μηχανική εκμάθηση

Στόχοι Μαθήματος: Το μάθημα είναι μια εισαγωγή των βασικών εννοιών στη σύγχρονη μηχανική μάθηση. Αρχικά εισάγουμε τις έννοιες της εποπτευόμενης, μη εποπτευόμενης και ημι-εποπτευόμενης μάθησης. Στη συνέχεια, παρουσιάζουμε την κύρια βιολογική έμπνευση της σύγχρονης μη εποπτευόμενης απεικόνισης δεδομένων, δηλαδή της Deep Learning. Περαιτέρω, εισάγουμε τα βασικά μοντέλα εποπτείας μάθησης. Επιπρόσθετα, επεξεργαζόμαστε τους αλγορίθμους Collaborative Filtering, με έμφαση στο Matrix Factorization. Παρουσιάζουμε τα προβλήματα της μάθησης πολλαπλών περιπτώσεων και της ημι-εποπτείας, καθώς αντιμετωπίζονται στο πλαίσιο του μεγάλου περιθωρίου κέρδους. Σε όλες τις περιπτώσεις, επεξεργαζόμαστε τεχνικές που μπορούμε να χρησιμοποιήσουμε για να αποτρέψουμε την υπερφόρτωση, μέσω κατάλληλης χρήσης των μεθόδων νομιμοποίησης. Τέλος, εισάγουμε τεχνικές μάθησης ενίσχυσης, όπου οι πράκτορες μαθαίνουν τις βέλτιστες πολιτικές μέσω της δυναμικής αλληλεπίδρασης με το περιβάλλον τους.

Μαθησιακά Αποτελέσματα: Οι μαθητές θα κατανοήσουν μια ολιστική άποψη του τοπίου μάθησης μηχανής. Θα είναι σε θέση να διακρίνουν ανάμεσα στους κύριους τύπους προσεγγίσεων μηχανικής μάθησης, να κατανοήσουν τα πλεονεκτήματα και τα μειονεκτήματά τους, τα είδη προβλημάτων που μπορούν να λύσουν το καθένα και τι πρέπει να προσέξουμε σε κάθε περίπτωση.

Περιεχόμενο Μαθήματος: Το μάθημα περιλαμβάνει ένα θεωρητικό μέρος και μια σειρά εργαστηριακών ασκήσεων. ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ: Εισαγωγή, Στοιχεία Μηχανικής Μάθησης, Παλινδρόμηση, Ταξινόμηση, Επικύρωση, Επιλογή μοντέλου, Ομαδοποίηση, Εκμάθηση χαρακτηριστικών. ΕΡΓΑΣΤΗΡΙΟ: Επίλυση απλών εργασιών ταξινόμησης, παλινδρόμησης και ομαδοποίησης με τη χρήση της μάθησης Scikit.

CSE 328 Θέματα Τεχνολογίας Λογισμικού και Επαγγελματική Πρακτική

Στόχοι Μαθήματος: Να εφαρμόσουν οι φοιτητές τις απαραίτητες θεωρητικές γνώσεις γύρω από τις διάφορες φάσεις στην ανάπτυξη συστημάτων λογισμικού στην πράξη μέσα από την ανάπτυξη ενός μεγάλου συστήματος  λογισμικού σε ομάδες.

Μαθησιακά Αποτελέσματα: Διαμόρφωση της ικανότητας να εφαρμόσουν οι φοιτητές στην πράξη όλα τα στάδια και τις φάσεις για την ανάλυση, προδιαγραφή, σχεδίαση και υλοποίηση ενός μεγάλου  συστήματος λογισμικού, μαζί με τον έλεγχο και την τεκμηρίωσή του, όπως επίσης και πρακτικά θέματα διαχείρισης έργων λογισμικού.

Περιεχόμενο Μαθήματος: Το μάθημα αυτό αποτελεί φυσική συνέχεια του ΜΗΥΠ 324  - Τεχνολογία Λογισμικού και έχει ως στόχο την αφομοίωση και εμπέδωση στην πράξη της θεωρητικής προσέγγισης και των μεθοδολογιών που ακολουθούνται για την ανάπτυξη ποιοτικών συστημάτων λογισμικού, μέσω ομαδικής εργασίας δημιουργίας ενός προϊόντος λογισμικού που θα εξυπηρετεί συγκεκριμένους σκοπούς από το χώρο της αγοράς, της κοινωνίας, όπως επίσης και από τον ακαδημαϊκό / ερευνητικό χώρο. Η εργασία παρακολουθείται από τον διδάσκοντα μέσω εβδομαδιαίων συναντήσεων με κάθε ομάδα ξεχωριστά (αντί διαλέξεων) κατά τις οποίες συζητούνται και αναλύονται θέματα που σχετίζονται με την πορεία υλοποίησης, παρουσιάζονται διάφορα σχετικά προβλήματα και μελετούνται προτεινόμενες εναλλακτικές λύσεις. Σε κάθε συνάντηση οι ομάδες παραδίδουν έγγραφο πεπραγμένων - έκθεση προόδου στο οποίο αναλύονται οι εργασίες που έγιναν στο διάστημα που μεσολάβησε από την προηγούμενη συνάντηση, τον έλεγχο της πορείας του έργου βάσει του αρχικού χρονοδιαγράμματος, τα προβλήματα που αντιμετωπίστηκαν και τα θέματα προς συζήτηση κατά τη διάρκεια της συνάντησης. Επίσης το έγγραφο αυτό περιέχει σύντομη αναφορά στις εργασίες που διεκπεραίωσε κάθε μέλος της ομάδας, καθώς επίσης κι εκείνες που θα γίνουν μέχρι την επόμενη συνάντηση. Κατά τη διάρκεια της υλοποίησης των συστημάτων καταγράφονται στοιχεία-μετρικές αναφορικά με την προσπάθεια που καταβλήθηκε, το κόστος, το χρόνο, τη διαδικασία ανάπτυξης και την ποιότητα του λογισμικού. Κάθε ομάδα δημιουργεί και παραδίδει τα ακόλουθα έγγραφα: (1) Έγγραφο Ανάλυσης Λειτουργικών Αναγκών και Απαιτήσεων, (2) Έγγραφο Τεχνικών Προδιαγραφών, (3) Έγγραφο Σχεδιασμού, (4) Έγγραφο Υλοποίησης, (5) Εγχειρίδιο Εγκατάστασης και Χρήσης. Τέλος, η ομάδα εκπαιδεύει τον πελάτη και πραγματοποιεί έναν πρώτο κύκλο συντήρησης/υποστήριξης του συστήματος για περίοδο μιας εβδομάδας κατά την οποία ανιχνεύει και διορθώνει προβλήματα και λάθη, και καταγράφει μελλοντικές επεκτάσεις του συστήματος λογισμικού που αναπτύχθηκε.

CSE 327 Παράλληλη Επεξεργασία και Κατανεμημένα Συστήματα

Στόχοι Μαθήματος: Το μάθημα στοχεύει στην εισαγωγή των σπουδαστών/στριων στο σχεδιασμό, αλγορίθμους, υλικό και το λογισμικό των σύγχρονων κατανεμημένων συστημάτων δίνοντας έμφαση τόσο στην αποδοτικότητα όσο και στην ανθεκτικότητα και ασφάλεια.

Τα θέματα που καλύπτονται περιλαμβάνουν αρχιτεκτονικές κατανεμημένων συστημάτων, διεργασίες, επικοινωνία μεταξύ διεργασιών, ονοματοδοσία σε κατανεμημένες οντότητες, συντονισμός και κατανεμημένη συμφωνία σε περιβάλλοντα σφαλμάτων.

Μαθησιακά Αποτελέσματα: Στο τέλος του μαθήματος οι σπουδαστές/στριες: (1) Οι φοιτητές θα αποκτήσουν γνώσεις σχετικές με τον βασικό σχεδιασμό των κατανεμημένων συστημάτων και τους τρόπους επίτευξης βασικών λειτουργίων τους όπως η κατανεμημένη συμφωνία (distributed consensus). (2) Θα αποκτήσουν βαθιά τεχνική γνώση για το πότε και πώς θα αξιοποιούν τις δυνατότητες των σύγχρονων παράλληλων και  κατανεμημένων συστημάτων για να εξυπηρετούν τις ανάγκες των οργανισμών τους. Θα εξοικειωθούν με συστήματα επεξεργασίας μεγάλων δεδομένων όπως αυτά που χρησιμοποιούν εταιρείες όπως η Google, Amazon, Facebook, etc. (3) Θα εκπαιδευτούν στην κριτική κατανόηση αμφιλεγόμενων ζητημάτων ώστε να ξεχωρίζουν την πραγματικά επιστημονική πληροφορία από διαφημιστικές ανοησίες. Για παράδειγμα γιατί κάποιοι/ες ισχυρίζονται ότι οι κεντρικές λύσεις είναι κάτι που ποτέ δεν θέλουμε; Πόσο χρήσιμη είναι τελικά η τεχνολογία blockchain;

Περιεχόμενο Μαθήματος: Αρχιτεκτονικές Κατανεμημένων Συστημάτων. Διεργασίες. Επικοινωνία. Ονοματοδοσία (Naming). Συντονισμός και Κατανεμημένη Συμφωνία. Συνέπεια και Aντιγραφή (Consistency and Replication). Aνθεκτικότητα σε Σφάλματα (Fault Tolerance). Ασφάλεια

CSE 326 Μηχανική Ιστού

Στόχοι Μαθήματος: Ο στόχος του μαθήματος είναι η παροχή στους φοιτητές των απαιτούμενων γνώσεων και δεξιοτήτων ώστε να έχουν τη δυνατότητα να αναπτύξουν μία περίπλοκη εφαρμογή ιστού.

Μαθησιακά Αποτελέσματα: (1) Οι φοιτητές θα αποκτήσουν γνώσεις σχετικές με τον βασικό σχεδιασμό των εφαρμογών του διαδικτύου, οι οποίες καλύπτουν πρωτόκολλά, πρότυπα, διαχείριση δεδομένων, πολυεπίπεδες αρχιτεκτονικές και ασφάλεια. (2) Θα μάθουν πως να σχεδιάσουν και να εφαρμόσουν αξιόπιστες, εύχρηστες, κλιμακούμενες, ευέλικτες, ασφαλείς και διατηρήσιμες εφαρμογές ιστού. (3) Θα γνωρίσουν πώς μελετήσουν πολλά ακαδημαϊκά άρθρα που περιγράφουν το σχέδιο φιλοσοφίας συστημάτων στα οποία βασίζεται η υποδομή WWW. (4) Μέσω μιας σειράς ασκήσεων εφαρμογής του διαδικτυακού συστήματος, οι φοιτητές θα αποκτήσουν τις γνώσεις του προγραμματισμού και τις υποδομής που απαιτούνται για τη δημιουργία ενός προχωρημένου ιστού εφαρμογής.

Περιεχόμενο Μαθήματος: Το μάθημα αυτό αποτελεί μια εισαγωγή στις τεχνολογίες διαδικτύου, οι οποίες πλέον αποτελούν την κύρια πλατφόρμα εφαρμογών λογισμικού. Θα καλύψουμε ένα μεγάλο εύρος πλαισίων εργασίας (frameworks) για την ανάπτυξη εφαρμογών ιστού τα οποία χρησιμοποιούνται σε κρίσιμες επιχειρηματικές εφαρμογές μεγάλης κλίμακας, όπως Online Social Networks, Banking, Online Stores, Online Video Services, κ.ο.κ. Θα περιγράψουμε τις βασικές αρχές των εφαρμογών διαδικτύου, όπως πρωτόκολλα, standards, διαχείριση δεδομένων, multi-tier αρχιτεκτονικές και ασφάλεια. Θα μελετήσουμε πως μπορούμε να αναπτύξουμε αξιόπιστες, φιλικές στο χρήστη, κλιμακώσιμες, ευέλικτες και διατηρήσιμες εφαρμογές. 1η  Εβδομάδα: Εισαγωγή. Web servers και HTTP.   Εργασία: Εγκατάσταση LAMP stack (Ubuntu 10.04LTS, Apache, MySQL, PHP/Python). 2η -3η  Εβδομάδα:  Σχεδιασμός διαπροσωπείας και χρηστικότητα εφαρμογών. HTML, CSS.  Εργασία: Διαμόρφωση (configuration/set up) Apache web server και εξυπηρέτηση μιας απλής σελίδας ΗΤΜL/CSS. 4η-6η  Εβδομάδα: Μηχανική ιστού. Model-View-Controller architectural pattern για εφαρμογές ιστού. PHP, server-side programming, sessions.  Εργασία: Set up PHP και εξυπηρέτηση μιας απλής δυναμικής σελίδας. Multι-tier εφαρμογές.  Εργασία: Διαμόρφωση βάσης δεδομένων MySQL. Χρήση  PHP για  δυναμικές σελίδες που φορτώνουν δεδομένα από τη βάση. 7η-9η Εβδομάδα: Client-side programming. Javascript, AJAX, JQuery, XML.  Εργασία: Αναβάθμιση της μέχρι τώρα αναπτυχθέισας εφαρμογής με διαδραστικότητα AJAX. 10η  Εβδομάδα: Aσφάλεια εφαρμογών ιστού. OpenSSL και X.509 Public Key Certificates.   Εργασία:  Μετατροπή της μέχρι τώρα αναπτυχθείσας  εφαρμογής σε HTTPS/SSL και κάλυψη κενών ασφαλείας της.

CSE 325 Βάσεις Δεδομένων

Στόχοι Μαθήματος: Το μάθημα εισάγει τις αρχές και τις πρακτικές των συστημάτων βάσεων δεδομένων. Καλύπτει τα θεωρητικά θεμέλια των σχεσιακών βάσεων δεδομένων, τις πρακτικές δεξιότητες για το σχεδιασμό και την αναζήτηση βάσεων δεδομένων και τη γνώση του τρόπου λειτουργίας των σύγχρονων συστημάτων διαχείρισης βάσεων δεδομένων.

Μαθησιακά Αποτελέσματα: Στο τέλος του μαθήματος οι φοιτητές θα μπορούν: (1) να σχεδιάσουν μία αποτελεσματική και αποδοτική βάση δεδομένων. (2) να εκτελέσουν ερωτήματα SQL σε μια βάση δεδομένων για εισαγωγή, μετατροπή, διαγραφή, εξόρυξη και ανάλυση δεδομένων, (3) να διαχειριστούν μία βάση δεδομένων σωστά αναλόγως των απαιτήσεων των εφαρμογών.

Περιεχόμενο Μαθήματος: Το μάθημα παρέχει ένα σταθερό υπόβαθρο βάσεων δεδομένων που εστιάζει σε συστήματα διαχείρισης σχεσιακών βάσεων δεδομένων. Τα θέματα περιλαμβάνουν μοντελοποίηση δεδομένων, θεωρία και μεθοδολογία σχεδίασης βάσεων δεδομένων, μοντέλο σχέσεων οντοτήτων, κανονικοποίηση, γλώσσες ορισμού και χειρισμού δεδομένων (SQL), τεχνικές αποθήκευσης και ευρετηρίασης και επεξεργασία συναλλαγών. Το μάθημα καλύπτει επίσης τις βασικές αρχές της αρχιτεκτονικής συστημάτων διαχείρισης βάσεων δεδομένων και μεθόδους ανάπτυξης εφαρμογών.

CSE 324 Τεχνολογία Λογισμικού

Στόχοι Μαθήματος: Να αφομοιώσουν οι φοιτητές τις απαραίτητες θεωρητικές γνώσεις γύρω από τις διάφορες φάσεις στην ανάπτυξη συστημάτων λογισμικού, να μελετούν την πολυπλοκότητα και τα σχετικά προβλήματα, και να αναγνωρίζουν τις διαθέσιμες τεχνικές και τα μοντέλα για να τα αντιμετωπίσουν.

Μαθησιακά Αποτελέσματα: Απόκτηση πυρηνικών γνώσεων γύρω από την ανάλυση, προδιαγραφή, σχεδίαση και υλοποίηση συστημάτων λογισμικού, με συμπληρωματικές γνώσεις για έλεγχο και διαχείριση έργων λογισμικού.

Περιεχόμενο Μαθήματος: Το μάθημα αυτό αποτελεί μια εισαγωγή στην Τεχνολογία Λογισμικού, του κλάδου εκείνου της Πληροφορικής ο οποίος ασχολείται με τις θεωρητικές προσεγγίσεις, τις μεθοδολογίες και τα εργαλεία που απαιτούνται για την ανάπτυξη ποιοτικών συστημάτων λογισμικού εντός του προβλεπόμενου χρονοδιαγράμματος και του συμφωνηθέντος προϋπολογισμού. Καλύπτονται οι εξής ενότητες-κεφάλαια: (1) Εισαγωγικές έννοιες, (2) Η διαδικασία ανάπτυξης λογισμικού, (3) Μοντέλα κύκλου ζωής του λογισμικού, (4) Οργάνωση ομάδων και διαχείριση έργων παραγωγής, (5) Εργαλεία CASE: Τεχνολογία λογισμικού υποβοηθούμενη από τον Η/Υ, (6) Έλεγχος, (7) Εισαγωγή στα objects, (8) Απαιτήσεις, (9) Προδιαγραφές, (10) Αντικειμενοστρεφής ανάλυση, (11)  Σχεδίαση, (12)  Υλοποίηση, (13) Υλοποίηση και Συνένωση, (14) Συντήρηση.

CSE 323 Αρχιτεκτονική Υπολογιστών

Στόχοι Μαθήματος: Το μάθημα της Αρχιτεκτονικής Υπολογιστών παρέχει μια ολοκληρωμένη εισαγωγή στις θεμελιώδεις αρχές της αρχιτεκτονικής υπολογιστών, εστιάζοντας στον σχεδιασμό και τη συμπεριφορά (σε υψηλό επίπεδο) των συστημάτων υπολογιστών. Το μάθημα απαντά στα «Τί» αποτελεί ένα υπολογιστικό σύστημα και «Γιατί», και επικεντρώνεται στις διάφορες τεχνικές που αυξάνουν την επίδοση ενός υπολογιστικού συστήματος. Το μάθημα δίνει έμφαση στη σχέση μεταξύ αρχιτεκτονικής και επίδοσης λογισμικού, καθώς και στις τρέχουσες τάσεις και προκλήσεις στην έρευνα αρχιτεκτονικής υπολογιστών. Το μάθημα διδάσκει τον παραλληλισμό εντολών (ILP),  τον παραλληλισμό δεδομένων (DLP) και το παραλληλισμό υπολογισμό (TLP). Διδάσκει επίσης τελευταίες τεχνολογίες όπως Cloud Computing (στο επίπεδο της αρχιτεκτονικής) και τους τελευταίους επιταχυντές ειδικών τομέων (Domain-specific Accelerators), συμπεριλαμβανομένων GPU και AI accelerators. Σε κάθε ενότητα θα εξετάζονται οι πιο σημαντικές τεχνικές που χρησιμοποιούνται σήμερα σε υπάρχον συστήματα αλλά και σε ερευνητικά προγράμματα.

Μαθησιακά Αποτελέσματα: Με την ολοκλήρωση του μαθήματος οι φοιτητές θα μπορούν να: (1) Κατανοούν και να εφαρμόζουν τη σύγχρονη μεθοδολογία αξιολόγησης και σύγκρισης επίδοσης υπολογιστικών συστημάτων. (2) Περιγράφουν και να εξηγούν τις βασικές και προχωρημένες αρχές που διέπουν την αρχιτεκτονική διαφορών ειδών μοντέρνων επεξεργαστών και τον αντίκτυπο τους στην επίδοση. (3) Να αξιολογούν τις σύγχρονες τάσεις και προκλήσεις στην περιοχή της αρχιτεκτονικής υπολογιστών. (4) Να απαντούν στα ερωτήματα «Τί» και «Γιατί» υλοποιεί ένα υπολογιστικό σύστημα για να αυξήσει την επίδοση του.

Περιεχόμενο Μαθήματος: Βασικές αρχές ποσοτικού σχεδιασμού και ανάλυσης υπολογιστικών συστημάτων, Παραλληλισμός στο επίπεδο των εντολών, Branch Prediction, Dynamic Scheduling, Hardware Speculation, Παραλληλισμός στο επίπεδο των δεδομένων, GPUs, Παράλληλα συστήματα, Multiprocessors, Shared memory and Cache coherence, Memory Consistency, Παραλληλισμός στο επίπεδο των αιτημάτων, Cloud Computing, Ειδικοί Επιταχυντές, Domain-specific Accelerators, AI and DNN Accelerators. Επιπλέον ερευνητικά/πρακτικά θέματα βάση της εξέλιξης της τεχνολογίας (π.χ. Processor Security, Quantum Computing).

CSE 321 Δίκτυα και Επικοινωνίες Υπολογιστών

Στόχοι Μαθήματος: Εισαγωγή στα δίκτυα ηλεκτρονικών υπολογιστών, με έμφαση στο Διαδίκτυο (Internet). Καλύπτεται ένα μεγάλο εύρος θεμάτων, όπως οι βασικές αρχές πρωτοκόλλων επιπέδου εφαρμογών (π.χ., Web, FTP, DNS), διανομή περιεχομένου, αρχιτεκτονικές πελάτη-εξυπηρετητή (client-server) και ομότιμων (peer-to-peer), πρωτόκολλα μεταφοράς δεδομένων TCP/UDP, αρχές αξιόπιστης μεταφοράς δεδομένων και ελέγχου συμφόρησης, έλεγχος συμφόρησης στο Διαδίκτυο, αρχές δρομολόγησης και δρομολόγηση στο Διαδίκτυο, το πρωτόκολλο IP και αρχιτεκτονικές δρομολογητών δικτύου, διευθύνσεις στο Διαδίκτυο, IPv4 και IPv6, ενσύρματα και ασύρματα δίκτυα πρόσβασης, (π.χ., Ethernet, DSL, WLANs), ζεύξεις δεδομένων.

Μαθησιακά Αποτελέσματα: Γνώσεις αρχών και λειτουργίας δικτύων ηλεκτρονικών υπολογιστών με έμφαση στο Διαδίκτυο

Περιεχόμενο Μαθήματος: Εισαγωγή στα Δίκτυα Υπολογιστών, δομή Διαδικτύου, αρχιτεκτονική επιπέδων, μέτρα απόδοσης, βασικές έννοιες. Επίπεδο Ζεύξης Δεδομένων, Τοπικά Δίκτυα. Επίπεδο Δικτύου, πρωτόκολλο IP, δρομολόγηση, διευθύνσεις. Επίπεδο Μεταφοράς, πρωτόκολλα TCP/UDP, συμφόρηση, έλεγχος. Επίπεδο Εφαρμογής, αρχιτεκτονικές Client-Server και Peer-to-Peer.

CSE 322 Εργαστήριο Δικτύων Υπολογιστών και Επικοινωνιών

Στόχοι Μαθήματος: Το μάθημα αυτό έχει ως σκοπό την πρακτική εξάσκηση και πειραματισμό των φοιτητών σε θέματα δικτύων Η/Υ. Συγκεκριμένα, το μάθημα προσφέρει στους φοιτητές τη δυνατότητα να διασυνδέσουν τοπικά δίκτυα Η/Υ χρησιμοποιώντας διακόπτες (switches), δρομολογητές (routers) και τερματικά (hosts), και να διενεργήσουν διάφορα πειράματα σχετικά με τη στοίβα πρωτοκόλλων TCP/IP.

Μαθησιακά Αποτελέσματα: Πρακτική εμπειρία με έννοιες όπως το υποδίκτυο (subnet) τη διευθυνσιοδότηση (addressing, subneting, subnet masks), πρωτόκολλα δρομολόγησης (π.χ., RIP, OSPF), πρωτόκολλα πολλαπλής πρόσβασης, συσκευές δικτύου (routers, switches, hosts), καθώς και εμπειρία σε πρακτικά θέματα προγραμματισμού δρομολογητών (Cisco IOS).

Περιεχόμενο Μαθήματος: Εισαγωγή στον εξοπλισμό (hardware και software) του εργαστηρίου, το λειτουργικό σύστημα των δρομολογητών CISCO (CISCO Internet Operating System—IOS). Διασύνδεση και προγραμματισμός IP δικτύων Ethernet (Singe-Segment IP Networks). Προγραμματισμός δικτύων για στατική δρομολόγηση (Static Routing). Προγραμματισμός δικτύων για δυναμική δρομολόγηση (Dynamic Routing Protocols (RIP, OSPF, BGP)). Μετρήσεις κίνησης πρωτοκόλλων μεταφοράς UDP και TCP σε πραγματικά δίκτυα.