Ο προγραμματισμός δεν αποτελεί μια ιδιαίτερη ικανότητα που την κατέχουν μόνο ορισμένοι άνθρωποι. Ο προγραμματισμός συνίσταται απλώς στον συνδυασμό συγκεκριμένων εργαλείων-εντολών ώστε να επιτευχθεί ένα αποτέλεσμα. Είναι σαν να χτίζεις μια κατασκευή με τουβλάκια lego. Συνδυάζεις, ενώνεις, συναρμολογείς και σιγά-σιγά το οικοδόμημα είναι έτοιμο. Προϋποθέτει βέβαια βαθύτερες δεξιότητες όπως η αναλυτική και συνθετική σκέψη, επαρκή φαντασία και θετική στάση απέναντι στην επίλυση προβλημάτων. Αν υπάρχουν ισχυρά κίνητρα και μέσω της διδασκαλίας, της εξάσκησης  και του πειραματισμού όλοι μπορούν να μάθουν προγραμματισμό. "Καλά, είπαμε όλοι, αλλά όχι και ένα 6χρονο παιδί!". Αν ασπάζεστε την προηγούμενη φράση πρέπει οπωσδήποτε να συνεχίσετε το διάβασμα. Όταν λέμε όλοι, εννοούμε όλοι!

Ανακαλυπτική Μάθηση

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

Κάθε αντικείμενο μπορεί να διδαχθεί σε κάθε παιδί σε οποιαδήποτε ηλικία αρκεί να παρουσιαστεί σ' αυτό με μια μορφή κατάλληλη και αποτελεσματική.

Jerome Seymour Bruner, 1973

Επομένως, κατά τον Bruner και ο προγραμματισμός μπορεί να διδαχθεί σε 6χρονα παιδιά υπό προϋποθέσεις. Πριν πάμε όμως σε συγκεκριμένα λογισμικά για τη διδασκαλία του προγραμματισμού, λίγα λόγια για την ανακαλυπτική μάθηση στην οποία στηρίζονται.

Η παραπάνω θέση του Bruner προκάλεσε αρκετές αντιδράσεις όταν πρωτοπαρουσιάστηκε και προσέκρουσε στις μέχρι τότε αποδεκτές αντιλήψεις αλλά σε μεγάλο βαθμό επικράτησε και επέφερε αλλαγές στην εκπαίδευση (στα αναλυτικά προγράμματα αλλά και στην οργάνωση και διεξαγωγή της διδασκαλίας). Σύμφωνα με τη θέση αυτή ο Bruner διαφοροποιείται από τον Piaget που προτείνει μια αντιστοιχία χρονικής ηλικίας και πνευματικής ωρίμανσης. Ωστόσο, η δουλειά του εντάσσεται όπως και του Piaget στον ευρύτερο τομέα της γνωστικής θεωρίας της μάθησης όπου η μάθηση αποτελεί αποτέλεσμα ενεργούς επεξεργασίας πληροφοριών και συνίσταται στην τροποποίηση γνώσεων που ήδη προϋπάρχουν, γνώσεις που το άτομο οικοδομεί με τις εμπειρίες του και με δημιουργικές δραστηριότητες μέσα στο φυσικό και κοινωνικό του περιβάλλον. Ουσιαστικά οι θέσεις του αποτελούν μια αναπροσαρμογή των θέσεων του Piaget σε συνδυασμό με τις θέσεις των Vygotsky και Maslow.

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

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

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

Κατά τον Bruner υπάρχουν τρία στάδια στην γνωστική ανάπτυξη του ατόμου (τρεις τρόπο αναπαράστασης της γνώσης στη γνωστική δομή του ατόμου):

  • Πραξιακή αναπαράσταση (0 έως 3 ετών): Μάθηση με πραγματικά αντικείμενα. Π.χ. το παιδί μετράει μολύβια, χρησιμοποιεί το αριθμητήριο κ.ο.κ. Όλα γίνονται με πρακτικές ενέργειες.
  • Εικονιστική αναπαράσταση (3 έως 8 ετών): Μάθηση με εικόνες, σχεδιαγράμματα, σκίτσα, ζωγραφιές κ.τ.λ. Η οπτική μνήμη αυξάνεται και τα παιδιά φαντάζονται πράξεις, ενέργειες χωρίς να τις βιώνουν. Π.χ. κάνουν πρόσθεση με εικόνες αντικειμένων (♥♥♥ + ♥♥ = ♥♥♥♥♥).
  • Συμβολική αναπαράσταση (8 ετών και άνω): Οι γνώσεις παρουσιάζονται με σύμβολα γλωσσικά ή μαθηματικά (π.χ. 3 + 3 = 6 ή τρία και τρία ίσον έξι). Τα παιδιά έχουν την ικανότητα να σκέφτονται και να μιλούν για πράγματα με αφηρημένους όρους.

Η κύρια διαφορά με τον Piaget είναι ότι ο Bruner υποστηρίζει ότι και τα τρία στάδια συνυπάρχουν στο παιδί ανεξάρτητα από την ηλικία. Απλά ανάλογα με την ηλικία το κάθε στάδιο χρησιμοποιείται σε μεγαλύτερο βαθμό.

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

Karel-οειδή Λογισμικά

Τα λογισμικά που στηρίζονται στην θεωρία της ανακαλυπτικής μάθησης πρέπει να:

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

Karel - Παράδειγμα από τη WikipediaΝαι, καλά "αυθεντική μαθησιακή δραστηριότητα που να εντάσσεται στην διαδικασία επίλυσης ενός προβλήματος" για να διδάξουμε προγραμματισμό; Λοιπόν, μια ευχάριστη μαθησιακή δραστηριότητα με την οποία οι μαθητές μας είναι εξοικειωμένοι είναι... τα παιχνίδια. Υπάρχουν πληθώρα παιχνιδιών στα οποία οι μαθητές μας καλούνται να καθοδηγήσουν έναν ήρωα μέσα από έναν λαβύρινθο, με σκοπό να ξεπεράσει κάποιους εχθρούς ή/και να συλλέξει κάποια αντικείμενα. Η καθοδήγηση γίνεται συνήθως με τα βελάκια (↑←↓→) ή με τα πλήκτρα W, A, S και D και ο ήρωας πιθανώς να εκτελεί κάποια ενέργεια με το Space ή με κάποιο άλλο πλήκτρο. Αυτή η δραστηριότητα (το παιχνίδι δηλαδή) είναι ιδανική για να προσαρμοστεί για την διδασκαλία του προγραμματισμού. Αρκεί να αντικαταστήσουμε τη χρήση του πληκτρολογίου για την καθοδήγηση του ήρωα με την χρήση εντολών κίνησης (προγραμματισμού ουσιαστικά) και τον κατάλληλο συνδυασμό τους. Αν μάλιστα αυτές οι εντολές δεν είναι απλώς κείμενο (συμβολική αναπαράσταση) αλλά έχουν και εικονιστική μορφή (π.χ. πλακίδια, τετραγωνάκια κ.ο.κ.) με κείμενο στο εσωτερικό τους και ο μαθητής τα συνδυάζει με σύρε και άφησε (προσομοίωση της πραξιακής αναπαράστασης) τότε εύκολα πετυχαίνουμε και τις τέσσερις απαιτήσεις των λογισμικών της ανακαλυπτικής μάθησης.

Karel - Φέρε την Εφημερίδα - Παράδειγμα από StanfordΚαι πράγματι από το 1981 τα έχουμε σχεδόν καταφέρει. Ο λόγος για την γλώσσα προγραμματισμού Karel ή αν θέλετε για το Karel, το ρομπότ. Στην Karel σκοπός του χρήστη-προγραμματιστή είναι να καθοδηγήσει ένα ρομπότ, το ομώνυμο Karel, στον κόσμο τον οποίο ζει. Έναν κόσμο από δρόμους (οριζόντιοι) και λεωφόρους (κατακόρυφοι), τοιχία και βομβητές (beepers - δεν έχω καταλάβει ακόμα τι ακριβώς είναι αυτοί οι βομβητές). Στην γλώσσα αυτή υπάρχουν όλο και όλο πέντε βασικές εντολές: move, turnleft, putbeeper, pickbeeper και turnoff με προφανείς λειτουργίες και τρεις δομές ελέγχου if, while και iterate ενώ υπάρχει και η δυνατότητα για boolean ερωτήματα σχετικά με το περιβάλλον του Karel (αν υπάρχει τοίχος ή βομβητής, σε ποια κατεύθυνση κοιτάει το ρομπότ). Μέσω αυτών των εντολών και δομών μπορούν να δημιουργηθούν πιο περίπλοκες λειτουργίες (διαδικασίες - subroutines).

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

Karel - Παράδειγμα από το CodeHSΓια παράδειγμα, αυτή τη στιγμή ο οργανισμός CodeHS (που στοχεύει στη διάδοση της επιστήμης των υπολογιστών και του προγραμματισμού) που ξεκίνησε από το Stanford, σας παρέχει τη δυνατότητα να προγραμματίσετε με τον Karel, τον σκύλο. Στο code.org μπορείτε να βρείτε Karel-οειδή δραστηριότητα με τα angry birds ενώ υπάρχει και το πολύ επιτυχημένο Lightbot (ξεκινάει από τα βασικά, περνάτε σε επαναλήψεις, συνεχίσετε με διαδικασίες και καταντά σπαζοκεφαλιά-πρόκληση).

Run Marco!

Ακολουθώντας τις αρχές της ανακαλυπτικής μάθησης του Bruner και με οδηγό το Karel το ρομπότ, προέκυψε πρόσφατα μια νέα πρόταση λογισμικού για την εκμάθηση προγραμματισμού για παιδιά 6 έως 12 ετών. Στο Τρέξε Μάρκο! (Run Marco!) ο πρωταγωνιστής Μάρκος (και μέσω αυτού και οι μικροί μαθητές) βιώνει μια επική περιπέτεια περιήγησης και συλλογής πολύτιμων αντικειμένων. Η καθοδήγηση του Μάρκου γίνεται μέσω πλακιδίων-εντολών που οι μαθητές σας συνδυάζουν ώστε ο Μάρκος να κινηθεί μέχρι τον στόχο (συνήθως ένα διαμάντι ή τμήμα ενός θησαυρού). Μερικές από τις εντολές με την σειρά που ο μαθητής τις γνωρίζει είναι οι προχώρα μπροστά, στρίψε αριστερά, στρίψε δεξιά, επανέλαβε x φορές, επανάλαβε όσο πέτρα, επανάλαβε όσο γέφυρα ενώ ακολουθούν εντολές για τον έλεγχο της ροής του προγράμματος.

Τρέξε Μάρκο! - All Can CodeΤο στυλ εκμάθησης προγραμματισμού, με τα πλακίδια που περιέχουν τις εντολές γραμμένες, θυμίζει πολύ το γνωστό μας και πολύ πετυχημένο Scratch με τη διαφορά ότι το Τρέξε Μάρκο! πλασάρεται ως παιχνίδι το οποίο οι μαθητές θα θέλουν να παίξουν και να τερματίσουν (αν τα καταφέρουν ;-). Όπως ίσως φαντάζεστε το Τρέξε Μάρκο! προσφέρεται και στα Ελληνικά και σε άλλες 12 γλώσσες. Μάλιστα, πρόκειται για ελληνική προσπάθεια αφού η ομάδα που το ανέπτυξε αποτελείται από 7 Έλληνες, με επικεφαλής τον Κώστα Καρολεμέα που ίδρυσε το 2014 την εταιρεία allcancode για να αναπτύξει το παιχνίδι-εργαλείο εκμάθησης προγραμματισμού. Το Τρέξε Μάρκο! διατίθεται δωρεάν. Μπορείτε να παίξετε το Τρέξε Μάρκο! μέσω του φυλλομετρητή σας, να το εγκαταστήσετε ως εφαρμογή στο Google Chrome, ή να το βρείτε στο Google Play για συσκευές Android ή στο Apple App Store για iPad

Το στιγμιότυπο οθόνης που βλέπετε στα δεξιά είναι από το έβδομο επίπεδο του παιχνιδιού όπου ο μαθητής έχει ήδη γνωρίσει τις εντολές επανάληψης. Επιπλέον screenshots από το Τρέξε Μάρκο! υπάρχουν στην ιστοσελίδα της allcancode. Περισσότερα μπορείτε να δείτε και να διαβάσετε λεπτομέρειες στο blog της allcancode.

Καλή διασκέδαση και μάθηση μέσω ανακάλυψης με τους μικρούς μαθητές σας.