σπουδες

ΠΜΣ Προηγμένα Συστήματα Πληροφορικής – Ανάπτυξης Λογιστμικού και Τεχνητής Νοημοσύνης

Προηγμένες Τεχνολογίες Ανάπτυξης Λογισμικού

Η κατεύθυνση «Προηγμένες Τεχνολογίες Ανάπτυξης Λογισμικού» στοχεύει στην ανάπτυξη λογισμικού το οποίο εξυπηρετεί σύγχρονες ανάγκες και απαιτήσεις του προγραμματισμού. Περιλαμβάνει τα πεδία της ανάπτυξης λογισμικού στοχευμένου στον παγκόσμιο ιστό, λογισμικό ανάπτυξης εφαρμογών για τις νέες “έξυπνες” κινητές συσκευές (smartdevices, smartphones), το ταχύτατα αναπτυσσόμενο πεδίο της Υπολογιστικής Νέφους (Cloud Computing), καθώς και τον ασφαλή προγραμματισμό. Τα παραπάνω πεδία αποτελούν πλέον σημαντικές νέες κατευθύνσεις στην επιστήμη της Πληροφορικής, αναπτύσσονται και εξελίσσονται με συνεχείς αυξανόμενους ρυθμούς, εξυπηρετώντας ολοένα και μεγαλύτερα ποσοστά του παγκόσμιου πληθυσμού. Ο μεταπτυχιακός φοιτητής, ο οποίος θα έχει παρακολουθήσει με επιτυχία τα μαθήματα της κατεύθυνσης «Προηγμένες Τεχνολογίες Ανάπτυξης Λογισμικού», θα είναι γνώστης θεμάτων υψηλής τεχνολογίας, καθώς θα αποκτήσει το απαραίτητο θεωρητικό και προγραμματιστικό υπόβαθρο για να ανταπεξέλθει στις αυξημένες απαιτήσεις των σύγχρονων τεχνολογικών εξελίξεων. Θα διαθέτει τα εφόδια για να αναπτύξει λογισμικό στοχευμένο στις τρέχουσες αλλά και στις μελλοντικές εξελίξεις της Πληροφορικής.

Μαθήματα κατεύθυνσης

1ο ΕΞΑΜΗΝΟ

Αναγνώριση Προτύπων και Μηχανική Μάθηση

Αναγνώριση Προτύπων (pattern recognition) είναι η επιστημονική περιοχή που έχει στόχο την ταξινόμηση αντικειμένων σε κατηγορίες (κλάσεις) και συμπεριλαμβάνει το επιστημονικό πεδίο της Μηχανικής Μάθησης (machine learning). Σκοπός, επομένως, του παρόντος μαθήματος είναι να παρουσιάσει με ενιαίο τρόπο τις ευρύτερα χρησιμοποιούμενες τεχνικές και μεθοδολογίες για προβλήματα αναγνώρισης προτύπων.

 

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

 

Ενότητα 1: Εισαγωγή στην Αναγνώριση Προτύπων

 

Ενότητα 2: Ταξινομητές που βασίζονται στη θεωρία αποφάσεων του Bayes:

Θεωρία Αποφάσεων του Bayes, H Γκαουσσιανή Συνάρτηση Πυκνότητας Πιθανότητας, Ταξινομητές Ελάχιστης Απόστασης, Ταξινομητής Ευκλείδειας Απόστασης, Ταξινομητής Mahalanobis Απόστασης, Εκτίμηση Μέγιστης Πιθανοφάνειας των παραμέτρων της Γκαουσσιανής Συνάρτησης Πυκνότητας Πιθανότητας

Μοντέλα Μίξης, Ο Αλγόριθμος Expectation-Maximization, Παράθυρα Parzen

Εκτίμηση Πυκνότητας Πιθανότητας με βάση τους k-πλησιέστερους γείτονες, Ο Ταξινομητής Naive Bayes, Ο Ταξινομητής Πλησιέστερων Γειτόνων

 

Ενότητα 3: Ταξινομητές που βασίζονται στη Βελτιστοποίηση Συνάρτησης Κόστους:

Ο αλγόριθμος Perceptron, H online έκδοση του αλγόριθμου Perceptron, Ταξινομητής Ελάχιστου Τετραγωνικού Σφάλματος, Περίπτωση πολλών κλάσεων, Μηχανές Διανυσματικής Στήριξης (ΜΔΣ/SVM): Η γραμμική περίπτωση, Επεκτάσεις για την περίπτωση πολλών κλάσεων, SVM: Η μη γραμμική περίπτωση, Ο Αλγόριθμος Perceptron με χρήση Πυρήνων, O Αλγόριθμος AdaBoost, Πολυστρωματικά Δίκτυα Perceptrons

 

Ενότητα 4: Μετασχηματισμοί Δεδομένων: Γένεση Χαρακτηριστικών και Μείωση Αριθμού Διαστάσεων:

Ανάλυση σε Κύριες Συνιστώσες (PCA), Ανάλυση σε Ιδιάζουσες Τιμές (SVD), Ανάλυση Γραμμικής Διάκρισης κατά Fisher, Ανάλυση σε Κύριες Συνιστώσες με Χρήση Πυρήνων, Μέθοδος Χαρτογράφησης Ιδιοτιμών του Laplacian Μητρώου

 

Ενότητα 5: Επιλογή Χαρακτηριστικών:

Αποκοπή Ακραίων Τιμών, Κανονικοποίηση Δεδομένων, Έλεγχος Υποθέσεων: t-Test,

Καμπύλη Receiver Operating Characteristic, Λόγος Διάκρισης κατά Fisher, Μέτρα Διαχωριστικής Ικανότητας μεταξύ κλάσεων, Απόκλιση, Απόσταση Bhattacharya και Φράγμα Chernoff, Μέτρα βασισμένα σε Μητρώα Διασποράς, Επιλογή Υποσυνόλου Χαρακτηριστικών, Βαθμωτή Επιλογή Χαρακτηριστικών, Διανυσματική Επιλογή Χαρακτηριστικών

 

Ενότητα 6: Σύγκριση με Πρότυπα Αναφοράς: Απόσταση Edit, Σύγκριση Ακολουθιών Πραγματικών Αριθμών, Δυναμική Χρονική Στρέβλωση στα πλαίσια της Αναγνώρισης Φωνής

 

Ενότητα 7: Κρυφά Μοντέλα Markov: Μοντελοποίηση, Αναγνώριση και Εκπαίδευση

 

Ενότητα 8: Ομαδοποίηση: Βασικές Έννοιες και Ορισμοί, Αλγόριθμοι Ομαδοποίησης, Ακολουθιακοί Αλγόριθμοι, Αλγόριθμος BSAS, Βελτίωση Ομαδοποίησης, Αλγόριθμοι Ομαδοποίησης Βασιζόμενοι στη Βελτιστοποίηση Συνάρτησης Κόστους, Αλγόριθμοι Σαφούς Ομαδοποίησης, Αλγόριθμοι Μη-Σαφούς Ομαδοποίησης, Άλλοι Αλγόριθμοι Ομαδοποίησης, Αλγόριθμοι Ιεραρχικής Ομαδοποίησης, Γενικό Σχήμα Συγχώνευσης, Εξειδικευμένοι Αλγόριθμοι Συγχώνευσης, Επιλογή της καλύτερης Ομαδοποίησης

Με την επιτυχή́ ολοκλήρωση του μαθήματος ο φοιτητής θα είναι σε θέση:

  • Να διαθέτει προχωρημένες και εξειδικευμένες γνώσεις σε αλγορίθμους, τεχνικές και μεθοδολογίες αναγνώρισης προτύπων, όπως στην Μπεϋζιανή θεωρία ταξινόμησης, σε γραμμικούς και μη γραμμικούς ταξινομητές, σε Νευρωνικά δίκτυα, σε Κρυφά Μοντέλα Markov, σε αλγορίθμους ομαδοποίησης και τεχνικές επιλογής χαρακτηριστικών και μείωσης αριθμού διαστάσεων δεδομένων.
  • Να αντιλαμβάνεται με ευχέρεια πώς συνδυάζονται γνώσεις πιθανοτήτων, στατιστικής, γραμμικής άλγεβρας και βελτιστοποίησης για τη δημιουργία αλγορίθμων αναγνώρισης προτύπων.
  • Να αναλύει προβλήματα πραγματικών δεδομένων (ανοικτής πρόσβασης), στα οποία απαιτείται η σχεδίαση/ανάπτυξη/υλοποίηση συστημάτων ταξινόμησης αντικειμένων.
  • Να εκτιμά με κριτική σκέψη το εφικτό των προβλημάτων αυτών, να επιλέγει τους κατάλληλους αλγορίθμους/τεχνικές και να προβαίνει στην αποτίμηση και συγκριτική μελέτη των επιδόσεων εναλλακτικών λύσεων.
  • Να διαχειρίζεται με ευχέρεια τον φόρτο και την πολυπλοκότητα τέτοιων προβλημάτων πραγματικών δεδομένων σε περιβάλλον ομαδικής εργασίας.
  • Να κατέχει προχωρημένες προγραμματιστικές δεξιότητες σε περιβάλλον ανάπτυξης λογισμικού Python/MATLAB/GNU Octave για την υλοποίηση πρωτότυπων αλγορίθμων, τεχνικών και μεθόδων ταξινόμησης αντικειμένων.
  • Να εκτιμά και να επαναχρησιμοποιεί υφιστάμενες υλοποιήσεις συναρτήσεων ανοιχτού κώδικα, σχετικών με το πεδίο της αναγνώρισης προτύπων, όπως των συναρτήσεων της βιβλιοθήκης scikit-learn.
  • Να διακρίνει έννοιες συναφείς της αναγνώρισης προτύπων, στα συγγενή επιστημονικά πεδία της Μηχανικής Μάθησης, της Ανάλυσης Δεδομένων και της Τεχνητής Νοημοσύνης.
  • Να εφαρμόζει με ευχέρεια και πρωτοτυπία αλγορίθμους, τεχνικές και μεθοδολογίες αναγνώρισης προτύπων στις έρευνες, μελέτες και εργασίες τους με κριτικό και δημιουργικό τρόπο.
  • Να επιδεικνύει κριτική κατανόηση στον τρόπο διασύνδεσης των αλγορίθμων, τεχνικών και μεθοδολογιών αναγνώρισης προτύπων με ποικίλους γνωστικούς τομείς.
  • Να εφαρμόζει αλγορίθμους, τεχνικές και μεθοδολογίες αναγνώρισης προτύπων για την επίλυση σύνθετων ζητημάτων στο χώρο εργασίας με επιστημονικά τεκμηριωμένο τρόπο.
  • Να αναπτύσσει με αυτονομία τις σχετικές με την αναγνώριση προτύπων γνώσεις  και ικανότητές τους.
  • Να επιλύει προβλήματα και να λαμβάνουν στρατηγικές αποφάσεις με αφετηρία την επαγωγική σκέψη βασιζόμενοι στους αλγορίθμους, στις τεχνικές και στις μεθοδολογίες αναγνώρισης προτύπων.

302, κεντρικό κτίριο
+302104142322

543/ΚΕΚΤ
+30 210 4142314

Ανάπτυξη Λογισμικού για τον Παγκόσμιο Ιστό

To μάθημα ασχολείται με τη θεωρητική μελέτη και την πρακτική εξάσκηση σε θέματα προγραμματισμού εφαρμογών λογισμικού για τον παγκόσμιο ιστό, στη σχεδίαση και προγραμματισμό σύγχρονου λογισμικού με βάση τις κατευθύνσεις της υπηρεσιοστρεφούς προσέγγισης (service oriented), με αρχές σχεδίασης λογισμικού REST, για την αποδοτική πρόσβασης σε πηγές πληροφοριών.

Στόχος είναι να γίνει κατανοητός ο τρόπος σχεδίασης, ανάπτυξης, λειτουργίας και συντήρησης λογισμικού με αποδοτικότητα με πρακτική εξάσκηση σε εργαστηριακό περιβάλλον (δίνονται εναλλακτικές εργαστηριακές υλοποίησης σε Ruby/Rails, Java, .NET C#, Python, κ.α.).

  1. Οργάνωση ανάπτυξης λογισμικού με τον ευέλικτο προγραμματισμό
  2. Συμπεριφορική σχεδίαση λογισμικού
  3. Ανάπτυξη και λογισμικό υπηρεσίας διαχείρισης εκδόσεων
  4. Διαχείριση ομάδων ανάπτυξης λογισμικού
  5. Διαχείριση διαδικασιών για την ομαλή μετάβαση από την ανάπτυξη στην εγκατάσταση
  6. Σχεδιάση με χρήση REST αρχιτεκτονικής
  7. Αποδοτικότητα με βάση το HTTP v0
  8. Προκλήσεις των Object Relational πλαισίων σχεδίασης και ανάπτυξης εφαρμογών ιστού
  9. Καλές πρακτικές στη σχεδίαση front-end λογισμικού
  10. Στοιχεία για την αποδοτική εγκατάσταση εφαρμογών λογισμικού παγκόσμιου ιστού

Με την επιτυχή ολοκλήρωση αυτού του μαθήματος οι φοιτητές θα είναι σε θέση:

  • Να εφαρμόζουν αρχιτεκτονική REST
  • Να αναγνωρίζουν αρχές σχεδίασης λογισμικού με REST
  • Να αναγνωρίζουν και να κατανοούν σύγχρονες τεχνικές σχεδίασης ολοκληρωμένων εφαρμογών λογισμικού του παγκόσμιου ιστού
  • Να διακρίνουν έννοιες αποδοτικής διασύνδεσης εφαρμογών παγκόσμιου ιστού με βάσεις δεδομένων (ORM)
  • Να αξιολογούν και να επιλέγουν πλαίσιο σχεδίασης και ανάπτυξης λογισμικού εφαρμογών παγκόσμιου ιστού

543/ΚΕΚΤ
Τηλέφωνο/Fax:+30 210 4142312

Προηγμένα Θέματα Αντικειμενοστρεφούς Προγραμματισμού (Java)

Στόχος του μαθήματος είναι ένας φοιτητής που κατέχει το βασικό επίπεδο (basic-middle level) του αντικειμενοστρεφούς προγραμματισμού, να φτάσει έως και το προχωρημένο επίπεδο στο εν λόγω πεδίο. Η κατ’ εξοχήν επικρατέστερη γλώσσα του OO Programming, η Java χρησιμοποιείται ως βάση για το μάθημα, ωστόσο οι γνώσεις που θα αποκομίσει ο φοιτητής μπορούν να εφαρμοστούν σε οποιοδήποτε πεδίο και γλώσσα προγραμματισμού.

 

Στο μάθημα περιλαμβάνονται μεταξύ άλλων:

  • Java 19
  • Design Patterns
  • Threading-Synchronization
  • Stream API – Functional Style Programming
  • Build-in Functional Interfaces
  • Known Frameworks (Spring Boot, Java Microharness Framework)
  • Reflection
  • Advanced OO: Enums, Records, Sealed Classes

Με την επιτυχή ολοκλήρωση του μαθήματος ο/η φοιτητής/φοιτήτρια θα είναι σε θέση να:

  • Να κατέχει εξειδικευμένες γνώσεις σχετικά με τον αντικειμενοστρεφή προγραμματισμό
  • Να διαθέτουν ευρεία γνώση σχετικά με τη γλώσσα Java
  • Να επιλέγει και να εφαρμόζει με ευχέρεια τα διάφορα πρότυπα σχεδίασης
  • Να επιλέγει και να εφαρμόζει τεχνολογίες λειτουργικών διεπαφών
  • Να σχεδιάζει και να αναπτύσσει προηγμένες αντικειμενοστραφείς λειτουργίες όπως Enums, Records, Sealed Classes
  • Έχει ευρεία γνώση και να κατανοεί βασικές ιδιότητες στα Προηγμένα θέματα Αντικειμενοστρεφούς Προγραμματισμού (Java).
  • Εστιάζει με ευχέρεια σε εφαρμογές εντός πραγματικού εργασιακού περιβάλλοντος με τη χρήση των σχετικών λογισμικών
  • Εφαρμόζει με ευχέρεια και πρωτοτυπία τις έννοιες, μεθοδολογίες, μοντέλα των προηγμένων θέματα αντικειμενοστρεφούς προγραμματισμού (Java) στις έρευνες, μελέτες και εργασίες τους με κριτικό και δημιουργικό τρόπο.
  • Επιδεικνύει κριτική κατανόηση στον τρόπο διασύνδεσης των εννοιών, μεθοδολογιών και μοντέλων των προηγμένων θέματα αντικειμενοστρεφούς προγραμματισμού σε Java, με ποικίλους γνωστικούς τομείς.
  • Εφαρμόζει τις σχετικές με τον αντικειμενοστρεφή γνώσεις για την επίλυση σύνθετων ζητημάτων στο χώρο εργασίας με επιστημονικά τεκμηριωμένο τρόπο.
  • Αναπτύσσει με αυτονομία τις σχετικές με τον αντικειμενοστρεφη προγραμματισμό και ικανότητές τους,
  • Επιλύει προβλήματα και να λαμβάνουν στρατηγικές αποφάσεις με αφετηρία την επαγωγική σκέψη βασιζόμενοι στις έννοιες, μεθοδολογίες, και μοντέλα του αντικειμενοστρεφούς προγραμματισμού.

540, κεντρικό κτίριο

Αλγοριθμικές Τεχνικές και Εφαρμογές

Λαμβάνοντας υπόψη το μέγαλο εύρος του αντικειμένου, το μάθημα εστιάζει κυρίως στους παράλληλους αλγορίθμους και παράλληλο υπολογισμό:
– Βασικές αλγοριθμικές τεχνικές για συστήματα διαμοιραζόμενης και κατανεμημένης μνήμης (Πήδηση δεικτών, Διαίρει και Βασίλευε, Σωλήνωση, Εξισορρόπηση φορτίου)
– Παράλληλοι αλγόριθμοι για αναζήτηση, ταξινόμηση, προβλήματα γραφημάτων ( συντομότερες διαδρομές, συνεκτικές συνιστώσες, ελάχιστο γεννητικό δέντρο), αριθμητικοί υπολογισμοί (πολλαπλασιασμός πινάκων, επίλυση συστήματος γραμμικών εξισώσεων, επίλυση διαφορετικών εξισώσεων), επεξεργασία εικόνας (π.χ. τμηματοποίηση εικόνας), υπολογιστική γεωμετρία (κυρτό περίβλημα, προβλήματα ορατότητας), προβλήματα μηχανικής (π.χ. προσομοίωση κίνησης ουρανίων σωμάτων (n-body simulation))
-Παράλληλος Προγραμματισμός: OpenMP, Pthreads, Java threads, CUDA, OpenCL, MPI

Με την επιτυχή ολοκλήρωση αυτής της ενότητας οι φοιτητές θα είναι σε θέση να:
1. Να εφαρμόζουν εύστοχα τις κατάλληλες αλγοριθμικές τεχνικές για την επίλυση υπολογιστικών προβλημάτων που προκύπτουν στα διάφορα πεδία εφαρμογών.
2. Να κατανοούν τη εγγενή δυσκολία ενός αλγοριθμικού προβλήματος.
3. Να εκτιμούν τόσο αναλυτικά όσο και πειραματικά την ποιότητα λύσης ενός αλγορίθμου.
4. Να προσδιορίζουν αναλυτικά την πολυπλοτητα χώρου και χρόνου των αλγοριθμικών τεχνικών.
5. Να υλοποιούν αποδοτικά αλγορίθμους λαμβάνοντας υπόψη την συγκεκριμένη πλατφόρμα υλοποίησης.

Ειδικά Θέματα Τεχνολογίας Λογισμικού

Στο μάθημα Ειδικά Θέματα Τεχνολογίας Λογισμικού θα διδαχθούν μεθοδολογίες ανάπτυξης λογισμικού με έμφαση στην ανάλυση και το σχεδιασμό. Αρχικά θα γίνει η παρουσίαση των κυριότερων μοντέλων κύκλου ζωής λογισμικού συμπεριλαμβανομένου του Μοντέλου Καταρράκτη και της αντικειμενοστρεφούς διαδικασίας Rational Unified Process (RUP). Θα αναλυθούν τα χαρακτηριστικά ποιότητας λογισμικού και θα γίνει παρουσίαση αλγορίθμων προϋπολογισμού κόστους λογισμικού. Θα δοθεί έμφαση στη διδασκαλία της UML, η οποία είναι μια γλώσσα μοντελοποίησης που χρησιμοποιείται για αντικειμενοστρεφή ανάλυση και σχεδιασμό λογισμικού και ήδη έχει αποτελέσει ένα διεθνές πρότυπο ανάπτυξης λογισμικού που χρησιμοποιείται ευρύτατα από εταιρείες, οργανισμούς και από μηχανικούς λογισμικού για τους σκοπούς της ανάπτυξης λογισμικού. Θα γίνει αναφορά σε Εργαλεία Υποβοήθησης Ανάπτυξης Λογισμικού (CASE Tools). Επίσης θα παρουσιασθούν μεθοδολογίες λειτουργικής προσέγγισης. Το μάθημα περιλαμβάνει εργαστήρια για τη χρήση του εργαλείου Rational Rose.

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

Καθηγήτρια
507/ΚΕΚΤ
+30.210.4142269

2ο ΕΞΑΜΗΝΟ

Ανάπτυξη Λογισμικού για Κινητές Συσκευές

Αντικείμενο του μαθήματος είναι η ανάπτυξη εφαρμογών οι οποίες μπορούν να εκτελεστούν από σύγχρονες κινητές συσκευές (smartphones) με ενσωματωμένο λειτουργικό σύστημα. Οι εφαρμογές αυτές δύναται να λειτουργήσουν τόσο στα σύγχρονα «έξυπνα» τηλέφωνα “smartphones”, όσο και σε άλλες «κινητές» συσκευές, οι οποίες έχουν κάνει την εμφάνισή τους τα τελευταία χρόνια και χρησιμοποιούν λειτουργικό σύστημα (Tablets, Wearables). Στο μάθημα αναλύονται περιληπτικά τα δημοφιλέστερα λειτουργικά συστήματα κινητών συσκευών, καθώς και τα εργαλεία ανάπτυξης εφαρμογών σε αυτά, ωστόσο η ύλη περιλαμβάνει κυρίως τη χρήση της αντικειμενοστρεφούς γλώσσας προγραμματισμού Java, για την ανάπτυξη εφαρμογών σε κινητές συσκευές υπό το λειτουργικό σύστημα Android. Ενδεικτικά, η ανάπτυξη των mobile apps θα υλοποιηθεί με τη χρήση του περιβάλλοντος ανάπτυξης λογισμικού Android Studio. Η Java είναι η πρώτη σε χρήση γλώσσα προγραμματισμού παγκοσμίως (δεδομένα 2017), ενώ το λειτουργικό σύστημα Android κατέχει το μεγαλύτερο μερίδιο της παγκόσμιας αγοράς των smartphones (δεδομένα 2018).

Ο μεταπτυχιακός φοιτητής, ο οποίος θα έχει ολοκληρώσει με επιτυχία το μάθημα, θα είναι σε θέση:
● Nα χρησιμοποιεί το εργαλείο Android Studio για την ανάπτυξη κινητών εφαρμογών
● Να αναπτύσσει native mobile apps κάνοντας χρήση του Android SDK
● Να χρησιμοποιεί τοπικές (SQLite) βάσεις δεδομένων
● Να χρησιμοποιεί τις πλέον σύγχρονες υπηρεσίες Cloud και Mobile backend as a service που παρέχει η Firebase
● Επιπλέον το μάθημα καλύπτει και την ύλη που αφορά:
○ στους αισθητήρες των κινητών συσκευών, στις υπηρεσίες γεοεντοπισμού και σε πλήθος άλλων προχωρημένων τεχνικών προγραμματισμού (asynchronous programming, android services, broadcast receivers, android intents).

540, κεντρικό κτίριο

Υπολογιστική Νέφους

Τα τελευταία χρόνια έκανε την εμφάνισή της μια νέα γενιά υπηρεσιών βασιζόμενων στην ιδέα του «υπολογιστικού νέφους», με στόχο την πρόσβαση στην πληροφορία και στα δεδομένα από οπουδήποτε και ανά πάσα στιγμή, με περιορισμό ή εξάλειψη της ανάγκης για υλικό hardware. Με τον όρο «υπολογισμός νέφους» προσδιορίζεται η χρήση υπολογιστικών πόρων υλικοτεχνικού αλλά και λογισμικού επιπέδου, χρησιμοποιώντας υπηρεσίες, μεταφερόμενες μέσω του διαδικτύου. Οι υπηρεσίες υπολογιστικού νέφους (cloud comput­ing) αποτελούν ένα από τα παγκοσμίως μεγαλύτερα πεδία ανταγωνισμού των ημερών μας ανάμεσα σε εταιρείες κολοσσούς στο χώρο της Πληροφορικής και του λογισμικού, όπως η Google, η Amazon και η Microsoft, οι οποίες αγωνίζονται να λάβουν πλεονεκτική θέση στον εν λόγω ραγδαία αναπτυσσόμενο κλάδο. Το αντικείμενο του μαθήματος είναι τόσο η γνωριμία και η εξοικείωση με το χώρο των υπολογιστικών νεφών, όσο και ο επί της πράξης σχεδιασμός των υποδομών για τη χρήση και τη λειτουργία αυτών. Μελετούνται οι τεχνολογίες της θεωρίας του υπολογισμού νέφους, παρουσιάζονται υπηρεσιοστρεφείς αρχιτεκτονικές (Service Oriented) και δίνονται τα απαραίτητα εφόδια για την ένταξη της τεχνολογίας αυτής στα προγραμματιστικά εργαλεία του σύγχρονου τεχνολόγου λογισμικού.

Με την επιτυχή ολοκλήρωση του μαθήματος, ο φοιτητής/τρια θα είναι σε θέση να:

 

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

302, κεντρικό κτίριο
+30 210 4142137
fax +30 210 4142472

Μιχάλας Άγγελος

Τεχνολογίες Εξατομίκευσης Λογισμικού

  • Οι Τεχνολογίες Εξατομίκευσης Λογισμικού βασίζονται στην ενδελεχή μοντελοποίηση των χρηστών, εστιάζοντας στη δυναμική απόκτηση μοντέλου από το σύστημα λογισμικού και την αυτόματη εξατομίκευσή του στις ιδιαίτερες ανάγκες κάθε μεμονωμένου χρήστη.
  • Στόχος είναι η αυτόματη προσαρμογή, η γνωστική αποφόρτιση των χρηστών και ο εξατομικευμένος προσανατολισμός πλοήγησής τους στις εφαρμογές λογισμικού και στον κυβερνοχώρο.
  • Αναλύονται μεθοδολογίες για τη δημιουργία εξατομικευμένων λογισμικών συστημάτων, ενσωματώνοντας τις προτιμήσεις, το επίπεδο γνώσης, τα συναισθήματα, στόχοι και άλλες ανάγκες των χρηστών.
  • Εξετάζονται ποικίλα πεδία εφαρμογής εξατομίκευσης λογισμικού, όπως: Κοινωνικά δίκτυα Εκπαιδευτικά Συστήματα, e-commerce, e-learning, e-government, e-tourism, οn-line συστήματα πληροφοριών, Ανάκτηση Πληροφοριών, Εξόρυξη Δεδομένων, Προσαρμοστικά Συστήματα Διεπαφής με τους Χρήστες, Ευφυή Συστήματα Βοήθειας, Προσαρμοστικό Λογισμικό/Προσαρμοστικά Υπερμέσα, Συστήματα Παραγωγής Προτάσεων (Recommender Systems), εξατομικευμένη πλοήγηση.
  • Συμβολή του μαθήματος στην κάλυψη των τεχνολογικών απαιτήσεων.

 

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

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

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

Με την επιτυχή ολοκλήρωση αυτού του μαθήματος ο φοιτητής θα είναι σε θέση να:

  • Συντάσσει με ευχέρεια δομημένα έγγραφα ανάλυσης απαιτήσεων εξατομίκευσης λογισμικού
  • Σχεδιάζει αρχιτεκτονικά πρωτότυπα σχέδια εξατομίκευσης λογισμικού βασισμένα σε γλώσσες μοντελοποίησης και διαγράμματα
  • Παράγει με ευχέρεια κώδικα βασισμένο στο στάδιο του σχεδιασμού, ο οποίος θα ανταποκρίνεται στα αντίστοιχα διαγράμματα εξατομίκευσης λογισμικού με έμφαση στα use case.
  • Χρησιμοποιεί με ευχέρεια το μοντέλο κύκλου ζωής λογισμικού Rational Unified Process για την ανάπτυξη συστήματος εξατομίκευσης λογισμικού
  • Εφαρμόζει με ευχέρεια και πρωτοτυπία τις σχετικές με τις γνώσεις για τις τεχνολογίες εξατομίκευσης λογισμικού στις έρευνες, μελέτες και εργασίες τους με κριτικό και δημιουργικό τρόπο.
  • Επιδεικνύει κριτική κατανόηση στον τρόπο διασύνδεσης των σχετικών με τη τεχνολογία λογισμικού γνώσεων με ποικίλους γνωστικούς τομείς.
  • Εφαρμόζει τις σχετικές με την τεχνολογία λογισμικού γνώσεις για την επίλυση σύνθετων ζητημάτων στο χώρο εργασίας με επιστημονικά τεκμηριωμένο τρόπο.
  • Αναπτύσσει με αυτονομία τις σχετικές με τις γνώσεις για τις τεχνολογίες εξατομίκευσης λογισμικού και ικανότητές τους.
  • Επιλύει προβλήματα και να λαμβάνουν στρατηγικές αποφάσεις με αφετηρία την επαγωγική σκέψη βασιζόμενοι τις σχετικές με τις γνώσεις για τις τεχνολογίες εξατομίκευσης λογισμικού.

Καθηγήτρια
507/ΚΕΚΤ
+30.210.4142269

543/ΚΕΚΤ
Τηλέφωνο/Fax:+30 210 4142312

Ασφαλής Προγραμματισμός

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

 

  • Εισαγωγικές έννοιες ασφάλειας συστημάτων
  • Συστήματα Διαχείρισης Ασφάλειας
  • Κρυπτογραφικά συστήματα
  • Υποδομή Δημόσιας Κλείδας
  • Έλεγχος προσπέλασης – Ιδιωτικότητα
  • Ασφάλεια στις Τεχνολογίες
  • Ασφαλείς η/κ-υπηρεσίες
  • Εισαγωγή στην ασφάλεια δικτύων

Με την ολοκλήρωση του μαθήματος οι φοιτητές θα μπορούν να:

 

  • Διαθέτουν ευρεία γνώση για το περιεχόμενο των απαιτήσεων ασφάλειας πληροφοριακών συστημάτων σε όλο των κύκλο ζωής τους.
  • Αντιλαμβάνονται και να εντοπίζουν με ευχέρεια τα θεωρητικά και πρακτικά ζητήματα ασφάλειας πληροφοριακών συστημάτων.
  • Κατανοούν τα δομικά και λειτουργικά χαρακτηριστικά των κρυπτογραφικών συστημάτων
  • Εμβαθύνουν σε βασικούς τομείς του πεδίου αυτού και να υλοποιούν (μέσω προσομοίωσης) τεχνικές ή εφαρμογές σε δεδομένες καταστάσεις απειλών ή κινδύνων
  • Εφαρμόζουν πρακτικά τεχνολογίες ασφάλειας πληροφοριακών συστημάτων σε πραγματικές συνθήκες
  • Σχεδιάζουν πρωτότυπες νέες εφαρμογές και να επεκτείνουν τις ήδη υπάρχουσες
  • Διαχειρίζονται  με ευχέρεια απειλές και κινδύνους στα πληροφοριακά συστήματα με κριτική, δημιουργική και ερευνητική διάθεση για την εξεύρεση λύσεων

Προηγμένα Θέματα Λογισμικού Υπηρεσιών Ιστού

To μάθημα ασχολείται με τη θεωρητική μελέτη και την πρακτική εξάσκηση σε θέματα Προκλήσεις στην ανάπτυξη σχεδιαστικών προτύπων ανάπτυξης λογισμικού για το σύννεφο (cloud design patterns). Αυτά τα πρότυπα σχεδιασμού είναι χρήσιμα για τη δημιουργία αξιόπιστων, επεκτάσιμων, ασφαλών εφαρμογών στο cloud.

 

Κάθε πρότυπο περιγράφει την πρόκληση που αντιμετωπίζει, σκέψεις για την εφαρμογή του και ένα παράδειγμα υλοποίησης σε .NET Azure. Τα περισσότερα πρότυπα περιλαμβάνουν δείγματα κώδικα ή αποσπάσματα που δείχνουν πώς να εφαρμόσετε το μοτίβο. Ωστόσο, τα περισσότερα μοτίβα σχετίζονται με οποιοδήποτε κατανεμημένο σύστημα, είτε φιλοξενείται σε Azure είτε σε άλλες πλατφόρμες cloud π.χ. AWS.

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

  • Πρεσβευτής
  • Επίπεδο κατά της διαφθοράς
  • Ασύγχρονη Αίτηση-Απάντηση
  • Διάφραγμα
  • Διακόπτης Κυκλώματος
  • Έλεγχος αξίωσης
  • Αντισταθμιστική συναλλαγή
  • Ανταγωνιστικοί καταναλωτές
  • Υπολογισμός Ενοποίησης Πόρων
  • CQRS
  • Διαμόρφωση φόρτου εργασίας άκρων
  • Πηγή εκδήλωσης
  • Κατάστημα εξωτερικής διαμόρφωσης
  • Ομοσπονδιακή Ταυτότητα
  • Θύρακας

Με την επιτυχή ολοκλήρωση αυτού του μαθήματος οι φοιτητές θα είναι σε θέση:

  • Να αναγνωρίζουν τα πρότυπα σχεδίασης λογισμικού στο σύννεφο (software design patterns for the cloud)
  • Να αναγνωρίζουν και να κατανοούν τα χαρακτηριστικά ποιότητας του λογισμικού που υλοποιείται σε πολλαπλούς διακομιστές και των πληροφοριών που αυτά χρειάζεται να αντλούν
  • Nα σχεδιάζουν λογισμικό που εφαρμόζει σχεδιαστικά πρότυπα σε υποδομή σύννεφου και κατανεμημένες εγκαταστάσεις
  • Να λειτουργούν απευθείας σε διαγραμμικές υπηρεσίες (Online) καλές πρακτικές επιβεβαίωσης της καλής λειτουργίας λογισμικού

Καθηγήτρια
507/ΚΕΚΤ
+30.210.4142269

543/ΚΕΚΤ
Τηλέφωνο/Fax:+30 210 4142312

3ο ΕΞΑΜΗΝΟ

Μεταπτυχιακή Διατριβή

Υλικό και σύνδεσμοι