#Software Technology Course
- Οσο πιο ενεργή (και ουσιαστική) είναι η συμμετοχή σας εδώ τόσο καλύτερος ο βαθμός της τελικής εργασίας. Δεν γίνονται δεκτές αλλαγές για λογαριασμό άλλου.
- Εργασίες που αποστέλονται με διαφορετικό τρόπο (π.χ., ως επισυναπτόμενα σε email) ή δεν περιέχουν τα στοιχεία που περιγράφονται παρακάτω βαθμολογούνται αρνητικά ή δεν λαμβάνονται καθόλου υπόψιν στον υπολογισμό του τελικού βαθμού.
- Το κάθε μέλος είναι υπεύθυνο για την σωστή καταγραφή των στοιχείων του (όνομα, φωτογραφία, AM, email, παραδοτέα).
- Ολα τα έργα λογισμικού είναι καλό να παρουσιάζονται τακτικά (τουλάχιστον δύο φορές τον μήνα) στο εργαστήριο ή ηλεκτρονικά στον βοηθό του μαθήματος, γιατί διαφορετικά μπορεί να πάρουν λάθος κατευθυνση. Εργασίες που εμφανίζονται χωρίς παρουσίαση (τελική/παραδοτέα) ή τον Σεπτέμβριο θα βαθμολογούνται με άριστα το πέντε.
- Η εγκατάσταση εργαλείων προγραμματισμού θα πρέπει να γίνεται σε καθαρό λειτουργικό σύστημα, χωρίς άλλα προγράμματα. Υπάρχουν δύο λύσεις για αυτόν τον σκοπό: virtual machine σε ένα ισχυρό ΗΥ διαφορετικά θα πρέπει να γίνεται σε εξωτερικό δίσκο.
- Δεν προβλέπεται ούτε παράταση ούτε αλλαγή της παρουσίασης για κανένα παραδοτέο. Αν κάποιος δεν ενημερώσει την σελίδα του ή δεν μπορεί να βρεθεί σε κάποια ημερομηνία μπορεί να έρθει στην αμέσως επόμενη (ή ακόμη καλύτερα την αμέσως προηγούμενη), αν αυτό συμβεί περισσότερο από μια φορά τότε μόνο θα έχει επίπτωση στον βαθμό.
- Οι εργασίες της επαναληπτικής εξεταστικής παρουσιάζονται μόνο την ημέρα της γραπτής εξέτασης
##Projects
Για όλο τον Φεβρουάριο και για τις εβδομάδες των παρουσιάσεων σε όλους τους μήνες ισχύει μόνο ότι: Ημέρες και ώρες συναντήσεων στο εργαστήριο ανάλογα με το τελευταίο νούμερο στον ΑΜ: Πρώτη ώρα (Μονά), Δεύτερη ώρα (Ζυγά)
Η εργασία είναι ατομική ή ομαδική μέχρι 4 άτομα. Ο τελικός βαθμός για μεγάλες ομάδες 3-4 ατόμων είναι ανάλογα με την δυσκολία της εργασίας. Αν για παράδειγμα ομάδα 4 ατόμων παρουσιάσει εργασία που μπορεί να γίνει από 2 άτομα τότε θα βαθμολογηθεί με άριστα το πέντε, αντίστοιχα για όλες τις επιμέρους περιπτώσεις.
Υπάρχουν οι παρακάτω διαθέσιμες εργασίες που βαθμολογούνται πάντα ανάλογα με τον βαθμό δυσκολίας όπως φαίνεται δίπλα στο είδος της εργασίας. Είναι συνετό να επιλέξετε είδος εργασίας με βάση τις προηγούμενες γνώσεις, και τον διαθέσιμο χρόνο που έχετε. Αν για παράδειγμα δεν έχετε πολύ χρόνο τότε το πιο λογικό είναι να επιλέξετε μια εργασία που έχει μικρό βαθμό δυσκολίας. Πέρα από τα παρακάτω ενδεικτικά θέματα μπορείτε να διαλέξετε άλλο θέμα με βάση τα ενδιαφέροντα σας και μόνο σε συμφωνία με τον διδάσκοντα.
- Σχεδιασμός: Εκπαιδευτικό παιχνίδι με Scratch, [MIT App inventor quantified self] (https://www.dropbox.com/s/ayf3dmmwgqbydfs/App%20inventor.docx?dl=0), 6
- Εγκατάσταση: xMOOC (e.g., coursebuilder) ή cMOOC (e.g., big blue button) για SW, Crowdsourcing, Bloging, 7
- Επέκταση VideoAnalytics, Android Sports App, Twitter Visualisation, Old city 3D cartography, Interactive Mapmaking , visualization
- Δημιουργία εκπαιδευτικού παιχνιδιού για την [εξάσκηση στην αλγοριθμική σκέψη] (https://www.dropbox.com/s/37rn4em8xsqt849/%CE%91%CE%BB%CE%B3%CE%BF%CF%81%CE%B9%CE%B8%CE%BC%CE%B9%CE%BA%CE%AE%20%CF%83%CE%BA%CE%AD%CF%88%CE%B7.docx?dl=0)
- Δημιουργία εφαρμογής για κινητά τηλέφωνα χρησιμοποιώντας τον [App Inventor] (https://www.dropbox.com/s/iymof7sxp3ldj1k/App%20inventor2.docx?dl=0)
- Δημιουργία Multi-touch εφαρμογών
- Δημιουργία API σε node.js που επιστρέφει στοιχεία μιας βάσης SQL
- Ενα διαδραστικό κεφάλαιο σε Web ή Mobile App για το βιβλίο σύμφωνα με τις οδηγίες του Explorable Explanations ή Editions at play
- Ενα νέο κεφάλαιο για βιβλίο εργασιών προγραμματισμού για MIT App Inventor
- Δημιουργικές αλλαγές σε κλασσικά βίντεο-παιχνίδια
- Ubicomp course projects
- Social live TV: Example Apps
Η επίβλεψη των εργασίων θα γίνει τόσο από τον διδάσκοντα όσο και από τους βοηθούς του μαθήματος.
Η εργασία αποτελείται από τα παρακάτω παραδοτέα με τις αντίστοιχες προθεσμίες:
Μικρές αλλαγές στο θέμα στην διάρκεια του εξαμήνου για την αντιμετώπιση τεκμηριωμένων και αναπάντεχων αντικειμενικών προβλημάτων βαθμολογούνται θετικά. Μεγάλες ατεκμηρίωτες αλλαγές για αδικαιολόγητους προσωπικούς λόγους βαθμολογούνται αρνητικά. Η δήλωση θέματος γίνεται στην προσωπική σας σελίδα.
Παρουσίαση επιλογής εργαλείων, εκτέλεση/αλλαγές παραδειγμάτων, και προδιαγραφές εφαρμογής. Οι εργασίες με το Scratch θα πρέπει να παρουσιάσουν ένα δείγμα δουλειάς όπου θα φαίνεται η εφαρμογή ενός οι περισσότερων από τα παρακάτω: αφήγηση, διάδραση-gameplay από κλασικό παιχνίδι. Οι εργασίες με App Inventor θα πρέπει να βασίζονται στις μοναδικές ιδιότητες που έχει ένα κινητό τηλέφωνο, όπως GPS, compass και κυρίως στο γεγονός ότι ο χρήστης βρίσκεται σε κίνηση και όχι σε κάποιο γραφείο.
Οι φοιτητές πρέπει να παρουσιάσουν το τελικό λογισμικό-αποτελέσματα και ένα τελικό πρόχειρου της αναφοράς, ώστε να πάρουν σχόλια για την βελτίωση και σωστή παράδοση της τελικής αναφοράς.
Η τελική αναφορά πρέπει να περιλαμβάνει τις παρακάτω ενότητες: τίτλο, σύνοψη, εισαγωγή, επιλογή εργαλείων, διαδικασία ανάπτυξης, διάγραμμα λειτουργίας συστήματος, ενδεικτικές οθόνες, συμπεράσματα. Η τελική αναφορά μπορεί να αποτελείται από τα διορθωμένα προηγούμενα παραδοτέα με όσες αλλαγές έγιναν και την προσθήκη τίτλου, σύνοψης, συμπερασμάτων. Συνολικά θα πρέπει να είναι 500-1000 λέξεις.
Οι αναφορές θα πρέπει να γράφονται στην ίδια σελίδα με κείμενο και εικόνες. Οι τελικές αναφορές που δεν βρίσκονται στην σωστή θέση πριν την προθεσμία δεν βαθμολογούνται.
##Syllabus
Περιγραφή: Βασικές αρχές τεχνολογίας λογισμικού, η ανάπτυξη λογισμικού ως συνεργατική διαδικασία. Σχεδιασμός συστήματος: αρχιτεκτονικός σχεδιασμός, σχεδιασμός με επαναχρησιμοποίηση, σχεδιασμός διεπαφής χρήστη. Eλεγχος συστήματος. Διαδικασία παράδοσης, τεκμηρίωσης, και συντήρησης συστημάτων λογισμικού.
Προαπαιτούμενα: Εισαγωγή στον προγραμματισμό, δομές δεδομένων, βάσεις δεδομένων, δίκτυα, αντικειμενοστραφής προγραμματισμός.
Στόχος: Ο σκοπός του μαθήματος είναι η μελέτη της θεωρίας και η πρακτική εξάσκηση στην σχεδίαση και ανάπτυξη λογισμικού. Η θεωρία και το project καλύπτουν πολλές διαφορετικές περιοχές εφαρμογών με έμφαση σε επίκαιρες εφαρμογές όπως οι εκπαιδευτικές εφαρμογές, ο κινητός υπολογισμός, οι ψηφιακές (εκπαιδευτικές, πολιτισμικές) συλλογές, και οι ψυχαγωγικές εφαρμογές.
Μέθοδος διδασκαλίας: Διαλέξεις, demos, project.
Ηλεκτρονικά φροντιστήρια / Απορίες: Αν η απορία που έχετε δεν έχει ήδη απαντηθεί στα issues του github (δεξιά το κουμπάκι issues με το θαυμαστικό), τότε μπορείτε να δημιουργήσετε ένα νέο issue στο οποίο θα θέτετε το ερώτημά σας. Αν η ερώτησή σας δεν αφορά την εργασία σας, τότε μπορείτε να στείλετε ένα email στον βοηθό e-learning του μαθήματος. Ερωτήσεις που απαντώνται ήδη στο Github θα αγνοούνται. Σε κάθε περίπτωση, ο καλύτερος χώρος για να πάρετε σαφή απάντηση σε ερώτημά σας είναι μέσα στην τάξη.
Βοηθοί μαθήματος: Βαρβάρα Γαρνέλη (Φροντιστήρια στην τάξη), Γιάννης Λευθεριώτης (e-learning): [email protected]
Βιβλίο μαθήματος: 1) Ανάγνωση κώδικα, 2) Πρακτικός προγραμματιστής, 3) Ο Προγραμματισμός της Διάδρασης
Διαλέξεις σε βίντεο: Λογισμικό ως υπηρεσία, Διαδικασία ανάπτυξης λογισμικού, Programming Paradigms, Basics of Scrum, Agile and Project Delivery
Βαθμολογία: 60% project, 40% Τελική εξέταση
Σχετικές σελίδες για την την διδακτική και την ανάπτυξη έργων λογισμικού:
Teaching Real-World Programming
Teaching Programming To A Highly Motivated Beginner