Κωδικός Μαθήματος

ΜΔΑ-281

Εξάμηνο Μαθήματος

1ου Εξαμήνου

Πιστωτικές Μονάδες

7,5

Ηλεκτρονικό Υλικό

https://lefkippos.ds.unipi.gr/courses/DSERV110/

Κατηγορία Μαθήματος

Υποχρεωτικό

Διδάσκοντες

Δ. Κυριαζής

Ν. Σγούρος

Προγραμματισμός και Υποδομές Μεγάλων Δεδομένων: Python και Νεφοϋπολογιστική

Στόχος

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

 

Περιεχόμενα Μαθήματος

Διασύνδεση με Πηγές Δεδομένων

Διασύνδεση, ανάκτηση και χειρισμός δεδομένων από σχεσιακές και μη σχεσιακές βάσεις δεδομένων. Καθαρισμός, κανονικοποίηση και ομαδοποίηση δεδομένων, τεχνικές συμπλήρωσης και επέκτασης δεδομένων. Παραδείγματα ανάκτησης δεδομένων από πηγές κειμένων και το διαδίκτυο. Δημιουργία και χρήση κανονικών εκφράσεων (regular expressions).

Μοντελοποίηση και Ανάλυση Δεδομένων

Εφαρμογές ανάλυσης χρονοσειρών (περιοδικότητα, τάση, εποχικότητα). Δειγματοληψία, μετασχηματισμοί και αναπαπαράσταση  χρονοσειρών. Εξαγωγή χαρακτηριστικών. Προγνωστικά μοντέλα. Τεχνικές και παραδείγματα για προεπεξεργασία, παλινδρόμιση και δημιουργία στατιστικών μοντέλων. Ανάλυση δεδομένων μεγάλης κλίμακας. Ανάλυση δεδομένων από κοινωνικά δίκτυα.

Τεχνικές Μηχανικής Μάθησης

Ανάπτυξη εφαρμογών για την επίλυση προβλημάτων με χρήση τεχνικών επιβλεπόμενης και μη επιβλεπόμενης μάθησης, δυνατότητες. Περιορισμοί και αξιολόγηση της αποτελεσματικότητας τους. Τεχνικές και παραδείγματα υλοποιήσεων με νευρωνικά δίκτυα. Παραδείγματα ανάλυσης κειμένου με φυσική γλώσσα (NLP). Δέντρα αποφάσεων. Συστήματα συστάσεων (recommender systems).

Υπολογιστικά Νέφη

Ορισμός, στόχοι, προκλήσεις, τομείς εφαρμογής, όροι, συμβόλαια παροχής υπηρεσιών, φάσεις εκτέλεσης εργασιών και υπηρεσιών, διακριτά επίπεδα βάσει του μοντέλου Software-Platform-Infrastructure (SPI), αρχιτεκτονική σχεδίαση, αρχιτεκτονική ανοιχτών υπηρεσιών, υπηρεσιοστρεφής αρχιτεκτονική, αρχιτεκτονική επόμενης γενιάς, αρχιτεκτονική υποδομών edge computing.

Επίπεδο Platform as a Service και επίπεδο Software as a Service

Διαπραγμάτευση συμβολαίων παροχής υπηρεσιών, κατάλογοι υπηρεσιών (UDDI, UBR, ebXML) και μηχανισμοί εύρεσης, επιλογή κόμβων, εκτέλεση, εποπτεία, αποτίμηση και κοστολόγηση, διαχείριση ροών εργασίας, wrappers για τον έλεγχο, την εποπτεία και τη διαμόρφωση των εφαρμογών, μεθοδολογία μοντελοποίησης και ανάπτυξης εφαρμογών. Hands-on εργασίες που εστιάζουν στον προγραμματισμό, την παραμετροποίηση και την εκτέλεση εφαρμογών στο υπολογιστικό νέφος της Google με χρήση της πλατφόρμας Google AppEngine.

Επίπεδο Infrastructure as a Service

Τύποι εικονικοποίησης, διαχείριση δικτυακής υποδομής υπολογιστικών νεφών, απόδοσης, συνδεσιμότητας, πολιτικών ασφαλείας και συστήματα εποπτείας υπολογιστικών νεφών. Υλοποίηση («δημιουργία») υποδομής υπολογιστικού νέφους. Ανάλυση και εξοικείωση (με εργασίες hands-on) με τεχνολογίες containers τόσο για μονολιθικές όσο και για σύνθετες υπηρεσίες ανάλυσης δεδομένων σε υποδομές νεφοϋπολογιστικής.

Τεχνολογίες Αποθηκευτικών Νεφών

Αρχιτεκτονικές και συγκεκριμένες προσεγγίσεις (για θέματα επεκτασιμότητας, συνοχής των δεδομένων, και διαχείρισης της ονοματολογίας) σε κατανεμημένα συστήματα αποθήκευσης αντικειμένων (οbjects) δεδομένων. «Υπολογιστική» αποθήκευση: Μοντέλο για τον καθορισμό του υπολογισμού, των δεδομένων, των περιορισμών εκτέλεσης, των συνθηκών ενεργοποίησης και της αλληλεπίδρασης με άλλα δεδομένα και υπηρεσίες. Πρόσβαση σε αποθηκευμένα αντικείμενα βάσει περιεχομένου: Τεχνικές επισύναψης μεταδεδομένων στα αποθηκευμένα δεδομένα και δημιουργίας δικτύων περιεχομένου (μέσω συσχετίσεων), μέθοδοι ανάκτησης δεδομένων.

Προτεινόμενα Συγγράμματα

  • Deitel, H. Deitel (2019), Python for Programmers, Pearson Education
  • Mitchel (2018), Web Scraping with Python, O’ Reilly
  • Nelli (2018), Python Data Analytics, Apress
  • Bengfort, R. Bilbro & T. Ojeda (2018), Applied Text Analysis with Python, O’Reilly
  • Bowles (2015), Machine Learning in Python, Wiley