Διδάσκων: Δρ. Μάριος Δ. Δικαιάκος,
Kαθηγητής
Yπεύθυνοι Εργαστηρίου: Δρ. Πύρρος
Μπράτσκας, Δρ. Χριστόφορος Παναγιώτου, Μέλη Eιδικού Εκπαιδευτικού Προσωπικού
Διδακτικές Μονάδες: 7,5
Εξάμηνο: Εαρινό
Ακαδημαϊκό Έτος: 2022-2024
Επίπεδο Μαθήματος: Προπτυχιακό.
Κατηγορία Μαθήματος: Υποχρεωτικό Μάθημα Κορμού.
Πρόγραμμα Σπουδών: Πτυχίο Πληροφορικής. Δευτερεύον Πρόγραμμα Πληροφορικής. Προσφέρεται και ως
Μάθημα Ελεύθερης Επιλογής.
Προαπαιτούμενα: ΕΠΛ131: Αρχές
Προγραμματισμού Ι
Διαδικτυακό Φόρουμ: Moodle
Πρόγραμμα Διδασκαλίας: 3 ώρες διαλέξεων, 1 ώρα φροντιστηρίου και 4 ώρες εργαστηρίου
εβδομαδιαίως.
- Διαλέξεις:
- Β204, ΧΩΔ02 - Τρίτη, Παρασκευή 10:30-12:00.
- Φροντιστήριο:
- Β204, ΧΩΔ02 - Παρασκευή 9:30-10:30.
- Eργαστήρια:
- Aκροατήριο 1Α: ΘΕΕ01, Β103 - Τρίτη, Παρασκευή: 13:30-15:00.
- Aκροατήριο 1Β: ΘΕΕ01, Β103 - Τρίτη, Παρασκευή: 15:00-16:30.
- Aκροατήριο 1Γ: ΘΕΕ01, Β103 - Τρίτη, Παρασκευή: 16:30-18:00.
- Aκροατήριο 1Δ: ΘΕΕ01, Β103 - Τρίτη, Παρασκευή: 18:00-19:30.
- Aκροατήριο 1E: ΘΕΕ01, 103 - Τρίτη, Παρασκευή: 13:30-15:00.
- Ενδιάμεση Εξέταση:
- TBA
Βαθμολόγηση:
Ο τελικός βαθμός διαμορφώνεται με βάση τα ποσοστά που δίνονται στον ακόλουθο πίνακα. Σημειώνεται ότι για την
επίτευξη προβιβάσιμου βαθμού (5), ο φοιτητής πρέπει να έχει επιτύχει βαθμό πάνω από 45/100 στον σταθμισμένο μέσο
όρο των ενδιάμεσων και της τελικής εξέτασης και να έχει συμπληρώσει ικανό αριθμό παρουσιών στο μάθημα.
- Εργασίες και Διαγνωστικά:
- 25%
- Ενδιάμεση Εξέταση:
- 20%
- Γραπτή Τελική Εξέταση:
- 50%
- Συμμετοχή στην τάξη και το διαδικτυακό φόρουμ:
- 5%
Οι φοιτητές θα εξοικειωθούν με το αντικείμενο του μαθήματος και μέσω εργαστηριακών ασκήσεων, εργασιών και
διαγνωστικών.Η διδασκαλία του μαθήματος
αποτελείται από 3 ώρες διαλέξεων, 1 ώρα φροντιστηρίου και πρακτική εξάσκηση, τόσο στο πλαίσιο οργανωμένων
εργαστηρίων (συνολικά 3 ωρών), όσο και κατ’ ιδίαν εξάσκηση. Η παρακολούθηση των διαλέξεων,
φροντιστηρίων και εργαστηρίων είναι υποχρεωτική.
Η καλλιέργεια και εμπέδωση της αλγοριθμικής σκέψης, καθώς και η ανάπτυξη δεξιοτήτων στον προγραμματισμό,
απαιτούν εκτενή εξάσκηση στην επίλυση προβλημάτων με αλγοριθμικό τρόπο.
Η εξάσκηση μέσω προγραμματιστικών ασκήσεων είναι πολύμορφη. Κάποιες ασκήσεις είναι θεωρητικές και αφορούν (α)
την ανάπτυξη αλγορίθμων στο χαρτί, σε επίπεδο ψευδοκώδικα, για την επίλυση δεδομένων προβλημάτων, ή (β) την
«απόδειξη» της ορθότητας ή κάποιας ιδιότητας ενός αλγορίθμου, ή την κριτική ανάλυση της συμπεριφοράς ενός
αλγορίθμου. Άλλες ασκήσεις συνεπάγονται, πέραν του σχεδιασμού των σχετικών αλγορίθμων, της υλοποίησής τους σε
μορφή κώδικα στη γλώσσα Java, και της εκτέλεσης, δοκιμής και αποσφαλμάτωσης των προγραμμάτων αυτών. Σε κάθε
περίπτωση, είτε η λύση ενός προβλήματος διατυπώνεται σε ψευδογλώσσα, είτε σε εκτελέσιμο κώδικα, η παρουσίαση
της
λύσης και η τεκμηρίωσή της ώστε να είναι αυτό-επεξηγηματική αποτελεί σημαντικό κριτήριο για την ποιότητα της
λύσης.
Ο προγραμματισμός ως διανοητική δραστηριότητα και επιδεξιότητα δεν διδάσκεται αλλά καλλιεργείται μέσω
επίπονης
εξάσκησης. Για το λόγο αυτό οι φοιτητές πρέπει να δώσουν μεγάλη
έμφαση στις προγραμματιστικές εργασίες, οι οποίες θα συμβάλουν στην κατανόηση της διδακτέας ύλης και στην
εξοικείωση με την γλώσσα προγραμματισμού Java.
Οι υποχρεωτικές ασκήσεις για την απαιτούμενη πρακτική εξάσκηση είναι δύο μορφών, προγραμματιστικές ασκήσεις
και
διαγνωστικά, όπως εξηγείται στην επόμενη ενότητα. Πέραν, όμως από τις υποχρεωτικές ασκήσεις, κάθε φοιτητής
αναμένεται ότι, στο πλαίσιο της αυτόνομης μελέτης του/της για το μάθημα αυτό, θα αντλήσει και από μόνος/η
του/της επιπρόσθετες ασκήσεις για περαιτέρω εξάσκηση, καθαρά με δική του/της πρωτοβουλία. Οι πηγές από τις
οποίες μπορεί ένας να αντλήσει επιπρόσθετες ασκήσεις είναι πολλές, για παράδειγμα: (α) από τα βιβλία που
στηρίζουν το μάθημα, (β) από τα προβλήματα που αναφέρονται στις διαλέξεις και τα φροντιστήρια, ή (γ) από
προβλήματα της καθημερινότητας δικής του/της επινόησης/ επιλογής. Στον προγραμματισμό, η πρακτική τριβή με όσο
γίνεται περισσότερα προβλήματα, είναι εξίσου αν όχι πιο σημαντική από την καθαρά θεωρητική μελέτη των θεμάτων.
Επισημαίνεται, ιδιαίτερα, ότι πρακτική τριβή δε σημαίνει απλά τη στείρα παραγωγή κώδικα (μεταφράζοντας
ενδεχομένως δεδομένους αλγορίθμους), αλλά πρωτίστως το σχεδιασμό αλγορίθμων για την επίλυση προβλημάτων. Επί
της
ουσίας, ο σχεδιασμός αλγορίθμων είναι το δημιουργικό στοιχείο του προγραμματισμού.
Τα οργανωμένα εργαστήρια στοχεύουν στην εξοικείωση των διδασκομένων με τα υπολογιστικά συστήματα που
στηρίζουν
το μάθημα (όπου παρουσιάζονται τα σχετικά εργαλεία), καθώς επίσης στην περαιτέρω εμπέδωση, σε καθαρά πρακτικό
επίπεδο, των εννοιών που καλύπτονται στις διαλέξεις, χρησιμοποιώντας προβλήματα/ασκήσεις, αλγόριθμους και
προγράμματα που εξετάζονται στις διαλέξεις και φροντιστήρια. Στα εργαστήρια θα διεξάγονται και τα διαγνωστικά
tests για ανατροφοδότηση των διδασκομένων σε σχέση με τους μαθησιακούς στόχους του μαθήματος και ως εκ τούτου
ως
μέσου ενίσχυσης της αυτογνωσίας των διδασκομένων. Μέρος του χρόνου που διατίθεται για την υποχρεωτική
εργαστηριακή εξάσκηση μπορεί να αξιοποιηθεί για την εκπόνηση υποχρεωτικών ασκήσεων.
Συνεπώς, οι μέθοδοι διδασκαλίας και μάθησης είναι οι εξής:
- Διαλέξεις, όπου παρουσιάζονται και εξετάζονται με κριτική διάθεση οι διάφορες έννοιες που
καλύπτει το μάθημα.
Η παρακολούθηση των διαλέξεων είναι υποχρεωτική. Οι φοιτητές/φοιτήτριες ενθαρρύνονται να συμμετέχουν στις
συζητήσεις που γίνονται.
Με άλλα λόγια επιδιώκεται ο διάλογος και η ανταλλαγή επιχειρημάτων σε σχέση με τα θέματα που παρουσιάζονται.
- Φροντιστήρια, κατά τα οποία δεν παρουσιάζονται νέες έννοιες αλλά στόχος είναι η περαιτέρω
εμπέδωση
των εννοιών που καλύπτονται στις διαλέξεις και ο εμπλουτισμός της πραγμάτευσης του όλου θέματος των αρχών
προγραμματισμού με
επιπρόσθετες ασκήσεις και συζητήσεις. Tα φροντιστήρια είναι ενσωματωμένα στη διάρκεια των διαλέξεων και η
παρακολούθησή τους είναι
υποχρεωτική. Επιπρόσθετα, στο πλαίσιο των φροντιστηρίων το διαλογικό στοιχείο ενισχύεται και αναμένεται να
είναι το κυρίαρχο στοιχείο, όπου
μάλιστα σε μεγάλο βαθμό η πραγμάτευση καθοδηγείται από τους φοιτητές/φοιτήτριες και όχι τους διδάσκοντες. Με
άλλα λόγια οι
φοιτητές/φοιτήτριες ενθαρρύνονται να εισηγούνται θέματα/ασκήσεις προς συζήτηση, για παράδειγμα θέματα που
φαίνεται να δημιουργούν
κάποιες δυσκολίες.
- Εργαστήρια, για την παρουσίαση των σχετικών πληροφοριακών εργαλείων (που είτε στηρίζουν
το
μάθημα,
είτε αποτελούν χρήσιμα εργαλεία για τον προγραμματισμό), την εμπέδωση σε καθαρά πρακτικό επίπεδο των εννοιών
του προγραμματισμού,
και γενικά τη στήριξη της πρακτικής εξάσκησης διαθέτοντας, για συγκεκριμένο χρόνο κάθε εβδομάδα, σχετικά
εργαστήρια του Τμήματος
Πληροφορικής. Η παρουσία στο χώρο του εργαστηρίου κατά τις εν λόγω περιόδους είναι υποχρεωτική. Τα
διαγνωστικά
tests διεξάγονται
πρωτίστως κατά τη διάρκεια εργαστηρίων.
- Ασκήσεις και πρακτική εξάσκηση, όπου σε μεγάλο βαθμό, ο κάθε φοιτητής οργανώνει μόνος του
το χρόνο του.
Οι ασκήσεις συζητούνται στο πλαίσιο των εργαστηρίων και του φροντιστηρίου. Όμως αυτό το στοιχείο του
μαθήματος αφορά πρωτίστως την κατ’ ιδίαν
απασχόληση και προβληματισμό, σε σχέση με όλες τις πτυχές της επίλυσης προβλημάτων με αλγοριθμικό τρόπο,
μέσω ασκήσεων (που είτε
αποτελούν μέρος προγραμματισμένης υποχρεωτικής εξάσκησης ή έχουν επιλεγεί από τον/την φοιτητή/φοιτήτρια ως
επιπρόσθετη προαιρετική εξάσκηση).
- Ενεργός συμμετοχή στο διαδικτυακό φόρουμ του μαθήματος: Oι φοιτητές ενθαρρύνονται να
κάνουν χρήση του
διαδικτυακού φόρουμ του μαθήματος στην υπηρεσία Moodle,
για ανταλλαγή απόψεων, αποστολή ερωτήσεων προς τους διδάσκοντες, αναζήτηση πληροφοριών κλπ. Ερωτήσεις
σχετικές με το μάθημα που στέλνονται στο προσωπικό ηλεκτρονικό ταχυδρομείο των διδασκόντων δεν θα
απαντούνται.
Η επιτυχία σε κάθε ένα από τα δεκατρία μαθησιακά αποτελέσματα που προσδοκούνται με την
ολοκλήρωση του μαθήματος, συνεπάγεται την αξιοποίηση από μέρους των διδασκομένων και των τεσσάρων μεθόδων
διδασκαλίας και μάθησης που αναφέρονται πιο πάνω. Με άλλα λόγια, για κάθε μαθησιακό στόχο απαιτούνται και οι
τέσσερεις μέθοδοι διδασκαλίας και μάθησης ως αναπόσπαστα στοιχεία μίας ενιαίας προσέγγισης για επιτυχή
ολοκλήρωση.
με βάση δύο τύπους υποχρεωτικών εργασιών: (α)
προγραμματιστικές ασκήσεις και (β) διαγνωστικά.
Η εκπόνηση όλων των εργασιών είναι υποχρεωτική.
Κάθε προγραμματιστική άσκηση πρέπει να εκπονείται ατομικά, εκτός αν δοθούν διαφορετικές οδηγίες. Εργασίες που
παραδίδονται μετά την προθεσμία, μπορεί να μη ληφθούν υπόψη.
Κάθε εργασία αποτελείται από:
- Σύντομη τεκμηρίωση της σχεδίασης του προγράμματος, στην οποία να δίνεται η διάσπαση του προβλήματος σε
υποπροβλήματα, και η ανάλυση των αλγορίθμων των κυριοτέρων υποπροβλημάτων.
- Λίστα του κώδικα (σημειώνεται ότι σχόλια μέσα στον κώδικα αποτελούν αναγκαίο στοιχείο).
- Λίστα της δοκιμής του κώδικα.
Κάθε πρόγραμμα υποβάλλεται σε ηλεκτρονική μορφή μέσω ηλεκτρονικού ταχυδρομείου ή του σχετικού εργαλείου
τηλεμάθησης που στηρίζει το μάθημα, όπως ορίζεται κατά περίπτωση στην εκφώνηση της σχετικής άσκησης. Η
ανταλλαγή
απόψεων πάνω στις πρακτικές ασκήσεις συνιστάται. Τονίζεται, όμως, ότι η αντιγραφή κώδικα, ή η παροχή κώδικα
προς
αντιγραφή, ή η τροποποίηση των αποτελεσμάτων της δοκιμής του κώδικα, αποτελούν πράξεις δόλου που στην καλύτερη
περίπτωση οδηγούν σε μηδενισμό. Σημειώνεται ότι οι εργασίες θα ελέγχονται από πρόγραμμα για την
ανακάλυψη αντιγραφών.
Οι ασκήσεις διορθώνονται και αξιολογούνται με βάση τα ακόλουθα κριτήρια:
- Ορθότητα: Ένα πρόγραμμα που δεν δίνει τη σωστή απάντηση δεν έχει καμία αξία. Βεβαιωθείτε
ότι έχετε ελέγξει την ορθότητα του προγράμματος σας πριν να το παραδώσετε.
- Σαφήνεια: Ο αλγόριθμος που χρησιμοποιείται πρέπει να περιγράφεται με σαφήνεια και ο
κώδικας
Java να είναι υλοποιημένος καθαρά έχοντας εισαγάγει κατάλληλα σχόλια μέσα στο πρόγραμμα.
- Χρήση Προηγμένων Τεχνικών: Γνωρίζοντας ότι υπάρχουν πολλοί αλγόριθμοι που οδηγούν στη
λύση
ενός συγκεκριμένου προβλήματος θα επιβραβεύονται εκείνοι οι αλγόριθμοι που κάνουν χρήση “έξυπνων” και
προηγμένων τεχνικών που καταλήγουν στο ζητούμενο γρηγορότερα και με την λιγότερη κατανάλωση πόρων.
Oι διδάσκοντες διατηρούν το δικαίωμα της δειγματοληπτικής προφορικής εξέτασης των εργασιών. Συνιστάται
στους/στις φοιτητές/φοιτήτριες να κρατούν τις προγραμματιστικές εργασίες τους μέχρι την ολοκλήρωση του
μαθήματος.
Αναφορικά με την αξιοποίηση εργαλείων Τεχνητής Νοημοσύνης (όπως π.χ. το Copilot, το ChatGPT κλπ) οι φοιτητές και φοιτήτριες υποχρεούνται όπως
εφαρμόζουν τις