Διδακτική αντικειμενοστραφούς προγραμματισμού
1. Περιγραφή του επιμορφωτικού σεναρίου
Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού, όπως προκύπτει από τη διεθνή βιβλιογραφία, συνοδεύεται από ποικίλες δυσκολίες. Ένα από τα σημαντικότερα προβλήματα έγκειται στο γεγονός ότι η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού δεν πραγματοποιείται έχοντας ως βασικό στόχο την ανάδειξη των πλεονεκτημάτων της συγκεκριμένης τεχνικής προγραμματισμού, αλλά την παρουσίαση κατά κύριο λόγο των βασικών προγραμματιστικών εννοιών (δομή ακολουθίας, επιλογής και επανάληψης). Το αποτέλεσμα είναι να μην γίνονται κατανοητές οι βασικές αντικειμενοστρεφείς δομές και στην ουσία οι μαθητές να αναπτύσσουν προγράμματα που βασίζονται στην τεχνική του δομημένου προγραμματισμού χρησιμοποιώντας μια αντικειμενοστρεφή γλώσσα.
Το παρόν επιμορφωτικό σενάριο ασχολείται με το ζήτημα της ανάδειξης των στοιχείων εκείνων που διαδραματίζουν καθοριστικό ρόλο στην αποτελεσματική οργάνωση της διδασκαλίας του αντικειμενοστρεφούς προγραμματισμού σε μαθητές. Διαπραγματεύονται ζητήματα, όπως:
Το παρόν επιμορφωτικό σενάριο ασχολείται με το ζήτημα της ανάδειξης των στοιχείων εκείνων που διαδραματίζουν καθοριστικό ρόλο στην αποτελεσματική οργάνωση της διδασκαλίας του αντικειμενοστρεφούς προγραμματισμού σε μαθητές. Διαπραγματεύονται ζητήματα, όπως:
- οι βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού και η σημασία τους,
- οι καταγεγραμμένες δυσκολίες και παρανοήσεις,
- γνωστά διδακτικά προβλήματα,
- εκπαιδευτικά περιβάλλοντα και μικρόκοσμοι προγραμματισμού.
2. Εκτιμώμενη διάρκεια επιμορφωτικού σεναρίου
Προβλέπεται να διαρκέσει συνολικά 3-4 διδακτικές ώρες.
3. Σκοποί και στόχοι εκπαιδευτικού σεναρίου
Οι επιμορφούμενοι πρέπει:
- Να γνωρίζουν τις βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού και να είναι σε θέση να οργανώνουν τη διδασκαλία του με τέτοιο τρόπο ώστε να αναδεικνύεται η σημασία και ο ρόλος τους.
- Να γνωρίζουν τις δυσκολίες/παρανοήσεις που συνοδεύουν την εκμάθηση των βασικών αντικειμενοστρεφών εννοιών και να είναι σε θέση να εντοπίζουν και να αντιμετωπίζουν την εμφάνισή τους στη διδακτική πράξη.
- Να είναι σε θέση να σχεδιάζουν κατάλληλο εκπαιδευτικό υλικό (ερωτήσεις, δραστηριότητες) λαμβάνοντας υπόψη τις προαναφερθείσες δυσκολίες και παρανοήσεις και να το αξιοποιούν κατάλληλα στη διδακτική πράξη.
- Να γνωρίζουν τα καταγεγραμμένα διδακτικά προβλήματα και να είναι σε θέση να οργανώνουν κατάλληλα τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού ανάλογα με το πλαίσιο στο οποίο εντάσσεται.
- Να γνωρίζουν τις γενικές δυσκολίες που συνοδεύουν ένα μάθημα εισαγωγής στον προγραμματισμό και τα πλεονεκτήματα που παρέχει η χρήση προγραμματιστικών μικρόκοσμων.
- Να γνωρίζουν τους προγραμματιστικούς μικρόκοσμους που υπάρχουν διαθέσιμοι για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού.
- Να είναι σε θέση να επιλέγουν τον καταλληλότερο για κάθε περίπτωση μικρόκοσμο και να αξιοποιούν κατάλληλα τις δυνατότητές του στη διδακτική πράξη.
4. Επιστημολογική προσέγγιση και εννοιολογική ανάλυση
Στόχοι διδασκαλίας αντικειμενοστρεφούς προγρ/μού
Οι εκπαιδευτικοί πρέπει να οργανώνουν τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με τέτοιο τρόπο ώστε να δίνεται έμφαση στην κατανόηση των βασικών αντικειμενοστρεφών εννοιών και της αντικειμενοστρεφούς τεχνικής ανάπτυξης προγραμμάτων και όχι απλά στην ανάπτυξη προγραμμάτων με μια αντικειμενοστρεφή γλώσσα. Στόχος δεν αποτελεί η εκμάθηση της σύνταξης μιας αντικειμενοστρεφούς γλώσσας προγραμματισμού, αλλά των εννοιών του αντικειμενοστρεφούς προγραμματισμού.
Οι εκπαιδευτικοί πρέπει να μπορούν να σχεδιάζουν και να εφαρμόζουν εκπαιδευτικές δραστηριότητες που θα συντελούν στην ανάπτυξη ικανοτήτων επίλυσης προβλημάτων με την αντικειμενοστρεφή τεχνική. Ένα αντικειμενοστρεφές πρόγραμμα δημιουργεί στην ουσία στον υπολογιστή ένα μοντέλο ενός συστήματος του κόσμου. Κεντρικό ρόλο στην επίλυση ενός προβλήματος παίζει η μοντελοποίησή του. Ο εκπαιδευτικός πρέπει να δώσει έμφαση στη διαδικασία εντοπισμού των οντοτήτων (αντικειμένων) από τα οποία είναι δομημένο το μοντέλο του συστήματος που θα αναπαρασταθεί με το πρόγραμμα που θα αναπτυχθεί.
Στην περίπτωση που οι μαθητές έχουν προηγούμενη εμπειρία με μια διαδικαστική γλώσσα προγραμματισμού (ή ψευδογλώσσα) είναι απαραίτητο ο εκπαιδευτικός να τονίσει από την αρχή τις διαφορετικές αρχές που διέπουν τη σχεδίαση της λύσης ενός προβλήματος με την τεχνική του δομημένου και του αντικειμενοστρεφούς προγραμματισμού.
Βασικές έννοιες
Οι δύο βασικότερες έννοιες του αντικειμενοστρεφούς προγραμματισμού είναι η έννοια της κλάσης και του αντικειμένου, οι οποίες μάλιστα σύμφωνα με τη διεθνή βιβλιογραφία πολλές φορές συγχέονται. Η διδασκαλία της συγκεκριμένης τεχνικής προγραμματισμού πρέπει να επικεντρωθεί στις παρακάτω έννοιες:
Βασική έννοια στον αντικειμενοστρεφή προγραμματισμό αποτελεί και η κληρονομικότητα, ο ορισμός δηλαδή μιας κλάσης ως επέκταση κάποιας άλλης. Σε αυτή την περίπτωση η νέα κλάση ονομάζεται υποκλάση και εκείνη από την οποία κληρονομεί υπερκλάση. Μια υποκλάση κληρονομεί από την υπερκλάση τις ιδιότητες (πεδία) και τις λειτουργίες (μεθόδους) της, και την επεκτείνει με επιπλέον λειτουργίες ή/και πεδία. Η έννοια της κληρονομικότητας μπορεί εύκολα να διδαχθεί σε ειδικά σχεδιασμένα περιβάλλοντα, όπως για παράδειγμα σε ένα προγραμματιστικό μικρόκοσμο, αλλά η διδασκαλία σε μια συμβατική αντικειμενοστρεφή γλώσσα είναι σημαντικά πιο δύσκολη.
Οι εκπαιδευτικοί πρέπει να οργανώνουν τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με τέτοιο τρόπο ώστε να δίνεται έμφαση στην κατανόηση των βασικών αντικειμενοστρεφών εννοιών και της αντικειμενοστρεφούς τεχνικής ανάπτυξης προγραμμάτων και όχι απλά στην ανάπτυξη προγραμμάτων με μια αντικειμενοστρεφή γλώσσα. Στόχος δεν αποτελεί η εκμάθηση της σύνταξης μιας αντικειμενοστρεφούς γλώσσας προγραμματισμού, αλλά των εννοιών του αντικειμενοστρεφούς προγραμματισμού.
Οι εκπαιδευτικοί πρέπει να μπορούν να σχεδιάζουν και να εφαρμόζουν εκπαιδευτικές δραστηριότητες που θα συντελούν στην ανάπτυξη ικανοτήτων επίλυσης προβλημάτων με την αντικειμενοστρεφή τεχνική. Ένα αντικειμενοστρεφές πρόγραμμα δημιουργεί στην ουσία στον υπολογιστή ένα μοντέλο ενός συστήματος του κόσμου. Κεντρικό ρόλο στην επίλυση ενός προβλήματος παίζει η μοντελοποίησή του. Ο εκπαιδευτικός πρέπει να δώσει έμφαση στη διαδικασία εντοπισμού των οντοτήτων (αντικειμένων) από τα οποία είναι δομημένο το μοντέλο του συστήματος που θα αναπαρασταθεί με το πρόγραμμα που θα αναπτυχθεί.
Στην περίπτωση που οι μαθητές έχουν προηγούμενη εμπειρία με μια διαδικαστική γλώσσα προγραμματισμού (ή ψευδογλώσσα) είναι απαραίτητο ο εκπαιδευτικός να τονίσει από την αρχή τις διαφορετικές αρχές που διέπουν τη σχεδίαση της λύσης ενός προβλήματος με την τεχνική του δομημένου και του αντικειμενοστρεφούς προγραμματισμού.
Βασικές έννοιες
Οι δύο βασικότερες έννοιες του αντικειμενοστρεφούς προγραμματισμού είναι η έννοια της κλάσης και του αντικειμένου, οι οποίες μάλιστα σύμφωνα με τη διεθνή βιβλιογραφία πολλές φορές συγχέονται. Η διδασκαλία της συγκεκριμένης τεχνικής προγραμματισμού πρέπει να επικεντρωθεί στις παρακάτω έννοιες:
- Η αναπαράσταση των οντοτήτων/τμημάτων ενός συστήματος του κόσμου για το οποίο δημιουργούμε ένα μοντέλο στον υπολογιστή γίνεται με τα αντικείμενα.
- Τα αντικείμενα ανάλογα με τις ιδιότητες που τα χαρακτηρίζουν και τις λειτουργίες που μπορούν να εκτελούν κατηγοριοποιούνται και περιγράφονται με ένα γενικό τρόπο σε μια κλάση. Για κάθε διαφορετικό είδος αντικειμένων πρέπει να ορίσουμε μία ξεχωριστή κλάση.
- Μια κλάση περιγράφει με ένα γενικό (αφηρημένο) τρόπο:
- τις ιδιότητες που χαρακτηρίζουν ένα είδος αντικειμένων ή αλλιώς τις τιμές δεδομένων που χαρακτηρίζουν την κατάσταση τους. Οι τιμές των ιδιοτήτων αυτών αποθηκεύονται σε ειδικές μεταβλητές που δηλώνονται στην κλάση και ονομάζονται πεδία. Οι τιμές αυτές μπορούν να αλλάζουν κατά την εκτέλεση ενός προγράμματος, αλλάζοντας ταυτόχρονα και την κατάσταση του αντικειμένου.
- τις λειτουργίες που καθορίζουν τη συμπεριφορά ενός είδους αντικειμένων και προσδιορίζουν, μεταξύ άλλων, τον τρόπο επεξεργασίας των δεδομένων που περικλείει το κάθε αντικείμενο. Η περιγραφή του τρόπου εκτέλεσης μιας συγκεκριμένης λειτουργίας γίνεται γράφοντας μια ομάδα εντολών στην οποία δίνουμε ένα συγκεκριμένο όνομα και μπορούμε να εκτελούμε για κάθε αντικείμενο της κλάσης, όποτε χρειάζεται. Η υλοποίηση κάθε τέτοιας λειτουργίας ονομάζεται μέθοδος. Συχνά επίσης αναφέρουμε ότι στέλνουμε σε ένα αντικείμενο ένα μήνυμα και αυτό ανταποκρίνεται εκτελώντας την αντίστοιχη μέθοδο.
- Από τη στιγμή που θα ορίσουμε μια κλάση μπορούμε να δημιουργήσουμε όσα αντικείμενα, ή αλλιώς στιγμιότυπα, χρειαζόμαστε για την επίλυση ενός δεδομένου προβλήματος. Η κλάση αποτελεί το καλούπι βάσει του οποίου κατασκευάζονται τα αντικείμενα. Κάθε στιγμιότυπο/αντικείμενο μιας κλάσης έχει τις ιδιότητες (πεδία) και μπορεί να εκτελέσει τις λειτουργίες (μεθόδους) της κλάσης από την οποία προέρχεται. Όλα τα στιγμιότυπα μιας κλάσης έχουν τα ίδια πεδία, αλλά οι τιμές των πεδίων αυτών και συνεπώς η κατάσταση των αντικειμένων μιας δεδομένης κλάσης μπορεί να διαφέρει.
- Όταν δημιουργούμε ένα νέο αντικείμενο του δίνουμε ένα όνομα προκειμένου να μπορούμε στη συνέχεια να αναφερθούμε σε αυτό μέσω του προγράμματός μας και να του στείλουμε μηνύματα, και επίσης αρχικοποιούμε τα πεδία του καθορίζοντας έτσι την αρχική του κατάσταση. Η δημιουργία ενός νέου αντικειμένου γίνεται καλώντας μια ειδική μέθοδο που ορίζεται στην κλάση του αντικειμένου και ονομάζεται κατασκευαστής.
Βασική έννοια στον αντικειμενοστρεφή προγραμματισμό αποτελεί και η κληρονομικότητα, ο ορισμός δηλαδή μιας κλάσης ως επέκταση κάποιας άλλης. Σε αυτή την περίπτωση η νέα κλάση ονομάζεται υποκλάση και εκείνη από την οποία κληρονομεί υπερκλάση. Μια υποκλάση κληρονομεί από την υπερκλάση τις ιδιότητες (πεδία) και τις λειτουργίες (μεθόδους) της, και την επεκτείνει με επιπλέον λειτουργίες ή/και πεδία. Η έννοια της κληρονομικότητας μπορεί εύκολα να διδαχθεί σε ειδικά σχεδιασμένα περιβάλλοντα, όπως για παράδειγμα σε ένα προγραμματιστικό μικρόκοσμο, αλλά η διδασκαλία σε μια συμβατική αντικειμενοστρεφή γλώσσα είναι σημαντικά πιο δύσκολη.
5. Δυσκολίες, παρανοήσεις και διδακτικές παρεμβάσεις
Η διδασκαλία και εκμάθηση του αντικειμενοστρεφούς προγραμματισμού συνοδεύεται από ποικίλες δυσκολίες και παρανοήσεις. Όταν ο εκπαιδευτικός έχει γνώση των σχετικών ευρημάτων που έχουν καταγραφεί στη διεθνή βιβλιογραφία είναι σε θέση να σχεδιάσει και να αναπτύξει κατάλληλο εκπαιδευτικό υλικό (παραδείγματα, ερωτήσεις, δραστηριότητες) προκειμένου να αποφευχθεί στο βαθμό που αυτό είναι δυνατό η εμφάνιση συγκεκριμένων δυσκολιών/παρανοήσεων, ή τουλάχιστον να αντιμετωπιστούν οι δυσκολίες αυτές ευκολότερα.
Όσον αφορά στις παρανοήσεις, ή αλλιώς λανθασμένες αντιλήψεις, που έχουν καταγραφεί, ιδιαίτερη βαρύτητα πρέπει να δοθεί στις ακόλουθες:
Αν ο μαθητής δεν κατανοήσει ότι μια κλάση περιγράφει με αφηρημένο τρόπο ένα είδος αντικειμένων, καθώς επίσης και το γεγονός ότι μπορούμε στο πλαίσιο επίλυσης ενός προβλήματος να δημιουργήσουμε οποιοδήποτε αριθμό αντικειμένων (στιγμιοτύπων) από μια κλάση τότε η δυσκολία σχεδίασης μιας αντικειμενοστρεφούς λύσης σε ένα πρόβλημα είναι πολύ μεγάλη.
Ο εντοπισμός της συγκεκριμένης παρανόησης από τον εκπαιδευτικό μπορεί να γίνει εύκολα απευθύνοντας σχετικές ερωτήσεις ανοικτού ή κλειστού τύπου στους μαθητές ή δίνοντας τον προσδιορισμό ενός απλού προβλήματος και ζητώντας από τους μαθητές να καθορίσουν τις απαιτούμενες κλάσεις και αντικείμενα. Επίσης, ο ορισμός από τους μαθητές ενός αντιγράφου (ή περισσότερων αντιγράφων) μιας κλάσης με διαφορετικό όνομα και η δημιουργία ενός αντικειμένου από κάθε μία κλάση για την επίλυση ενός προβλήματος, αντί για τον ορισμό μιας κλάσης και την δημιουργία του κατάλληλου αριθμού αντικειμένων από αυτή, είναι μια συχνή απόρροια της παρανόησης ότι κλάση και αντικείμενο είναι έννοιες ταυτόσημες.
Για την αποφυγή της παρανόησης ότι οι έννοιες κλάση και αντικείμενο είναι έννοιες ταυτόσημες, ο εκπαιδευτικός πρέπει να χρησιμοποιήσει από τα πρώτα μαθήματα παραδείγματα και ασκήσεις, στις οποίες χρησιμοποιείται περισσότερα ένα αντικείμενα από κάθε κλάση.
Ο εκπαιδευτικός θα πρέπει να ετοιμάσει από τα πρώτα μαθήματα κατάλληλες δραστηριότητες προκειμένου να κατανοήσουν οι μαθητές και να αξιοποιήσουν τη λειτουργικότητα των μεθόδων. Ενδεικτικά, θα μπορούσε να δοθεί στους μαθητές ο ορισμός μιας κλάσης στην οποία επαναλαμβάνεται το ίδιο τμήμα κώδικα και να τεθούν σχετικές ερωτήσεις στους μαθητές, να ακολουθήσει συζήτηση, να εντοπιστεί το πρόβλημα και να βελτιωθεί ο ορισμός της κλάσης με την αντικατάσταση των ίδιων τμημάτων κώδικα από μια κλήση σε μια νέα μέθοδο που θα προστεθεί στην κλάση.
Οι προαναφερθείσες παρανοήσεις είναι πολύ σημαντικές και πρέπει να λαμβάνονται υπόψη για τη σχεδίαση κατάλληλου εκπαιδευτικού υλικού για τα αρχικά μαθήματα εισαγωγής στον αντικειμενοστρεφή προγραμματισμό. Ωστόσο, υπάρχουν πολλές ακόμα δυσκολίες και παρανοήσεις που θα πρέπει να γνωρίζει ο εκπαιδευτικός και να είναι σε θέση να αποτρέψει με τη δημιουργία κατάλληλων διδακτικών καταστάσεων, ή τουλάχιστον να είναι σε θέση να εντοπίσει την ύπαρξή τους εύκολα σχεδιάζοντας κατάλληλα φύλλα ελέγχου. Βέβαια, ορισμένες από τις δυσκολίες και τις παρανοήσεις που συνοψίζονται στη συνέχεια αποφεύγονται όταν για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού χρησιμοποιούνται ειδικά περιβάλλοντα. Για παράδειγμα, στους περισσότερους προγραμματιστικούς μικρόκοσμους η δήλωση των μεταβλητών γίνεται έμμεσα και οι σχετικές δυσκολίες απαλείφονται.
Στη συνέχεια, αναφέρονται δυσκολίες και παρανοήσεις που καταγράφηκαν σε μια μελέτη διάρκειας δύο ετών που πραγματοποιήθηκε με μαθητές (15-16 ετών) σχολείων στο Ισραήλ, χρησιμοποιώντας τη Java και το περιβάλλον BlueJ (Ragonis & Ben-Ari, 2005):
Όσον αφορά στις παρανοήσεις, ή αλλιώς λανθασμένες αντιλήψεις, που έχουν καταγραφεί, ιδιαίτερη βαρύτητα πρέπει να δοθεί στις ακόλουθες:
- Ταύτιση κλάσης/αντικειμένου: αρκετοί σπουδαστές συγχέουν τις έννοιες της κλάσης και του αντικειμένου και δεν μπορούν να τις διαχωρίσουν (Holland et al., 1997). Η σχεδίαση της λύσης σε ένα πρόβλημα με την αντικειμενοστρεφή τεχνική προγραμματισμού προϋποθέτει:
- τον εντοπισμό των οντοτήτων (βασικών στοιχείων) του προβλήματος,
- την μοντελοποίηση κάθε οντότητας, τον εντοπισμό δηλαδή των ιδιοτήτων (πεδίων) και των λειτουργιών (μεθόδων) της με απώτερο στόχο τον ορισμό μιας κλάσης που την αναπαριστά
- τη δημιουργία των απαραίτητων αντικειμένων από κάθε κλάση και την αποστολή των κατάλληλων αντικειμένων (εκτέλεση των κατάλληλων μεθόδων) για την επίλυση του προβλήματος.
Αν ο μαθητής δεν κατανοήσει ότι μια κλάση περιγράφει με αφηρημένο τρόπο ένα είδος αντικειμένων, καθώς επίσης και το γεγονός ότι μπορούμε στο πλαίσιο επίλυσης ενός προβλήματος να δημιουργήσουμε οποιοδήποτε αριθμό αντικειμένων (στιγμιοτύπων) από μια κλάση τότε η δυσκολία σχεδίασης μιας αντικειμενοστρεφούς λύσης σε ένα πρόβλημα είναι πολύ μεγάλη.
Ο εντοπισμός της συγκεκριμένης παρανόησης από τον εκπαιδευτικό μπορεί να γίνει εύκολα απευθύνοντας σχετικές ερωτήσεις ανοικτού ή κλειστού τύπου στους μαθητές ή δίνοντας τον προσδιορισμό ενός απλού προβλήματος και ζητώντας από τους μαθητές να καθορίσουν τις απαιτούμενες κλάσεις και αντικείμενα. Επίσης, ο ορισμός από τους μαθητές ενός αντιγράφου (ή περισσότερων αντιγράφων) μιας κλάσης με διαφορετικό όνομα και η δημιουργία ενός αντικειμένου από κάθε μία κλάση για την επίλυση ενός προβλήματος, αντί για τον ορισμό μιας κλάσης και την δημιουργία του κατάλληλου αριθμού αντικειμένων από αυτή, είναι μια συχνή απόρροια της παρανόησης ότι κλάση και αντικείμενο είναι έννοιες ταυτόσημες.
Για την αποφυγή της παρανόησης ότι οι έννοιες κλάση και αντικείμενο είναι έννοιες ταυτόσημες, ο εκπαιδευτικός πρέπει να χρησιμοποιήσει από τα πρώτα μαθήματα παραδείγματα και ασκήσεις, στις οποίες χρησιμοποιείται περισσότερα ένα αντικείμενα από κάθε κλάση.
- Ταύτιση αντικειμένου/μεταβλητής: κάθε αντικείμενο αποτελεί απλά ένα «περιτύλιγμα» μιας μεταβλητής. Σε αρκετές περιπτώσεις οι εκπαιδευτικοί για λόγους απλότητας παρουσιάζουν στα αρχικά μαθήματα παραδείγματα στα οποία χρησιμοποιείται ένα μόνο πεδίο, ή αλλιώς μία μεταβλητή στιγμιοτύπου (instance variable), σε κάθε κλάση. Η χρήση τέτοιου είδους παραδειγμάτων είναι πολύ πιθανό να δημιουργήσει την παρανόηση ότι ένα αντικείμενο είναι απλά ένα «περιτύλιγμα» μιας μεταβλητής χωρίς κάποια λειτουργικότητα, και γι' αυτό θα πρέπει να αποφεύγεται.
- Τα αντικείμενα είναι απλές εγγραφές χωρίς συμπεριφορά: δεν γίνεται αντιληπτό ότι η συμπεριφορά ενός αντικειμένου μπορεί να αλλάξει ουσιαστικά ανάλογα με την κατάστασή του (Holland et al., 1997). Αρκετές φορές οι εκπαιδευτικοί σχεδιάζουν παραδείγματα και ασκήσεις στις οποίες τα αντικείμενα συμπεριφέρονται ως απλές εγγραφές δεδομένων χωρίς καμία απολύτως λειτουργικότητα (συμπεριφορά). Για παράδειγμα, χρησιμοποιείται μια κλάση VideoGame που αναπαριστά ηλεκτρονικά παιχνίδια και έχει ως πεδία τον τίτλο του παιχνιδιού, τον δημιουργό, την πλατφόρμα κτλ. Παρόλο που το θέμα αυτό προσελκύει (ενδεχομένως) το ενδιαφέρον των μαθητών, δεν αναδεικνύει το γεγονός ότι τα αντικείμενα έχουν συμπεριφορά, η οποία μάλιστα μπορεί να αλλάξει ανάλογα με την κατάστασή τους. Τα παραδείγματα που χρησιμοποιούνται και οι ασκήσεις που ανατίθενται στους μαθητές πρέπει να αναφέρονται σε αντικείμενα που περικλείουν δεδομένα, αλλά έχουν και συμπεριφορά που μπορεί μάλιστα να αλλάξει ουσιαστικά ανάλογα με την κατάστασή τους (τις τρέχουσες τιμές δεδομένων των πεδίων τους). Για παράδειγμα, μπορεί να χρησιμοποιηθεί μια κλάση που αναπαριστά ένα Λογαριασμό (ή καλύτερα τον Κουμπαρά) ενός μαθητή. Ένα αντικείμενο της κλάσης αυτής θα συμπεριφερθεί διαφορετικά σε μια αίτηση ανάληψης, ανάλογα με τον αν υπάρχει υπόλοιπο ή όχι στο λογαριασμό.
- Δεν αξιοποιείται η λειτουργικότητα των μεθόδων και επαναλαμβάνεται ένα τμήμα κώδικα αντί να ορίζεται μια μέθοδος (Fleury, 2001). Οι μαθητές συχνά επαναλαμβάνουν πανομοιότυπα τμήματα κώδικα σε διάφορα σημεία ενός προγράμματος, αντί να ορίζουν μια μέθοδο για την υλοποίηση της συγκεκριμένης λειτουργίας και στη συνέχεια να την καλούν στα απαραίτητα σημεία. Ειδικά, όταν το συγκεκριμένο τμήμα κώδικα εκτελείται μέσω άλλων μεθόδων, υπάρχουν μαθητές που ακόμα και αν αντιληφθούν ότι το συγκεκριμένο τμήμα κώδικα θα μπορούσε να αποτελέσει μια μέθοδο προτιμούν αντί αυτού να επαναλαμβάνουν το ίδιο τμήμα κώδικα. Όπως έχουν αναφέρει και άλλοι ερευνητές η κλήση μεθόδων μέσα από άλλες μεθόδους προκαλεί δυσκολίες σε αρκετούς μαθητές.
Ο εκπαιδευτικός θα πρέπει να ετοιμάσει από τα πρώτα μαθήματα κατάλληλες δραστηριότητες προκειμένου να κατανοήσουν οι μαθητές και να αξιοποιήσουν τη λειτουργικότητα των μεθόδων. Ενδεικτικά, θα μπορούσε να δοθεί στους μαθητές ο ορισμός μιας κλάσης στην οποία επαναλαμβάνεται το ίδιο τμήμα κώδικα και να τεθούν σχετικές ερωτήσεις στους μαθητές, να ακολουθήσει συζήτηση, να εντοπιστεί το πρόβλημα και να βελτιωθεί ο ορισμός της κλάσης με την αντικατάσταση των ίδιων τμημάτων κώδικα από μια κλήση σε μια νέα μέθοδο που θα προστεθεί στην κλάση.
Οι προαναφερθείσες παρανοήσεις είναι πολύ σημαντικές και πρέπει να λαμβάνονται υπόψη για τη σχεδίαση κατάλληλου εκπαιδευτικού υλικού για τα αρχικά μαθήματα εισαγωγής στον αντικειμενοστρεφή προγραμματισμό. Ωστόσο, υπάρχουν πολλές ακόμα δυσκολίες και παρανοήσεις που θα πρέπει να γνωρίζει ο εκπαιδευτικός και να είναι σε θέση να αποτρέψει με τη δημιουργία κατάλληλων διδακτικών καταστάσεων, ή τουλάχιστον να είναι σε θέση να εντοπίσει την ύπαρξή τους εύκολα σχεδιάζοντας κατάλληλα φύλλα ελέγχου. Βέβαια, ορισμένες από τις δυσκολίες και τις παρανοήσεις που συνοψίζονται στη συνέχεια αποφεύγονται όταν για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού χρησιμοποιούνται ειδικά περιβάλλοντα. Για παράδειγμα, στους περισσότερους προγραμματιστικούς μικρόκοσμους η δήλωση των μεταβλητών γίνεται έμμεσα και οι σχετικές δυσκολίες απαλείφονται.
Στη συνέχεια, αναφέρονται δυσκολίες και παρανοήσεις που καταγράφηκαν σε μια μελέτη διάρκειας δύο ετών που πραγματοποιήθηκε με μαθητές (15-16 ετών) σχολείων στο Ισραήλ, χρησιμοποιώντας τη Java και το περιβάλλον BlueJ (Ragonis & Ben-Ari, 2005):
- Μια κλάση είναι μια συλλογή αντικειμένων και όχι ένα πρότυπο δημιουργίας αντικειμένων (παρανόηση).
- Δυσκολία κατανόησης της στατικής φύσης μιας κλάσης και της δυναμικής φύσης ενός αντικειμένου.
- Δυσκολία κατανόησης της διαδικασίας δημιουργίας ενός αντικειμένου.
- Δύο αντικείμενα της ίδιας κλάσης δεν μπορούν να έχουν τις ίδιες τιμές πεδίων (παρανόηση).
- Μπορεί να χρησιμοποιηθεί το ίδιο αναγνωριστικό για δύο αντικείμενα, εφόσον αυτά έχουν κάποια διαφορετική τιμή σε κάποιο από τα πεδία τους (παρανόηση).
- Το αναγνωριστικό ενός αντικειμένου είναι κάποιο από τα πεδία (ιδιότητες) του (παρανόηση).
- Δυσκολία κατανόησης του γεγονότος ότι μια μέθοδος μπορεί να κληθεί για οποιοδήποτε αντικείμενο μιας κλάσης.
- Μπορούμε να καλέσουμε μια μέθοδο για ένα αντικείμενο μόνο μία φορά (παρανόηση).
- Μπορούμε να ορίσουμε μια μέθοδο που προσθέτει μια ιδιότητα/πεδίο σε μια κλάση.
- Δυσκολία κατανόησης της κατηγοριοποίησης των μεθόδων σε κατασκευαστές, μεθόδους πρόσβασης και μετάλλαξης.
- Η κλήση του κατασκευαστή μιας κλάσης δεν είναι απαραίτητη, αφού ο ορισμός του είναι αρκετός για τη δημιουργία ενός αντικειμένου (παρανόηση).
- Οι κατασκευαστές μπορούν να περιλαμβάνουν μόνο εντολές ανάθεσης για την αρχικοποίηση των πεδίων (παρανόηση).
- Η δημιουργία ενός στιγμιοτύπου (αντικειμένου) μιας κλάσης αφορά μόνο στην εκτέλεση του κατασκευαστή και όχι στην κατανομή μνήμης (παρανόηση).
- Δυσκολία κατανόησης ενός κενού κατασκευαστή.
- Η αρχικοποίηση ενός πεδίου με μια σταθερά κατά τη δήλωσή του προκαλεί δυσκολία στο διαχωρισμό μεταξύ της κλάσης και του αντικειμένου (παρανόηση).
- Η αρχικοποίηση ενός πεδίου με μια σταθερά σε ένα κατασκευαστή προκαλεί δυσκολία στο διαχωρισμό μεταξύ της κλάσης και του αντικειμένου (παρανόηση).
- Αν τα πεδία αρχικοποιούνται στη δήλωση της κλάσης τότε δεν υπάρχει ανάγκη να δημιουργηθούν αντικείμενα (παρανόηση).
- Μέθοδοι με την ίδια υπογραφή σε διαφορετικές κλάσεις δεν μπορούν να διαχωριστούν (παρανόηση).
- Οι μέθοδοι εκτελούνται σύμφωνα με τη σειρά που εμφανίζονται στον ορισμό της κλάσης (παρανόηση).
- Κάθε μέθοδος μπορεί να κληθεί μόνο μία φορά (παρανόηση).
- Δυσκολία κατανόησης της επίδρασης που έχει η εκτέλεση μιας μεθόδου στην κατάσταση ενός αντικειμένου.
- Δυσκολία κατανόησης της κλήσης μιας μεθόδου από άλλη μέθοδο.
- Δυσκολία κατανόησης της προέλευσης των τιμών των παραμέτρων σε μια μέθοδο.
- Δυσκολία κατανόησης σχετικά με το πού καταλήγει η επιστρεφόμενη τιμή μιας μεθόδου
- Τα αντικείμενα δημιουργούνται από μόνα τους (παρανόηση).
- Το σύστημα δεν επιτρέπει μη λογικές λειτουργίες (παρανόηση).
- Δεν γίνεται αντιληπτό πώς γνωρίζει ο υπολογιστής ποια είναι τα πεδία και οι μέθοδοι μιας κλάσης.
- Δεν γίνεται αντιληπτό πώς η μια κλάση αναγνωρίζει την άλλη.
6. Διδακτικά προβλήματα
Στην ενότητα αυτή παρουσιάζονται τα σημαντικότερα γενικά προβλήματα που έχουν καταγραφεί στη διεθνή βιβλιογραφία σχετικά με τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού. Ο εκπαιδευτικός θα πρέπει να γνωρίζει τα προβλήματα αυτά προκειμένου να σχεδιάσει ένα αποτελεσματικό μάθημα εισαγωγής στη συγκεκριμένητεχνική προγραμματισμού.
Μετάβαση από το διαδικαστικό στον αντικειμενοστραφή προγραμματισμό
Αρκετές εργασίες έχουν εκπονηθεί με αντικείμενο τη σειρά με την οποία είναι προτιμότερο να εισάγονται οι σπουδαστές στις διάφορες τεχνικές προγραμματισμού, και ειδικότερα τη σειρά με την οποία πρέπει να διδάσκονται την τεχνική του αντικειμενοστρεφούς και του διαδικαστικού/δομημένου προγραμματισμού. Αν και οι απόψεις διίστανται, η πλειονότητα των διδασκόντων/ερευνητών υποστηρίζει ότι:
Όταν οι μαθητές έχουν προηγούμενη εμπειρία σε κάποια διαδικαστική γλώσσα (ή ψευδογλώσσα) η εκμάθηση των αρχών του αντικειμενοστρεφούς προγραμματισμού καθίσταται δυσκολότερη. Οι σημαντικότερες δυσκολίες που παρουσιάζονται είναι οι εξής:
Στην περίπτωση λοιπόν που οι μαθητές έχουν προηγούμενη εμπειρία σε κάποια διαδικαστική (ψευδο)γλώσσα είναι πολύ σημαντικό ο εκπαιδευτικός να αφιερώσει χρόνο στο πρώτο μάθημα για να αντιπαραθέσει τα βασικά χαρακτηριστικά των τεχνικών του διαδικαστικού και του αντικειμενοστρεφούς προγραμματισμού. Είναι απαραίτητο να κατανοήσουν οι μαθητές ότι:
Η αντικειμενοστραφής τεχνική ανάπτυξης προγραμμάτων είναι δύσκολη
Η αντικειμενοστρεφής τεχνική ανάπτυξης προγραμμάτων θεωρείται πιο αφηρημένη σε σχέση με την τεχνική του δομημένου προγραμματισμού, απαιτεί νέους τρόπους σκέψης και είναι πιο απαιτητική όσον αφορά τις διαδικασίες της ανάλυσης και σχεδίασης.
Επίσης, από μελέτη που διεξήχθη προέκυψε ότι τα νοητά μοντέλα που δημιουργούν οι φοιτητές για τα αντικειμενοστρεφή και τα κατηγορηματικά προγράμματα διαφέρουν ουσιαστικά (Ramalingam & Wiedenbeck, 1997). Συγκεκριμένα, οι φοιτητές κατανόησαν σε μεγαλύτερο βαθμό τα κατηγορηματικά προγράμματα. Τα νοητά μοντέλα που δημιούργησαν οι φοιτητές για τα κατηγορηματικά προγράμματα επικεντρώθηκαν στις στοιχειώδεις διαδικασίες (elementary operations) και τη ροή ελέγχου (control flow) του προγράμματος που περιγράφονται από τον πηγαίο κώδικα, δημιούργησαν δηλαδή ένα μοντέλο για το
πρόγραμμα (program model). Αντίθετα, τα νοητά μοντέλα που δημιούργησαν οι φοιτητές για τα αντικειμενοστρεφή προγράμματα επικεντρώθηκαν περισσότερο στη ροή των δεδομένων (data flow) και τη λειτουργία του προγράμματος (function knowledge), δημιούργησαν δηλαδή ένα μοντέλο για τη λειτουργία του προγράμματος συνολικά (domain model).
Είναι λοιπόν σημαντικό ο εκπαιδευτικός να χρησιμοποιήσει τα κατάλληλα εργαλεία και να σχεδιάσει εκπαιδευτικές δραστηριότητες προκειμένου οι μαθητές να κατανοήσουν τόσο τα επιμέρους συστατικά στοιχεία ενός αντικειμενοστρεφούς προγράμματος όσο και τη λειτουργία του συνολικά. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας περιβάλλοντα που υποστηρίζουν τη βηματική εκτέλεση των προγραμμάτων και δυνατότητες οπτικοποίησης των αποτελεσμάτων της εκτέλεσης και φυσικά την εμπλοκή των μαθητών σε δραστηριότητες που απαιτούν τον εντοπισμό, την κατανόηση και την καταγραφή στοιχείων που αφορούν τόσο στον κώδικα ενός προγράμματος και στη δομή του, όσο και στη λειτουργία του συνολικά.
Μετάβαση από το διαδικαστικό στον αντικειμενοστραφή προγραμματισμό
Αρκετές εργασίες έχουν εκπονηθεί με αντικείμενο τη σειρά με την οποία είναι προτιμότερο να εισάγονται οι σπουδαστές στις διάφορες τεχνικές προγραμματισμού, και ειδικότερα τη σειρά με την οποία πρέπει να διδάσκονται την τεχνική του αντικειμενοστρεφούς και του διαδικαστικού/δομημένου προγραμματισμού. Αν και οι απόψεις διίστανται, η πλειονότητα των διδασκόντων/ερευνητών υποστηρίζει ότι:
- η αντικειμενοστρεφής προσέγγιση προγραμματισμού πρέπει να παρουσιάζεται στα αρχικά στάδια διδασκαλίας του προγραμματισμού (Alphonce & Ventura, 2002; Bruce et al., 2001; Christensen & Caspersen, 2002; Kolling & Rosenberg, 2001)
- οι σπουδαστές αντιμετωπίζουν περισσότερες δυσκολίες όταν μεταβαίνουν από τον κατηγορηματικό (imperative) - διαδικαστικό (procedural) προγραμματισμό στον αντικειμενοστρεφή, ενώ το αντίστροφο δεν ισχύει (Decker & Hirshfield, 1994;Hadjerrouit, 1998; Tempte, 1991; Wick, 1995).
Όταν οι μαθητές έχουν προηγούμενη εμπειρία σε κάποια διαδικαστική γλώσσα (ή ψευδογλώσσα) η εκμάθηση των αρχών του αντικειμενοστρεφούς προγραμματισμού καθίσταται δυσκολότερη. Οι σημαντικότερες δυσκολίες που παρουσιάζονται είναι οι εξής:
- οι μαθητές δυσκολεύονται να αλλάξουν τρόπο σκέψης και να αρχίσουν να σχεδιάζουν αντικειμενοστρεφείς λύσεις σε προβλήματα. Παρά τους ισχυρισμούς ότι η αντικειμενοστρεφής προσέγγιση επίλυσης προβλημάτων είναι πιο εύκολη -φυσική για την ακρίβεια-, ο νέος τρόπος σκέψης που απαιτεί δεν γίνεται εύκολα κατανοητός από σπουδαστές που έχουν εμπειρία στην επίλυση προβλημάτων με μια διαδικαστική γλώσσα προγραμματισμού (Tempte, 1991).
- δεν αξιοποιούνται τα πλεονεκτήματα του αντικειμενοστρεφούς προγραμματισμού. Σπουδαστές με προηγούμενη εμπειρία σε διαδικαστικές γλώσσες προγραμματισμού, κατά την εισαγωγή τους στη Java αντιμετώπισαν δυσκολίες με τις έννοιες του αντικειμενοστρεφούς προγραμματισμού και συγκεκριμένα με την αξιοποίησή τους. Για παράδειγμα, οι σπουδαστές παρουσίασαν την τάση να χρησιμοποιούν τις μεθόδους ως διαδικασίες, αγνοώντας το ρόλο τους στα πλαίσια του αντικειμενοστρεφούς προγραμματισμού (Handjerrouit, 1998; Handjerrouit, 1999).
Στην περίπτωση λοιπόν που οι μαθητές έχουν προηγούμενη εμπειρία σε κάποια διαδικαστική (ψευδο)γλώσσα είναι πολύ σημαντικό ο εκπαιδευτικός να αφιερώσει χρόνο στο πρώτο μάθημα για να αντιπαραθέσει τα βασικά χαρακτηριστικά των τεχνικών του διαδικαστικού και του αντικειμενοστρεφούς προγραμματισμού. Είναι απαραίτητο να κατανοήσουν οι μαθητές ότι:
- για την επίλυση ενός προβλήματος με την τεχνική του διαδικαστικού προγραμματισμό εντοπίζουμε τα υποπροβλήματα από τα οποία αποτελείται το πρόβλημα και αναπτύσσουμε ένα υποπρόγραμμα για κάθε ένα από αυτά.
- για την επίλυση ενός προβλήματος με την τεχνική του αντικειμενοστρεφούς προγραμματισμού εντοπίζουμε τις οντότητες, τα διακριτά στοιχεία ενός προβλήματος και για κάθε ένα από αυτά ορίζουμε μία κλάση. Μία κλάση περιλαμβάνει δεδομένα (αποθηκεύονται σε ειδικές μεταβλητές που ονομάζονται πεδία) και λειτουργίες για την επεξεργασία τους (μέθοδοι) και αποτελεί ένα πρότυπο με βάση το οποίο μπορούμε να δημιουργήσουμε οποιοδήποτε αριθμό αντικειμένων απαιτείται για την επίλυση ενός προβλήματος. Στα αντικείμενα στέλνουμε μηνύματα μέσω του προγράμματός μας για να εκτελέσουν διάφορες λειτουργίες (μεθόδους). Ένα αντικείμενο έχει συγκεκριμένη κατάσταση, η οποία αλλάζει με την εκτέλεση των διαφόρων μεθόδων της κλάσης στην οποία ανήκει και συμπεριφορά που καθορίζεται από τις μεθόδους που μπορεί να εκτελέσει.
- τα υποπρογράμματα και οι μέθοδοι δεν είναι έννοιες ταυτόσημες. Ένα αντικείμενο μπορεί να εκτελεί μόνο τις μεθόδους που έχουν οριστεί στην κλάση από την οποία προέρχεται.
Η αντικειμενοστραφής τεχνική ανάπτυξης προγραμμάτων είναι δύσκολη
Η αντικειμενοστρεφής τεχνική ανάπτυξης προγραμμάτων θεωρείται πιο αφηρημένη σε σχέση με την τεχνική του δομημένου προγραμματισμού, απαιτεί νέους τρόπους σκέψης και είναι πιο απαιτητική όσον αφορά τις διαδικασίες της ανάλυσης και σχεδίασης.
Επίσης, από μελέτη που διεξήχθη προέκυψε ότι τα νοητά μοντέλα που δημιουργούν οι φοιτητές για τα αντικειμενοστρεφή και τα κατηγορηματικά προγράμματα διαφέρουν ουσιαστικά (Ramalingam & Wiedenbeck, 1997). Συγκεκριμένα, οι φοιτητές κατανόησαν σε μεγαλύτερο βαθμό τα κατηγορηματικά προγράμματα. Τα νοητά μοντέλα που δημιούργησαν οι φοιτητές για τα κατηγορηματικά προγράμματα επικεντρώθηκαν στις στοιχειώδεις διαδικασίες (elementary operations) και τη ροή ελέγχου (control flow) του προγράμματος που περιγράφονται από τον πηγαίο κώδικα, δημιούργησαν δηλαδή ένα μοντέλο για το
πρόγραμμα (program model). Αντίθετα, τα νοητά μοντέλα που δημιούργησαν οι φοιτητές για τα αντικειμενοστρεφή προγράμματα επικεντρώθηκαν περισσότερο στη ροή των δεδομένων (data flow) και τη λειτουργία του προγράμματος (function knowledge), δημιούργησαν δηλαδή ένα μοντέλο για τη λειτουργία του προγράμματος συνολικά (domain model).
Είναι λοιπόν σημαντικό ο εκπαιδευτικός να χρησιμοποιήσει τα κατάλληλα εργαλεία και να σχεδιάσει εκπαιδευτικές δραστηριότητες προκειμένου οι μαθητές να κατανοήσουν τόσο τα επιμέρους συστατικά στοιχεία ενός αντικειμενοστρεφούς προγράμματος όσο και τη λειτουργία του συνολικά. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας περιβάλλοντα που υποστηρίζουν τη βηματική εκτέλεση των προγραμμάτων και δυνατότητες οπτικοποίησης των αποτελεσμάτων της εκτέλεσης και φυσικά την εμπλοκή των μαθητών σε δραστηριότητες που απαιτούν τον εντοπισμό, την κατανόηση και την καταγραφή στοιχείων που αφορούν τόσο στον κώδικα ενός προγράμματος και στη δομή του, όσο και στη λειτουργία του συνολικά.
7. Χρήση εκπαιδευτικού λογισμικού
Γενικές δυσκολίες εκμάθησης του προγραμματισμού
Η διδασκαλία του προγραμματισμού, ανεξάρτητα από την τεχνική προγραμματισμού που χρησιμοποιείται, συνοδεύεται από αρκετές δυσκολίες (Ξυνόγαλος κ.α., 2000):
Είναι προφανές ότι η διδασκαλία του προγραμματισμού σε μαθητές πρέπει να γίνεται χρησιμοποιώντας ειδικές γλώσσες και εκπαιδευτικά περιβάλλοντα προγραμματισμού. Για τη διδασκαλία του δομημένου προγραμματισμού σε μαθητές της Β/θμιας Εκπαίδευσης έχουν αναπτυχθεί στη χώρα μας αρκετά εργαλεία που επιτρέπουν την εισαγωγή σε βασικές έννοιες χρησιμοποιώντας είτε τη γνωστή ψευδογλώσσα «ΓΛΩΣΣΑ» (Γλωσσομάθεια, Διερμηνευτής της Γλώσσας) είτε διάγραμμα ροής (Δημιουργός Διαγραμμάτων Ροής, Διάγραμμα Ροής) και χρησιμοποιούν την ελληνική γλώσσα για την επικοινωνία συστήματος- χρήστη. Για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού, ωστόσο, οι επιλογές είναι πολύ πιο περιορισμένες.
Στην παρούσα ενότητα παρουσιάζεται μια διδακτική προσέγγιση για τον αντικειμενοστρεφή προγραμματισμό, η οποία βασίζεται στους προγραμματιστικούς μικρόκοσμους. Αρχικά, παρουσιάζονται τα ιδιαίτερα χαρακτηριστικά των προγραμματιστικών μικρόκοσμων που τους καθιστούν ιδανικούς για την εισαγωγή στον προγραμματισμό και ειδικότερα τον αντικειμενοστρεφή προγραμματισμό. Στη συνέχεια, παρουσιάζονται κάποια βασικά χαρακτηριστικά των προγραμματιστικών μικρόκοσμων που υπάρχουν διαθέσιμοι για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού. Ιδιαίτερη έμφαση δίνεται στον προγραμματιστικό μικρόκοσμο objectKarel, ο οποίος ενσωματώνει στο περιβάλλον (εκτός από τα γνωστά χαρακτηριστικά των μικρόκοσμων) την απαραίτητη θεωρία για τη διδασκαλία των βασικών εννοιών του αντικειμενοστρεφούς προγραμματισμού και των βασικών αλγοριθμικών δομών (ακολουθίας, επιλογής, επανάληψης), καθώς επίσης και μια σειρά δραστηριοτήτων. Επιπλέον, στον μικρόκοσμο objectKarel υπάρχει η δυνατότητα διαλόγου με το σύστημα στην ελληνική γλώσσα.
Τα πλεονεκτήματα των προγραμματιστικών μικρόκοσμων
Η βασική ιδέα των μικρόκοσμων (microworlds) και των μικρογλωσσών (mini-languages) προγραμματισμού είναι η δημιουργία μιας μικρής και απλής γλώσσας προγραμματισμού για τη στήριξη των πρώτων βημάτων της εκμάθησης του προγραμματισμού. Η πλειοψηφία των μικρόκοσμων προγραμματισμού ενσωματώνει ένα ανοιχτό περιβάλλον που βασίζεται σε κάποιο φυσικό μοντέλο, ενώ ο χρήστης ελέγχει ένα πρωταγωνιστή που «ζει» στο περιβάλλον αυτό. Ο πρωταγωνιστής μπορεί να είναι μια χελώνα, ένα ρομπότ ή κάποια άλλη οντότητα. Στην περίπτωση του αντικειμενοστρεφούς προγραμματισμού, ένας μικρόκοσμος ενσωματώνει ένα ή περισσότερα μοντέλα (κλάσεις) πρωταγωνιστών, τα οποία χρησιμοποιούνται για τη δημιουργία του κατάλληλου αριθμού πρωταγωνιστών για ένα πρόβλημα. Ο μαθητής μαθαίνει βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού δημιουργώντας τον κατάλληλο αριθμό πρωταγωνιστών και στέλνοντας σε αυτούς τα απαραίτητα μηνύματα για την επίλυση ενός προβλήματος. Οι μέθοδοι είναι ιδιαίτερα απλοποιημένες, ενώ το αποτέλεσμα της εκτέλεσης τους είναι ορατό στην οθόνη. Συγκεκριμένα, ο χρήστης βλέπει τον πρωταγωνιστή ή τους πρωταγωνιστές του μικρόκοσμου να ανταποκρίνονται σε κάθε μήνυμα εκτελώντας την αντίστοιχη μέθοδο, μεταβάλλοντας κατ' αυτό τον τρόπο την κατάστασή τους και την κατάσταση του περιβάλλοντος στο οποίο ζουν. Αν και το σύνολο των διαθέσιμων μηνυμάτων/μεθόδων είναι μικρό, ωστόσο υπάρχει η δυνατότητα επίλυσης τόσο απλών όσο και αρκετά πολύπλοκων προβλημάτων. Εκτός από τις εντολές ελέγχου τις οποίες εκτελούν οι πρωταγωνιστές του μικρόκοσμου, υπάρχουν και αρκετά ερωτήματα (συναρτήσεις) στα οποία μπορούν να απαντήσουν, έχουν δηλαδή τη δυνατότητα να ελέγχουν την κατάσταση του κόσμου όπου «ζουν». Επίσης, οι περισσότεροι μικρόκοσμοι περιλαμβάνουν όλες τις βασικές δομές ελέγχου και ένα μηχανισμό δημιουργίας νέων κλάσεων, ή τουλάχιστον προσθήκης νέων μεθόδων στις υπάρχουσες κλάσεις.
Οι μικρόκοσμοι μπορούν να χρησιμοποιηθούν αποτελεσματικά στα πλαίσια εκμάθησης εννοιών του αντικειμενοστρεφούς προγραμματισμού και στην απόκτηση δεξιοτήτων επίλυσης προβλημάτων και αλγοριθμικού τρόπου σκέψης. Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με την προσέγγιση των μικρόκοσμων παρουσιάζει αρκετά πλεονεκτήματα:
Η διδασκαλία του προγραμματισμού, ανεξάρτητα από την τεχνική προγραμματισμού που χρησιμοποιείται, συνοδεύεται από αρκετές δυσκολίες (Ξυνόγαλος κ.α., 2000):
- Οι γλώσσες προγραμματισμού γενικού σκοπού διαθέτουν κατά κανόνα ένα μεγάλο ρεπερτόριο εντολών και είναι πολύπλοκες.
- Η προσοχή των μαθητών επικεντρώνεται στην εκμάθηση της σύνταξης της γλώσσας και όχι στην ανάπτυξη ικανοτήτων επίλυσης προβλημάτων.
- Δεν υπάρχει, κατά κανόνα, επαρκής στήριξη του μαθητή στην κατανόηση των βασικών ενεργειών και δομών ελέγχου, αφού το περιβάλλον προγραμματισμού συνήθως δεν παρέχει δυνατότητες οπτικοποίησης (η διαδικασία εκτέλεσης ενός προγράμματος δεν είναι ορατή από τον σπουδαστή), ή ο τρόπος χρήσης τους δεν είναι προφανής στους μαθητές.
- Οι εμπορικοί μεταγλωττιστές δεν ικανοποιούν τις ανάγκες των αρχάριων προγραμματιστών, με σημαντικότερο μειονέκτημα την αναφορά δυσνόητων μηνυμάτων λάθους.
- Η διανοητική πολυπλοκότητα που απαιτεί η εκφορά ενός αλγορίθμου σε μια γλώσσα προγραμματισμού είναι μεγάλη, λόγω της «φύσης» της γλώσσας.
- Η επίλυση ενδιαφερόντων προβλημάτων απαιτεί την εκμάθηση ενός μεγάλου υποσυνόλου της γλώσσας και την ανάπτυξη αρκετά μεγάλων προγραμμάτων, απαιτεί δηλαδή τη επικέντρωση της προσοχής στην εκμάθηση της γλώσσας (βλέπε παραπάνω σημείο 2).
Είναι προφανές ότι η διδασκαλία του προγραμματισμού σε μαθητές πρέπει να γίνεται χρησιμοποιώντας ειδικές γλώσσες και εκπαιδευτικά περιβάλλοντα προγραμματισμού. Για τη διδασκαλία του δομημένου προγραμματισμού σε μαθητές της Β/θμιας Εκπαίδευσης έχουν αναπτυχθεί στη χώρα μας αρκετά εργαλεία που επιτρέπουν την εισαγωγή σε βασικές έννοιες χρησιμοποιώντας είτε τη γνωστή ψευδογλώσσα «ΓΛΩΣΣΑ» (Γλωσσομάθεια, Διερμηνευτής της Γλώσσας) είτε διάγραμμα ροής (Δημιουργός Διαγραμμάτων Ροής, Διάγραμμα Ροής) και χρησιμοποιούν την ελληνική γλώσσα για την επικοινωνία συστήματος- χρήστη. Για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού, ωστόσο, οι επιλογές είναι πολύ πιο περιορισμένες.
Στην παρούσα ενότητα παρουσιάζεται μια διδακτική προσέγγιση για τον αντικειμενοστρεφή προγραμματισμό, η οποία βασίζεται στους προγραμματιστικούς μικρόκοσμους. Αρχικά, παρουσιάζονται τα ιδιαίτερα χαρακτηριστικά των προγραμματιστικών μικρόκοσμων που τους καθιστούν ιδανικούς για την εισαγωγή στον προγραμματισμό και ειδικότερα τον αντικειμενοστρεφή προγραμματισμό. Στη συνέχεια, παρουσιάζονται κάποια βασικά χαρακτηριστικά των προγραμματιστικών μικρόκοσμων που υπάρχουν διαθέσιμοι για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού. Ιδιαίτερη έμφαση δίνεται στον προγραμματιστικό μικρόκοσμο objectKarel, ο οποίος ενσωματώνει στο περιβάλλον (εκτός από τα γνωστά χαρακτηριστικά των μικρόκοσμων) την απαραίτητη θεωρία για τη διδασκαλία των βασικών εννοιών του αντικειμενοστρεφούς προγραμματισμού και των βασικών αλγοριθμικών δομών (ακολουθίας, επιλογής, επανάληψης), καθώς επίσης και μια σειρά δραστηριοτήτων. Επιπλέον, στον μικρόκοσμο objectKarel υπάρχει η δυνατότητα διαλόγου με το σύστημα στην ελληνική γλώσσα.
Τα πλεονεκτήματα των προγραμματιστικών μικρόκοσμων
Η βασική ιδέα των μικρόκοσμων (microworlds) και των μικρογλωσσών (mini-languages) προγραμματισμού είναι η δημιουργία μιας μικρής και απλής γλώσσας προγραμματισμού για τη στήριξη των πρώτων βημάτων της εκμάθησης του προγραμματισμού. Η πλειοψηφία των μικρόκοσμων προγραμματισμού ενσωματώνει ένα ανοιχτό περιβάλλον που βασίζεται σε κάποιο φυσικό μοντέλο, ενώ ο χρήστης ελέγχει ένα πρωταγωνιστή που «ζει» στο περιβάλλον αυτό. Ο πρωταγωνιστής μπορεί να είναι μια χελώνα, ένα ρομπότ ή κάποια άλλη οντότητα. Στην περίπτωση του αντικειμενοστρεφούς προγραμματισμού, ένας μικρόκοσμος ενσωματώνει ένα ή περισσότερα μοντέλα (κλάσεις) πρωταγωνιστών, τα οποία χρησιμοποιούνται για τη δημιουργία του κατάλληλου αριθμού πρωταγωνιστών για ένα πρόβλημα. Ο μαθητής μαθαίνει βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού δημιουργώντας τον κατάλληλο αριθμό πρωταγωνιστών και στέλνοντας σε αυτούς τα απαραίτητα μηνύματα για την επίλυση ενός προβλήματος. Οι μέθοδοι είναι ιδιαίτερα απλοποιημένες, ενώ το αποτέλεσμα της εκτέλεσης τους είναι ορατό στην οθόνη. Συγκεκριμένα, ο χρήστης βλέπει τον πρωταγωνιστή ή τους πρωταγωνιστές του μικρόκοσμου να ανταποκρίνονται σε κάθε μήνυμα εκτελώντας την αντίστοιχη μέθοδο, μεταβάλλοντας κατ' αυτό τον τρόπο την κατάστασή τους και την κατάσταση του περιβάλλοντος στο οποίο ζουν. Αν και το σύνολο των διαθέσιμων μηνυμάτων/μεθόδων είναι μικρό, ωστόσο υπάρχει η δυνατότητα επίλυσης τόσο απλών όσο και αρκετά πολύπλοκων προβλημάτων. Εκτός από τις εντολές ελέγχου τις οποίες εκτελούν οι πρωταγωνιστές του μικρόκοσμου, υπάρχουν και αρκετά ερωτήματα (συναρτήσεις) στα οποία μπορούν να απαντήσουν, έχουν δηλαδή τη δυνατότητα να ελέγχουν την κατάσταση του κόσμου όπου «ζουν». Επίσης, οι περισσότεροι μικρόκοσμοι περιλαμβάνουν όλες τις βασικές δομές ελέγχου και ένα μηχανισμό δημιουργίας νέων κλάσεων, ή τουλάχιστον προσθήκης νέων μεθόδων στις υπάρχουσες κλάσεις.
Οι μικρόκοσμοι μπορούν να χρησιμοποιηθούν αποτελεσματικά στα πλαίσια εκμάθησης εννοιών του αντικειμενοστρεφούς προγραμματισμού και στην απόκτηση δεξιοτήτων επίλυσης προβλημάτων και αλγοριθμικού τρόπου σκέψης. Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με την προσέγγιση των μικρόκοσμων παρουσιάζει αρκετά πλεονεκτήματα:
- Η γλώσσα προγραμματισμού αποτελείται από ένα περιορισμένο ρεπερτόριο εντολών με απλή σύνταξη και σημασιολογία.
- Βασίζονται σε υπαρκτά μοντέλα που είναι ήδη γνωστά στο σπουδαστή, μειώνοντας έτσι δραματικά τη διανοητική «απόσταση» ανάμεσα στα νοητά μοντέλα ή την περιγραφή σε φυσική γλώσσα των αλγορίθμων και στην περιγραφή τους στη γλώσσα προγραμματισμού.
- Τα προβλήματα που καλούνται να λύσουν οι σπουδαστές παρουσιάζουν ιδιαίτερο ενδιαφέρον.
- Η εκτέλεση ενός προγράμματος είναι ορατή, αποκαλύπτοντας έτσι τη σημασία των διδασκόμενων δομών, καθώς και τις έννοιες που σχετίζονται με τη δομή και την εκτέλεση των προγραμμάτων.
- Υπάρχει δυνατότητα προσαρμογής του μικρόκοσμου στις ανάγκες του κοινού στο οποίο απευθύνεται.
Μικρόκοσμοι βασισμένοι στο ρομπότ Karel
Ένας από τους πιο δημοφιλείς μικρόκοσμους προγραμματισμού όπως επισημαίνουν αρκετοί ερευνητές (Brusilovsky, Calabrese, Hvorenky, Miller, Kouchnirenko, 1997) είναι ο "Karel the Robot' (Richard E. Pattis, 1995) που σχεδιάστηκε προκειμένου να χρησιμοποιηθεί για το μάθημα της εισαγωγής στον δομημένο προγραμματισμό. Ο Karel, ο πρωταγωνιστής του μικρόκοσμου, εκτελεί διάφορες αποστολές (προγράμματα) σε ένα κόσμο που αποτελείται από οριζόντιους δρόμους και κάθετες λεωφόρους. Στον κόσμο του Karel μπορεί να υπάρχουν τμήματα τοίχου που τοποθετούνται μεταξύ των διασταυρώσεων δημιουργώντας εμπόδια (π.χ. λαβύρινθους) που καλείται να ξεπεράσει ο Karel και beepers, μικροί πλαστικοί κώνοι που παράγουν ένα ήχο (μπιπ). Ο Karel έχει τη δυνατότητα να κινείται προς την τρέχουσα κατεύθυνση κατά 1 μπλοκ, να στρίβει κατά 90 μοίρες, να εντοπίζει beepers που βρίσκονται στην ίδια διασταύρωση μ' αυτόν, να εντοπίζει τοίχους που βρίσκονται μπροστά του σε απόσταση μισού μπλοκ χρησιμοποιώντας μια κάμερα, να σηκώνει και να κατεβάζει beepers με το μηχανικό του χέρι και τέλος μπορεί να καθορίζει προς ποια κατεύθυνση βλέπει χρησιμοποιώντας την πυξίδα του. Η γλώσσα προγραμματισμού εκτός από τις εντολές ελέγχου του Karel (move, turnleft, pickbeeper, putbeeper) περιλαμβάνει όλες τις βασικές δομές ελέγχου (if, if-else, while, loop).
Η μεταγενέστερη έκδοση του ρομπότ Karel, γνωστή ως Karel++ (Bergin et al., 1997), υποστηρίζει τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού. Στον Karel++ υπάρχουν δύο μοντέλα (κλάσεις) ρομπότ που ανταποκρίνονται σε ένα περιορισμένο αριθμό μηνυμάτων. Οι μαθητές μπορούν να δημιουργήσουν ρομπότ των δύο βασικών μοντέλων, αλλά για πιο απαιτητικές αποστολές μπορούν να δημιουργήσουν και τα δικά τους μοντέλα ρομπότ. Τα νέα μοντέλα ρομπότ κληρονομούν όλες τις δυνατότητες των βασικών μοντέλων και τις επεκτείνουν. Στη συνέχεια, περιγράφονται τα βασικά χαρακτηριστικά δύο υλοποιήσεων που διατίθενται ελεύθερα, ενώ στην επόμενη ενότητα περιγράφεται μια τρίτη υλοποίηση που εκτός από τον μικρόκοσμο ενσωματώνει και διδακτικό υλικό.
Η μεταγενέστερη έκδοση του ρομπότ Karel, γνωστή ως Karel++ (Bergin et al., 1997), υποστηρίζει τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού. Στον Karel++ υπάρχουν δύο μοντέλα (κλάσεις) ρομπότ που ανταποκρίνονται σε ένα περιορισμένο αριθμό μηνυμάτων. Οι μαθητές μπορούν να δημιουργήσουν ρομπότ των δύο βασικών μοντέλων, αλλά για πιο απαιτητικές αποστολές μπορούν να δημιουργήσουν και τα δικά τους μοντέλα ρομπότ. Τα νέα μοντέλα ρομπότ κληρονομούν όλες τις δυνατότητες των βασικών μοντέλων και τις επεκτείνουν. Στη συνέχεια, περιγράφονται τα βασικά χαρακτηριστικά δύο υλοποιήσεων που διατίθενται ελεύθερα, ενώ στην επόμενη ενότητα περιγράφεται μια τρίτη υλοποίηση που εκτός από τον μικρόκοσμο ενσωματώνει και διδακτικό υλικό.
JKarelRobot
http://math.otterbein.edu/home/Class/Csc120/WebPages/KarelStart.html
Ο μικρόκοσμος JKarelRobot (Buck and Stucki, 2000) βασίζεται στο ρομπότ Karel (Pattis et al. 1995) και παρέχει τη δυνατότητα προγραμματισμού του ομώνυμου ρομπότ χρησιμοποιώντας μια γλώσσα προγραμματισμού που μοιάζει με την Pascal, τη Java ή τη Lisp. Ο μικρόκοσμος JKarelRobot αποτελείται από έξι διαφορετικές καρτέλες:
Στην ουσία, στο περιβάλλον του JKarelRobot η δημιουργία της αρχικής κατάστασης του κόσμου, η ανάπτυξη του προγράμματος και η εκτέλεση του πραγματοποιούνται σε 3 διαφορετικές καρτέλες. Επιπλέον, παρόλο που ο σπουδαστής χρειάζεται σε κάθε καρτέλα να εκτελέσει μια συγκεκριμένη ακολουθία ενεργειών πατώντας κάποια κουμπιά, όλες οι καρτέλες και τα κουμπιά είναι συνεχώς ενεργά και δεν παρέχεται καμία καθοδήγηση στον χρήστη.
Όπως ήδη αναφέρθηκε στην αρχή, ο σπουδαστής έχει τη δυνατότητα να αναπτύξει τα προγράμματά του σε μια Java-like γλώσσα. Ωστόσο, στα προγράμματα δεν χρησιμοποιούνται εντολές δημιουργίας και αρχικοποίησης αντικειμένων, αφού το περιβάλλον υποστηρίζει τη χρήση ενός μόνο αντικειμένου (ρομπότ) το οποίο αρχικοποιείται στο πλαίσιο καθορισμού της αρχικής κατάστασης του κόσμου. Ο περιορισμός αυτός, δηλαδή η ύπαρξη ενός μόνο αντικειμένου στο περιβάλλον του JKarelRobot μπορεί να οδηγήσει τους σπουδαστές στην παρανόηση ότι κλάση και αντικείμενο είναι έννοιες ταυτόσημες. Επίσης, στο tutorial του JKarelRobot δεν γίνεται καμία αναφορά στις βασικές έννοιες του αντικειμενοστρεφούς παραδείγματος προγραμματισμού: αντικείμενο, μήνυμα, κλάση, κληρονομικότητα, πολυμορφισμός.
- την καρτέλα World, στην οποία ο σπουδαστής μπορεί να δημιουργήσει και να ανακαλέσει καταστάσεις του κόσμου, καθώς επίσης και να καθορίσει την αρχική κατάσταση του Karel που είναι το μοναδικό ρομπότ που μπορεί να χρησιμοποιηθεί,
- την καρτέλα Program όπου ο σπουδαστής αναπτύσσει, μεταγλωττίζει και διαχειρίζεται τα προγράμματα του,
- την καρτέλα Execute στην οποία ο σπουδαστής εκτελεί τα προγράμματά του βήμα προς βήμα είτε προς τα εμπρός είτε προς τα πίσω.
- την καρτέλα Instant όπου ο σπουδαστής μπορεί να γράψει μία ή περισσότερες εντολές και να τις εκτελέσει όπως σε ένα διερμηνευτή,
- την καρτέλα Flow που χρησιμοποιείται για την ανάπτυξη διαγραμμάτων ροής για υπάρχοντα προγράμματα,
- την καρτέλα Help στην οποία παρέχεται ένα πολύ σύντομο tutorial.
Στην ουσία, στο περιβάλλον του JKarelRobot η δημιουργία της αρχικής κατάστασης του κόσμου, η ανάπτυξη του προγράμματος και η εκτέλεση του πραγματοποιούνται σε 3 διαφορετικές καρτέλες. Επιπλέον, παρόλο που ο σπουδαστής χρειάζεται σε κάθε καρτέλα να εκτελέσει μια συγκεκριμένη ακολουθία ενεργειών πατώντας κάποια κουμπιά, όλες οι καρτέλες και τα κουμπιά είναι συνεχώς ενεργά και δεν παρέχεται καμία καθοδήγηση στον χρήστη.
Όπως ήδη αναφέρθηκε στην αρχή, ο σπουδαστής έχει τη δυνατότητα να αναπτύξει τα προγράμματά του σε μια Java-like γλώσσα. Ωστόσο, στα προγράμματα δεν χρησιμοποιούνται εντολές δημιουργίας και αρχικοποίησης αντικειμένων, αφού το περιβάλλον υποστηρίζει τη χρήση ενός μόνο αντικειμένου (ρομπότ) το οποίο αρχικοποιείται στο πλαίσιο καθορισμού της αρχικής κατάστασης του κόσμου. Ο περιορισμός αυτός, δηλαδή η ύπαρξη ενός μόνο αντικειμένου στο περιβάλλον του JKarelRobot μπορεί να οδηγήσει τους σπουδαστές στην παρανόηση ότι κλάση και αντικείμενο είναι έννοιες ταυτόσημες. Επίσης, στο tutorial του JKarelRobot δεν γίνεται καμία αναφορά στις βασικές έννοιες του αντικειμενοστρεφούς παραδείγματος προγραμματισμού: αντικείμενο, μήνυμα, κλάση, κληρονομικότητα, πολυμορφισμός.
Jeroo
http://home.cc.gatech.edu/dorn/jeroo
Ο μικρόκοσμος Jeroo (Sanders and Dorn, 2003) βασίζεται στο ρομπότ Karel, αλλά χρησιμοποιεί μια γλώσσα προγραμματισμού που επιτρέπει μια πιο εύκολη μετάβαση στη C++ και τη Java. Το γραφικό ενδιάμεσο αποτελείται από ένα μόνο παράθυρο, ενώ το περιβάλλον υποστηρίζει την ανάπτυξη αναδρομικών μεθόδων και τη βηματική εκτέλεση των προγραμμάτων. Ωστόσο, ο μικρόκοσμος Jeroo παρουσιάζει τους εξής
περιορισμούς: (1) υπάρχει μία μόνο κλάση και δεν υπάρχει δυνατότητα δημιουργίας
νέων κλάσεων, (2) οι σπουδαστές μπορούν να δημιουργήσουν μέχρι τέσσερα
αντικείμενα της υπάρχουσας κλάσης, (3) δεν υποστηρίζεται η έννοια της
κληρονομικότητας, (4) οι σπουδαστές μπορούν να επεκτείνουν την κλάση Jeroo με void μεθόδους, αλλά δεν μπορούν να
αναπτύξουν κατηγορήματα (predicates).
Σύμφωνα βέβαια με τους δημιουργούς του Jeroo, οι παραπάνω δυνατότητες δεν
ενσωματώθηκαν στον μικρόκοσμο γιατί θεωρήθηκαν περιττές, αφού σκοπός του
μικρόκοσμου είναι οι σπουδαστές να μάθουν τις βασικές έννοιες που σχετίζονται
με τη χρήση αντικειμένων για την επίλυση προβλημάτων και την ανάπτυξη μεθόδων
που καθορίζουν τη συμπεριφορά των αντικειμένων.
ObjectKarel
http://users.uom.gr/~stelios/obiectKarel.zip
O μικρόκοσμος objectKarel βασίζεται στον Karel++ και υποστηρίζει τη διδασκαλία και εκμάθηση όλων των βασικών αντικειμενοστρεφών εννοιών: αντικείμενο, μήνυμα, κλάση, κληρονομικότητα, πολυμορφισμός και υποσκέλιση. Επιπλέον, υποστηρίζει τις καθιερωμένες δομές επιλογής και επανάληψης. Ο μικρόκοσμος objectKarel ενσωματώνει:
Η διδακτική λογική που υιοθετήθηκε κατά τη σχεδίαση του μικρόκοσμου, αλλά και την προετοιμασία του σχετικού διδακτικού υλικού, αναλύεται διεξοδικά στα σχετικά επιμορφωτικά σενάρια.
Στο σημείο αυτό αξίζει ωστόσο να αναφερθούν κάποιες επιπρόσθετες δυνατότητες που παρέχονται στον εκπαιδευτικό. Για τα περισσότερα προβλήματα που καλούνται να λύσουν οι μαθητές πρέπει να υπάρχει μια συγκεκριμένη αρχική κατάσταση του κόσμου, η οποία δημιουργείται χρησιμοποιώντας τεχνικές άμεσης διαχείρισης (κάνοντας κλικ μεταξύ διασταυρώσεων εμφανίζονται τμήματα τοίχου και κάνοντας κλικ πάνω σε διασταυρώσεις beepers). Επίσης, υπάρχει δυνατότητα επέμβασης στην τρέχουσα κατάσταση του κόσμου ανά πάσα στιγμή. Ο εκπαιδευτικός μπορεί, στο πλαίσιο παρουσίασης παραδειγμάτων, να αλλάξει την κατάσταση του κόσμου κατά την εκτέλεση ενός προγράμματος και να ζητήσει από τους μαθητές να προσδιορίσουν ποιο θα είναι το αποτέλεσμα της εκτέλεσής του από εκείνο το σημείο και μετά, ελέγχοντας έτσι το βαθμό κατανόησης των διδασκόμενων εννοιών. Επίσης, ο μαθητής έχει τη δυνατότητα να πειραματιστεί και να διερευνήσει ποιο θα είναι το αποτέλεσμα της εκτέλεσης ενός τμήματος κώδικα ή ενός προγράμματος για μια διαφορετική κατάσταση του κόσμου και να λύσει τυχόν απορίες, χωρίς να απαιτείται να διακόψει την εκτέλεση του προγράμματος, να αλλάξει την κατάσταση του κόσμου και να εκτελέσει ξανά το πρόγραμμα από την αρχή.
Επίσης, στον μικρόκοσμο objectKarel έχει ενσωματωθεί η δυνατότητα καταγραφής των ενεργειών των σπουδαστών κατά την ανάπτυξη και αποσφαλμάτωση των προγραμμάτων. Συγκεκριμένα, κάθε φορά που ο μαθητής μεταγλωττίζει ένα πρόγραμμά το σύστημα αποθηκεύει αυτόματα τόσο τον πηγαίο κώδικα όσο και τα αποτελέσματα της μεταγλώττισης. Η ιστορία των μεταγλωττίσεων παρουσιάζεται σε ένα διαφορετικό παράθυρο με τη μορφή ενός δένδρου δύο επιπέδων. Στο πρώτο επίπεδο παρουσιάζονται τα ονόματα όλων των αρχείων των προγραμμάτων και στο δεύτερο επίπεδο ο αύξων αριθμός, η ημερομηνία και η ώρα της κάθε έκδοσης. Οι γραμμές του πηγαίου κώδικα είναι αριθμημένες για την ευκολότερη μελέτη των εκδόσεων ενός προγράμματος. Η δυνατότητα της καταγραφής των ενεργειών των μαθητών επιτρέπει: (1) την καταγραφή των δυσκολιών και των παρανοήσεων των μαθητών κατά την εισαγωγή τους στον αντικειμενοστρεφή προγραμματισμό, (2) τη διερεύνηση των στρατηγικών επίλυσης προβλημάτων των μαθητών, αφού κάθε έκδοση του προγράμματος αντιπροσωπεύει ένα βήμα της διαδικασίας επίλυσής τους, και (3) στο διδάσκοντα να προσαρμόσει το μάθημα στις ανάγκες των μαθητών.
- το απαραίτητο διδακτικό υλικό (σύντομη και περιεκτική θεωρία, εγχειρίδιο χρήσης)
- δραστηριότητες για την εξοικείωση των μαθητών με τις έννοιες, πριν την εφαρμογή τους στο πλαίσιο ανάπτυξης προγραμμάτων
- ένα συντάκτη δομής για την εύκολη ανάπτυξη προγραμμάτων και την αποφυγή επικέντρωσης στις λεπτομέρειες της γλώσσας προγραμματισμού
- τη δυνατότητα της επεξηγηματικής οπτικοποίησης, εμφάνισης δηλαδή μηνυμάτων σε φυσική γλώσσα για την τρέχουσα κάθε φορά εντολή κατά τη βηματική εκτέλεση των προγραμμάτων.
Η διδακτική λογική που υιοθετήθηκε κατά τη σχεδίαση του μικρόκοσμου, αλλά και την προετοιμασία του σχετικού διδακτικού υλικού, αναλύεται διεξοδικά στα σχετικά επιμορφωτικά σενάρια.
Στο σημείο αυτό αξίζει ωστόσο να αναφερθούν κάποιες επιπρόσθετες δυνατότητες που παρέχονται στον εκπαιδευτικό. Για τα περισσότερα προβλήματα που καλούνται να λύσουν οι μαθητές πρέπει να υπάρχει μια συγκεκριμένη αρχική κατάσταση του κόσμου, η οποία δημιουργείται χρησιμοποιώντας τεχνικές άμεσης διαχείρισης (κάνοντας κλικ μεταξύ διασταυρώσεων εμφανίζονται τμήματα τοίχου και κάνοντας κλικ πάνω σε διασταυρώσεις beepers). Επίσης, υπάρχει δυνατότητα επέμβασης στην τρέχουσα κατάσταση του κόσμου ανά πάσα στιγμή. Ο εκπαιδευτικός μπορεί, στο πλαίσιο παρουσίασης παραδειγμάτων, να αλλάξει την κατάσταση του κόσμου κατά την εκτέλεση ενός προγράμματος και να ζητήσει από τους μαθητές να προσδιορίσουν ποιο θα είναι το αποτέλεσμα της εκτέλεσής του από εκείνο το σημείο και μετά, ελέγχοντας έτσι το βαθμό κατανόησης των διδασκόμενων εννοιών. Επίσης, ο μαθητής έχει τη δυνατότητα να πειραματιστεί και να διερευνήσει ποιο θα είναι το αποτέλεσμα της εκτέλεσης ενός τμήματος κώδικα ή ενός προγράμματος για μια διαφορετική κατάσταση του κόσμου και να λύσει τυχόν απορίες, χωρίς να απαιτείται να διακόψει την εκτέλεση του προγράμματος, να αλλάξει την κατάσταση του κόσμου και να εκτελέσει ξανά το πρόγραμμα από την αρχή.
Επίσης, στον μικρόκοσμο objectKarel έχει ενσωματωθεί η δυνατότητα καταγραφής των ενεργειών των σπουδαστών κατά την ανάπτυξη και αποσφαλμάτωση των προγραμμάτων. Συγκεκριμένα, κάθε φορά που ο μαθητής μεταγλωττίζει ένα πρόγραμμά το σύστημα αποθηκεύει αυτόματα τόσο τον πηγαίο κώδικα όσο και τα αποτελέσματα της μεταγλώττισης. Η ιστορία των μεταγλωττίσεων παρουσιάζεται σε ένα διαφορετικό παράθυρο με τη μορφή ενός δένδρου δύο επιπέδων. Στο πρώτο επίπεδο παρουσιάζονται τα ονόματα όλων των αρχείων των προγραμμάτων και στο δεύτερο επίπεδο ο αύξων αριθμός, η ημερομηνία και η ώρα της κάθε έκδοσης. Οι γραμμές του πηγαίου κώδικα είναι αριθμημένες για την ευκολότερη μελέτη των εκδόσεων ενός προγράμματος. Η δυνατότητα της καταγραφής των ενεργειών των μαθητών επιτρέπει: (1) την καταγραφή των δυσκολιών και των παρανοήσεων των μαθητών κατά την εισαγωγή τους στον αντικειμενοστρεφή προγραμματισμό, (2) τη διερεύνηση των στρατηγικών επίλυσης προβλημάτων των μαθητών, αφού κάθε έκδοση του προγράμματος αντιπροσωπεύει ένα βήμα της διαδικασίας επίλυσής τους, και (3) στο διδάσκοντα να προσαρμόσει το μάθημα στις ανάγκες των μαθητών.
Εκπαιδευτικά περιβάλλοντα προγραμματισμού
Όπως ήδη αναφέρθηκε, για τη διδασκαλία του αντικειμενοστρεφούς προγραμματισμού σε μαθητές προτείνεται η χρήση ενός μικρόκοσμου. Ωστόσο, στην περίπτωση που η διδασκαλία των αρχών του αντικειμενοστρεφούς προγραμματισμού γίνει σε μαθητές με εμπειρία στον προγραμματισμό, όπως για παράδειγμα σε μαθητές Τεχνικών/Επαγγελματικών Λυκείων ή Σχολών σχετικών ειδικοτήτων μπορεί να χρησιμοποιηθεί ένα εκπαιδευτικό προγραμματιστικό περιβάλλον που υποστηρίζει μια συμβατική γλώσσα προγραμματισμού. Το πιο δημοφιλές εκπαιδευτικό περιβάλλον προγραμματισμού είναι το BlueJ (http://www.bluei.org), το οποίο χρησιμοποιεί τη Java.
Ιδιαίτερο ενδιαφέρον παρουσιάζει επίσης το περιβάλλον Greenfoot (http://www.greenfoot.org), το οποίο βασίστηκε στο BlueJ χρησιμοποιεί ως γλώσσα προγραμματισμού τη Java, αλλά υιοθετεί στοιχεία των μικρόκοσμων προγραμματισμού. Συγκεκριμένα, δίνει τη δυνατότητα δημιουργίας σεναρίων που οπτικοποιούνται και μπορούν να χρησιμοποιηθούν ως πλαίσιο διδασκαλίας όλων των αντικειμενοστρεφών εννοιών.
Ιδιαίτερο ενδιαφέρον παρουσιάζει επίσης το περιβάλλον Greenfoot (http://www.greenfoot.org), το οποίο βασίστηκε στο BlueJ χρησιμοποιεί ως γλώσσα προγραμματισμού τη Java, αλλά υιοθετεί στοιχεία των μικρόκοσμων προγραμματισμού. Συγκεκριμένα, δίνει τη δυνατότητα δημιουργίας σεναρίων που οπτικοποιούνται και μπορούν να χρησιμοποιηθούν ως πλαίσιο διδασκαλίας όλων των αντικειμενοστρεφών εννοιών.
Ενδεικτικές δραστηριότητες - σενάρια
Στο αρχείο "Δραστηριότητες_BlueJ.pdf" παρουσιάζονται τρία φύλλα δραστηριοτήτων για την εισαγωγή των μαθητών στις βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού με το περιβάλλον BlueJ. Σε αυτά τα φύλλα δραστηριοτήτων παρουσιάζονται κάποιες ενδεικτικές εισαγωγικές δραστηριότητες για τη διδασκαλία των πιο βασικών αντικειμενοστρεφών εννοιών στο περιβάλλον του BlueJ, αξιοποιώντας τη διδακτική προσέγγιση που παρουσιάστηκε στις προηγούμενες ενότητες.
8. Δραστηριότητες
Δραστηριότητα 1
Αναπτύξτε μία εισαγωγική εκπαιδευτική δραστηριότητα (ή φύλλο δραστηριοτήτων) που να έχει ως στόχο την ανάδειξη της αντικειμενοστρεφούς τεχνικής σχεδίασης στο πλαίσιο επίλυσης ενός απλού προβλήματος. Η δραστηριότητα αυτή θα έχει ως στόχο τον εντοπισμό των κλάσεων (ή της κλάσης) που απαιτούνται για την αναπαράσταση των αντικειμένων που προϋποθέτει η επίλυση του προβλήματος, καθώς επίσης και των ιδιοτήτων και των λειτουργιών των αντικειμένων που αναπαριστά η κάθε κλάση (και όχι την ανάπτυξη κώδικα).
Δραστηριότητα 2
Αφού μελετήσετε τις συνήθεις δυσκολίες και παρανοήσεις που συνοδεύουν την εκμάθηση του αντικειμενοστρεφούς προγραμματισμού, εξετάστε ξανά το εκπαιδευτικό υλικό που αναπτύξατε στο πλαίσιο της δραστηριότητας 1 και κάντε τις απαραίτητες αλλαγές, έτσι ώστε:
Δραστηριότητα 3
Αναπτύξτε ένα φύλλο ελέγχου που να έχει ως στόχο τον εντοπισμό παρανοήσεων (λανθασμένων αντιλήψεων) των μαθητών για τις βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού: αντικείμενο, κλάση, μέθοδος, μήνυμα, πεδία. Οι δραστηριότητες που θα αναπτύξετε μπορεί να περιλαμβάνουν, για παράδειγμα, ένα σταυρόλεξο, ένα quiz με ερωτήσεις κλειστού τύπου, ή ακόμα και τη σχεδίαση από τους μαθητές ενός εννοιολογικού χάρτη.
Στη συνέχεια, παρουσιάζονται κάποιες ενδεικτικές ερωτήσεις κλειστού τύπου που μπορείτε να συμπεριλάβετε:
ΕΡΩΤΗΣΗ 1 - Επιλέξτε τη μοναδική σωστή απάντηση:
ΕΡΩΤΗΣΗ 2 - Επιλέξτε τη μοναδική λάθος απάντηση:
ΕΡΩΤΗΣΗ 3 - Επιλέξτε τη σωστή απάντηση:
ΕΡΩΤΗΣΗ 4 - Επιλέξτε τη λάθος απάντηση:
ΕΡΩΤΗΣΗ 5 - Επιλέξτε τη μοναδική σωστή απάντηση:
ΕΡΩΤΗΣΗ 6 - Επιλέξτε τη μοναδική σωστή απάντηση:
Δραστηριότητα 4
Λαμβάνοντας υπόψη τα προαναφερθέντα διδακτικά προβλήματα, καθώς επίσης και το γεγονός ότι η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού θα πραγματοποιηθεί σε μαθητές με προηγούμενη εμπειρία στον διαδικαστικό προγραμματισμό, να σχεδιάσετε εισαγωγικές δραστηριότητες με στόχο:
Δραστηριότητα 5
Συγκρίνετε τους μικρόκοσμους JKarelRobot, Jeroo και objectKarel:
Αναπτύξτε μία εισαγωγική εκπαιδευτική δραστηριότητα (ή φύλλο δραστηριοτήτων) που να έχει ως στόχο την ανάδειξη της αντικειμενοστρεφούς τεχνικής σχεδίασης στο πλαίσιο επίλυσης ενός απλού προβλήματος. Η δραστηριότητα αυτή θα έχει ως στόχο τον εντοπισμό των κλάσεων (ή της κλάσης) που απαιτούνται για την αναπαράσταση των αντικειμένων που προϋποθέτει η επίλυση του προβλήματος, καθώς επίσης και των ιδιοτήτων και των λειτουργιών των αντικειμένων που αναπαριστά η κάθε κλάση (και όχι την ανάπτυξη κώδικα).
Δραστηριότητα 2
Αφού μελετήσετε τις συνήθεις δυσκολίες και παρανοήσεις που συνοδεύουν την εκμάθηση του αντικειμενοστρεφούς προγραμματισμού, εξετάστε ξανά το εκπαιδευτικό υλικό που αναπτύξατε στο πλαίσιο της δραστηριότητας 1 και κάντε τις απαραίτητες αλλαγές, έτσι ώστε:
- να δοθεί έμφαση στις βασικές αντικειμενοστρεφείς έννοιες
- να αντιμετωπιστούν στο μέγιστο δυνατό βαθμό οι σχετικές δυσκολίες των μαθητών
- να αποφευχθεί η δημιουργία των παρανοήσεων που έχουν καταγραφεί στη διεθνή βιβλιογραφία.
Δραστηριότητα 3
Αναπτύξτε ένα φύλλο ελέγχου που να έχει ως στόχο τον εντοπισμό παρανοήσεων (λανθασμένων αντιλήψεων) των μαθητών για τις βασικές έννοιες του αντικειμενοστρεφούς προγραμματισμού: αντικείμενο, κλάση, μέθοδος, μήνυμα, πεδία. Οι δραστηριότητες που θα αναπτύξετε μπορεί να περιλαμβάνουν, για παράδειγμα, ένα σταυρόλεξο, ένα quiz με ερωτήσεις κλειστού τύπου, ή ακόμα και τη σχεδίαση από τους μαθητές ενός εννοιολογικού χάρτη.
Στη συνέχεια, παρουσιάζονται κάποιες ενδεικτικές ερωτήσεις κλειστού τύπου που μπορείτε να συμπεριλάβετε:
ΕΡΩΤΗΣΗ 1 - Επιλέξτε τη μοναδική σωστή απάντηση:
- Μια κλάση είναι μια συλλογή αντικειμένων.
- Μια κλάση είναι ένα πρότυπο δημιουργίας αντικειμένων.
- Οι έννοιες κλάση και αντικείμενο είναι έννοιες ταυτόσημες.
- όλα τα παραπάνω.
ΕΡΩΤΗΣΗ 2 - Επιλέξτε τη μοναδική λάθος απάντηση:
- Δύο αντικείμενα της ίδιας κλάσης μπορούν να έχουν τις ίδιες τιμές πεδίων.
- Μπορεί να χρησιμοποιηθεί το ίδιο όνομα (αναγνωριστικό) για δύο αντικείμενα, εφόσον αυτά έχουν κάποια διαφορετική τιμή σε κάποιο από τα πεδία τους.
- Από μια κλάση μπορούμε να δημιουργήσουμε όσα αντικείμενα θέλουμε.
ΕΡΩΤΗΣΗ 3 - Επιλέξτε τη σωστή απάντηση:
- Μια μέθοδος μπορεί να κληθεί για οποιοδήποτε αντικείμενο μιας κλάσης.
- Μπορούμε να καλέσουμε μια μέθοδο για ένα αντικείμενο μόνο μία φορά.
- Όλα τα παραπάνω.
ΕΡΩΤΗΣΗ 4 - Επιλέξτε τη λάθος απάντηση:
- Οι μέθοδοι εκτελούνται σύμφωνα με τη σειρά που εμφανίζονται στον ορισμό της κλάσης.
- Κάθε μέθοδος μπορεί να κληθεί μόνο μία φορά.
- Μέσω μιας μεθόδου μπορεί να γίνει κλήση άλλης μεθόδου.
- Τα δύο πρώτα.
- Τα τρία πρώτα.
ΕΡΩΤΗΣΗ 5 - Επιλέξτε τη μοναδική σωστή απάντηση:
- Η εκτέλεση μιας μεθόδου μπορεί να αλλάξει την κατάσταση ενός αντικειμένου.
- Το αποτέλεσμα της εκτέλεσης μιας συγκεκριμένης μεθόδου είναι πάντα το ίδιο ανεξάρτητα από την κατάσταση του αντικειμένου.
- Όλα τα παραπάνω.
ΕΡΩΤΗΣΗ 6 - Επιλέξτε τη μοναδική σωστή απάντηση:
- Ένα αντικείμενο ανταποκρίνεται σε κάποιο μήνυμα αρκεί αυτό να έχει οριστεί σε κάποια από τις κλάσεις που υπάρχουν στο πρόγραμμα.
- Ένα αντικείμενο ανταποκρίνεται σε ένα μήνυμα μόνο εφόσον έχει οριστεί η αντίστοιχη μέθοδος στην κλάση από την οποία προέρχεται το αντικείμενο.
- Ένα αντικείμενο ανταποκρίνεται σε ένα μήνυμα πάντα με τον ίδιο ακριβώς τρόπο.
- Όλα τα παραπάνω.
Δραστηριότητα 4
Λαμβάνοντας υπόψη τα προαναφερθέντα διδακτικά προβλήματα, καθώς επίσης και το γεγονός ότι η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού θα πραγματοποιηθεί σε μαθητές με προηγούμενη εμπειρία στον διαδικαστικό προγραμματισμό, να σχεδιάσετε εισαγωγικές δραστηριότητες με στόχο:
- να κατανοήσουν οι μαθητές τις βασικές διαφορές σχεδίασης της λύσης σε ένα πρόβλημα με τις τεχνικές του διαδικαστικού και του αντικειμενοστρεφούς προγραμματισμού
- να μην ταυτίσουν την έννοια της διαδικασίας/συνάρτησης ενός διαδικαστικού προγράμματος με την έννοια της μεθόδου σε ένα αντικειμενοστρεφές πρόγραμμα.
Δραστηριότητα 5
Συγκρίνετε τους μικρόκοσμους JKarelRobot, Jeroo και objectKarel:
- καταγράφοντας τα πλεονεκτήματα και τα μειονεκτήματά τους
- τον βαθμό στον οποίο πιστεύετε ότι κάθε ένας από τους τρεις μικρόκοσμους βοηθάει στην αντιμετώπιση των γενικών δυσκολιών που αναφέρονται στην αρχή της ενότητας 7
- αναφέροντας σε ποια περίπτωση θεωρείτε ότι είναι πιο κατάλληλος κάθε ένας από τους τρεις μικρόκοσμους.
9. Χρήση εξωτερικών πηγών
Alphonce, C. & Ventura, P. (2002), Object-Orientation in CS1-CS2 by design, Proceedings of the 7th Annual Conference on Innovation and Technology in Computer Science Education, 7074.
Bergin, J., Stehlik, M., Roberts, J. and Pattis, R. (1997), Karel++ - A Gentle Introduction to the Art of Object-Oriented Programming, John Wiley & Sons, New York
Bruce, K. Danyluk, A. & Murtagh, T. (2001), A Library to Support a Graphics-Based Objects- First Approach to CS1, ACM SIGCSE Bulletin, Vol. 33, No.1, 6-10.
Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A. and Miller P. (1997), Minilanguages: a way to learn programming principles, Journal of Education and Information Technologies, 2, 65-83
Buck, D. and Stucki, D.J. (2000), JKarelRobot: A Case Study in Supporting Levels of Cognitive Development in the Computer Science Curriculum, ACM SIGCSE Bulletin, 33(1), 16-20
Christensen, H. & Caspersen, M. (2002), Frameworks in CS1 - a Different Way of Introducing Event-driven Programming, Proceedings of the 7th Annual Conference on Innovation and Technology in computer Science Education, 75-79.
Decker, R. & Hirshfield, S. (1994), The Top 10 Reasons Why Object-Oriented Programming Can't Be Taught In CS1, ACM SIGCSE Bulletin, Vol. 26, No. 1, 51-55.
Fleury, A. E. (2001), Encapsualtion and reuse as viewed by java students, ACM SIGCSE Bulletin, Vol. 33, Issue 1, 189-193.
Hadjerrouit, S. (1998), A Constructivist Framework for Integrating the Java Paradigm into the Undergraduate Curriculum, ACM SIGCSE Bulletin, Vol. 30, Issue 3, 105-107.
Hadjerrouit, S. (1999), A constructivist approach to object-oriented design and programming, ACM SIGCSE Bulletin, Vol. 31, Issue 3, 171-174.
Holland, S. Griffiths, R. & Woodman, M. (1997), Avoiding object misconceptions, ACM SIGCSE Bulletin, Vol. 29, No. 1, 131-134.
Kolling, M. & Rosenberg, J. (2001), Guidelines for Teaching Object Orientation with Java, ACM SIGCSE Bulletin, Vol. 33 Issue 3, 33-36.
Pattis, R. E., Roberts, J. and Stehlik, M. (1995), Karel - The Robot, A Gentle Introduction to the Art of Programming (2nd ed.), John Wiley & Sons, New York
Ragonis, N. & Ben-Ari, M. (2005), A Long-Term Investigation of the Comprehension of OOP Concepts by Novices, International Journal of Computer Science Education, 15(3), 203-221.
Sanders, D. and Dorn, B. (2003), Jeroo: A Tool for Introducing Object-Oriented Programming, ACM SIGCSE Bulletin, 35 (1), 201-204
Tempte, M C. (1991), Let's Begin Introducing the Object-Oriented Paradigm, ACM SIGCSE Bulletin, Vol. 23, No. I, 338-342.
Wick, M. (1995), On Using C++ and Object-Orientation in CS1: the Message is still more important than the Medium, ACM SIGCSE Bulletin, Vol. 27, Issue 1, 322-326.
Xinogalos, S., and Satratzemi, M. (2005a), The Hands-on Activities of the Programming Microworld objectKarel, In Proceedings of the 10th annual ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE 2005), 384
Xinogalos, S., and Satratzemi, M. (2005b), Using Hands-on Activities for Motivating Students with OOP Concepts Before They Are Asked to Implement Them, In Proceedings of the 10th annual Conference on Innovation and Technology in Computer Science Education (ITiCSE 2005), 380
Xinogalos, S., Satratzemi, M. (2005) The Hands-on Activities of the Programming Microworld objectKarel, ACM SIGCSE Bulletin, Vol. 37, Number 3, September 2005, 384.
Xinogalos, S., Satratzemi, M. (2005) Using Hands-on Activities for Motivating Students with OOP Concepts Before They Are Asked to Implement Them, ACM SIGCSE Bulletin, Vol. 37, Number 3, September 2005, 380.
Xinogalos, S., Satratzemi, M. and Dagdilelis, V. An introduction to object-oriented programming with a didactic microworld: objectKarel, Computers & Education, Volume 47, Issue 2, September 2006, 148-171
Ξυνόγαλος, Σ. (2002), Εκπαιδευτική Τεχνολογία: Ένας Διδακτικός Μικρόκοσμος για την Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό, Διδακτορική διατριβή, Τμήμα Εφ. Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Ξυνόγαλος, Σ. (2003) «Η διδακτική και μαθησιακή δραστηριότητα στον προγραμματιστικό μικρόκοσμο objectKarel», Πρακτικά του 6ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Διδακτική των ΜαΚηματικών και Πληροφορική στην Εκπαίδευση», Βόλος, 10-13 Οκτωβρίου 2003, 317-326
Ξυνόγαλος, Σ. (2003) «Σενάρια Διδασκαλίας του Προγραμματισμού στη Δευτεροβάθμια Εκπαίδευση», Πρακτικά του 2ου Πανελλήνιου Συνεδρίου των Εκπαιδευτικών για τις ΤΠΕ «Αξιοποίηση των Τεχνολογιών της Πληροφορίας και της Επικοινωνίας στη Διδακτική Πράξη», Σύρος, 9-11 Μαΐου 2003, A' τόμος, 783-795.
Ξυνόγαλος, Σ. (2006), Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με τον μικρόκοσμο objectKarel: εμπειρίες, προβληματισμοί και προτάσεις, Περιοδικό «ΘEMATA στην Εκπαίδευση» ειδικό αφιέρωμα: «Σύγχρονη έρευνα στη Διδακτική της Πληροφορικής: ερευνητικοί άξονες, μέΚοδοι, τεχνικές, εργαλεία», 7:3, 305-327, Ελληνικά γράμματα.
Ξυνόγαλος, Σ. (2008), Μελέτη των Δυσκολιών των Φοιτητών για την Έννοια του «Αντικειμένου» στον Αντικειμενοστραφή Προγραμματισμό, Πρακτικά 4ου Πανελλήνιου Συνεδρίου «Διδακτική της Πληροφορικής», Πάτρα 28-30 Μαρτίου, 91-100.
Ξυνόγαλος, Σ. (2012), Διδακτική Προσέγγιση για τον Αντικειμενοστρεφή Προγραμματισμό: εφαρμογή στο BlueJ, Πρακτικά 6ου Πανελλήνιου Συνεδρίου "Διδακτική της Πληροφορικής", Φλώρινα, 20-22 Απριλίου, 63-72.
Ξυνόγαλος, Σ. & Σατρατζέμη, Μ. (2004) Η Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό: Προβλήματα και Μεθοδολογίες για την Αντιμετώπισή τους, Πρακτικά του 4ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Αθήνα, 29 Σεπτεμβρίου-3 Οκτωβρίου 2004, 133-142 (τόμος Β').
Ξυνόγαλος, Σ., Σατρατζέμη, Μ. & Δαγδιλέλης, Β. (2000) Η εισαγωγή στον προγραμματισμό: Διδακτικές Προσεγγίσεις και Εκπαιδευτικά Εργαλεία, Πρακτικά του 2ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Πάτρα, 13-15 Οκτωβρίου 2000, 115-124.
Σατρατζέμη, Μ., Ξυνόγαλος, Σ. & Δαγδιλέλης, Β. (2006), Εκπαιδευτικά Προγραμματιστικά Περιβάλλοντα για τη Διδασκαλία του Αντικειμενοστραφούς Προγραμματισμού: μια επισκόπηση, Πρακτικά 5ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Θεσσαλονίκη, 5-8 Οκτωβρίου 2006, 899-906.
Bergin, J., Stehlik, M., Roberts, J. and Pattis, R. (1997), Karel++ - A Gentle Introduction to the Art of Object-Oriented Programming, John Wiley & Sons, New York
Bruce, K. Danyluk, A. & Murtagh, T. (2001), A Library to Support a Graphics-Based Objects- First Approach to CS1, ACM SIGCSE Bulletin, Vol. 33, No.1, 6-10.
Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A. and Miller P. (1997), Minilanguages: a way to learn programming principles, Journal of Education and Information Technologies, 2, 65-83
Buck, D. and Stucki, D.J. (2000), JKarelRobot: A Case Study in Supporting Levels of Cognitive Development in the Computer Science Curriculum, ACM SIGCSE Bulletin, 33(1), 16-20
Christensen, H. & Caspersen, M. (2002), Frameworks in CS1 - a Different Way of Introducing Event-driven Programming, Proceedings of the 7th Annual Conference on Innovation and Technology in computer Science Education, 75-79.
Decker, R. & Hirshfield, S. (1994), The Top 10 Reasons Why Object-Oriented Programming Can't Be Taught In CS1, ACM SIGCSE Bulletin, Vol. 26, No. 1, 51-55.
Fleury, A. E. (2001), Encapsualtion and reuse as viewed by java students, ACM SIGCSE Bulletin, Vol. 33, Issue 1, 189-193.
Hadjerrouit, S. (1998), A Constructivist Framework for Integrating the Java Paradigm into the Undergraduate Curriculum, ACM SIGCSE Bulletin, Vol. 30, Issue 3, 105-107.
Hadjerrouit, S. (1999), A constructivist approach to object-oriented design and programming, ACM SIGCSE Bulletin, Vol. 31, Issue 3, 171-174.
Holland, S. Griffiths, R. & Woodman, M. (1997), Avoiding object misconceptions, ACM SIGCSE Bulletin, Vol. 29, No. 1, 131-134.
Kolling, M. & Rosenberg, J. (2001), Guidelines for Teaching Object Orientation with Java, ACM SIGCSE Bulletin, Vol. 33 Issue 3, 33-36.
Pattis, R. E., Roberts, J. and Stehlik, M. (1995), Karel - The Robot, A Gentle Introduction to the Art of Programming (2nd ed.), John Wiley & Sons, New York
Ragonis, N. & Ben-Ari, M. (2005), A Long-Term Investigation of the Comprehension of OOP Concepts by Novices, International Journal of Computer Science Education, 15(3), 203-221.
Sanders, D. and Dorn, B. (2003), Jeroo: A Tool for Introducing Object-Oriented Programming, ACM SIGCSE Bulletin, 35 (1), 201-204
Tempte, M C. (1991), Let's Begin Introducing the Object-Oriented Paradigm, ACM SIGCSE Bulletin, Vol. 23, No. I, 338-342.
Wick, M. (1995), On Using C++ and Object-Orientation in CS1: the Message is still more important than the Medium, ACM SIGCSE Bulletin, Vol. 27, Issue 1, 322-326.
Xinogalos, S., and Satratzemi, M. (2005a), The Hands-on Activities of the Programming Microworld objectKarel, In Proceedings of the 10th annual ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE 2005), 384
Xinogalos, S., and Satratzemi, M. (2005b), Using Hands-on Activities for Motivating Students with OOP Concepts Before They Are Asked to Implement Them, In Proceedings of the 10th annual Conference on Innovation and Technology in Computer Science Education (ITiCSE 2005), 380
Xinogalos, S., Satratzemi, M. (2005) The Hands-on Activities of the Programming Microworld objectKarel, ACM SIGCSE Bulletin, Vol. 37, Number 3, September 2005, 384.
Xinogalos, S., Satratzemi, M. (2005) Using Hands-on Activities for Motivating Students with OOP Concepts Before They Are Asked to Implement Them, ACM SIGCSE Bulletin, Vol. 37, Number 3, September 2005, 380.
Xinogalos, S., Satratzemi, M. and Dagdilelis, V. An introduction to object-oriented programming with a didactic microworld: objectKarel, Computers & Education, Volume 47, Issue 2, September 2006, 148-171
Ξυνόγαλος, Σ. (2002), Εκπαιδευτική Τεχνολογία: Ένας Διδακτικός Μικρόκοσμος για την Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό, Διδακτορική διατριβή, Τμήμα Εφ. Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Ξυνόγαλος, Σ. (2003) «Η διδακτική και μαθησιακή δραστηριότητα στον προγραμματιστικό μικρόκοσμο objectKarel», Πρακτικά του 6ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Διδακτική των ΜαΚηματικών και Πληροφορική στην Εκπαίδευση», Βόλος, 10-13 Οκτωβρίου 2003, 317-326
Ξυνόγαλος, Σ. (2003) «Σενάρια Διδασκαλίας του Προγραμματισμού στη Δευτεροβάθμια Εκπαίδευση», Πρακτικά του 2ου Πανελλήνιου Συνεδρίου των Εκπαιδευτικών για τις ΤΠΕ «Αξιοποίηση των Τεχνολογιών της Πληροφορίας και της Επικοινωνίας στη Διδακτική Πράξη», Σύρος, 9-11 Μαΐου 2003, A' τόμος, 783-795.
Ξυνόγαλος, Σ. (2006), Η διδασκαλία του αντικειμενοστρεφούς προγραμματισμού με τον μικρόκοσμο objectKarel: εμπειρίες, προβληματισμοί και προτάσεις, Περιοδικό «ΘEMATA στην Εκπαίδευση» ειδικό αφιέρωμα: «Σύγχρονη έρευνα στη Διδακτική της Πληροφορικής: ερευνητικοί άξονες, μέΚοδοι, τεχνικές, εργαλεία», 7:3, 305-327, Ελληνικά γράμματα.
Ξυνόγαλος, Σ. (2008), Μελέτη των Δυσκολιών των Φοιτητών για την Έννοια του «Αντικειμένου» στον Αντικειμενοστραφή Προγραμματισμό, Πρακτικά 4ου Πανελλήνιου Συνεδρίου «Διδακτική της Πληροφορικής», Πάτρα 28-30 Μαρτίου, 91-100.
Ξυνόγαλος, Σ. (2012), Διδακτική Προσέγγιση για τον Αντικειμενοστρεφή Προγραμματισμό: εφαρμογή στο BlueJ, Πρακτικά 6ου Πανελλήνιου Συνεδρίου "Διδακτική της Πληροφορικής", Φλώρινα, 20-22 Απριλίου, 63-72.
Ξυνόγαλος, Σ. & Σατρατζέμη, Μ. (2004) Η Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό: Προβλήματα και Μεθοδολογίες για την Αντιμετώπισή τους, Πρακτικά του 4ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Αθήνα, 29 Σεπτεμβρίου-3 Οκτωβρίου 2004, 133-142 (τόμος Β').
Ξυνόγαλος, Σ., Σατρατζέμη, Μ. & Δαγδιλέλης, Β. (2000) Η εισαγωγή στον προγραμματισμό: Διδακτικές Προσεγγίσεις και Εκπαιδευτικά Εργαλεία, Πρακτικά του 2ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Πάτρα, 13-15 Οκτωβρίου 2000, 115-124.
Σατρατζέμη, Μ., Ξυνόγαλος, Σ. & Δαγδιλέλης, Β. (2006), Εκπαιδευτικά Προγραμματιστικά Περιβάλλοντα για τη Διδασκαλία του Αντικειμενοστραφούς Προγραμματισμού: μια επισκόπηση, Πρακτικά 5ου Πανελλήνιου Συνεδρίου με ΔιεΚνή Συμμετοχή «Οι Τεχνολογίες της Πληροφορίας και της Επικοινωνίας στην Εκπαίδευση», Θεσσαλονίκη, 5-8 Οκτωβρίου 2006, 899-906.