Προτεινόμενα θέματα εκπόνησης εργασίας 2017-2018

Αυτόματη αξιολόγηση ειδοποιήσεων ασφάλειας

Ειδοποιήσεις ασφάλειας (security notifications) που εκδίδονται από διανομείς λειτουργικών συστημάτων, συχνά αναφέρονται σε συγκεκριμένα πακέτα λογισμικού ή βιβλιοθήκες. Έτσι ο κάθε διαχειριστής ενός λειτουργικού συστήματος πρέπει να αξιολογεί κατά πόσο κάθε ειδοποίηση επηρεάζει το σύστημά του. Η εργασία θα αυτοματοποιήσει τη διαδικασία αξιολόγησης, εξετάζοντας το κείμενο της ειδοποίησης καθώς και τη διαμόρφωση του συστήματος. Για το σκοπό αυτό προτείνεται η εξέταση συστημάτων που διαμορφώνονται ως υποδομές με βάση Docker ή Puppet.

Μετάφραση κώδικα μεταξύ διαφορετικών γλωσσών προγραμματισμού με τη χρήση μηχανικής μάθησης

Στόχος της εργασίας είναι η εκμετάλλευση υποδομών μεταγλώττισης που υποστηρίζουν πολλαπλές γλώσσες προγραμματισμού, όπως το σύστημα LLVM, για την εκπαίδευση και μετάφραση κώδικα μεταξύ διαφορετικών γλωσσών προγραμματισμού· από μια γλώσσα-πηγή σε μια γλώσσα-στόχο, π.χ. από C σε Swift. Συγκεκριμένα, το προτεινόμενο σύστημα θα δουλεύει πρώτα με τη μεταγλώττιση του κώδικα από την πηγαία γλώσσα στην ενδιάμεση γλώσσα του μεταγλωττιστή. Στη συνέχεια, το σύστημα θα μεταφράζει τον κώδικα από την ενδιάμεση γλώσσα του μεταγλωττιστή στη γλώσσα στόχο με τη χρήση μηχανικής μάθησης. Το σύστημα μηχανικής μάθησης προτείνεται να βασίζεται σε νευρωνικά δίκτυα. Θα εκπαιδευτεί με βάση σώμα που θα δημιουργηθεί από τη μεταγλώττιση υπάρχοντα κώδικα από τη γλώσσα-στόχο στην ενδιάμεση γλώσσα LLVM.

Ποιότητα κώδικα σε διαγωνισμούς προγραμματισμού

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

Αξιολόγηση νομοθέτησης με τη χρήση συνεχών συναρτήσεων

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

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

Η σχέση ηλικίας, εμπειρίας και πρακτικών προγραμματισμού

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

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

Αλίευση συναρμοδιοτήτων από νομοθετικά κείμενα

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

Μοντέλο επαναχρησιμοποίησης πακέτων λογισμικού

Στόχος της εργασίας είναι η δημιουργία ενός μοντέλου των παραγόντων που επηρεάζουν την επαναχρησιμοποίηση λογισμικού. Αυτοί μπορεί να είναι οι παρακάτω:

Η παρακολούθηση των παραπάνω σε βάθος χρόνου μπορεί να επιτρέψει την εξαγωγή συμπερασμάτων αιτίου-αποτελέσματος.

Σύστημα αρχείων για αποθήκευση δεδομένων σε στήλες

Στόχος της εργασίας είναι η υλοποίηση ενός απλού συστήματος αρχείων (file system) στο λειτουργικό σύστημα Linux ή FreeBSD που να επιτρέπει μόνο τη φύλαξη και ανάκτηση στοιχείων με τη μορφή κλειδί-δεδομένα. Το κλειδί είναι το όνομα του αρχείου και τα δεδομένα το περιεχόμενό του. Το σύστημα δεν θα υποστηρίζει δενδρική δομή αρχείων και άλλα σύνθετα χαρακτηριστικά. Έτσι, μια αποδοτική υλοποίηση αυτού του συστήματος μπορεί να είναι ταχύτερη τόσο σε σχέση με υπάρχοντα συστήματα αρχείων, όσο και με αντίστοιχες βάσεις δεδομένων.

Αυτόματη ανίχνευση οσμών εκτέλεσης κώδικα

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

Το τελικό αποτέλεσμα είναι συστάσεις για τη βελτίωση της ποιότητας του αντίστοιχου λογισμικού.

Εύρεση μη δηλωμένων εξαρτήσεων σε συστήματα διαμόρφωσης υπολογιστών

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

Το μοντέλο ανάπτυξης της Wikipedia

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

Στόχος της εργασίας είναι η δημιουργία ενός πλήρους μοντέλου ανάπτυξης της Wikipedia που θα λαμβάνει υπόψη του παράγοντες σαν:

Οσμές ποιότητας σε αρχεία Word/Excel/Powerpoint

Οι οσμές ποιότητας (quality smells) μπορούν να χρησιμοποιηθούν για να ανιχνεύσουν κακή ποιότητα σε ένα ψηφιακό έγγραφο. Για παράδειγμα σε αρχεία Word μπορεί να είναι η απουσία χρήσης προτύπων (styles), σε αρχεία Excel η μη χρήση ονομάτων και σε αρχεία Powerpoint η μορφοποίηση χωρίς τη χρήση πρότυπων διαφανειών (master slides). Η εργασία

Εξέλιξη της ασφάλειας στον πηγαίο κώδικα του Unix

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

Αλλαγές στις ώρες εργασίας με βάση εμπειρικά δεδομένα από ψηφιακά αποθετήρια

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

Γραφική διεπαφή για εντολές του Unix

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

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

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