Ένας representer είναι ένα κομμάτι λογισμικού που παίρνει τη λύση ενός μαθητή και επιστρέφει μια κανονικοποιημένη αναπαράστασή της. Στη συνέχεια χρησιμοποιούμε αυτές τις αναπαραστάσεις για να κάνουμε πιο αποτελεσματική την αυτοματοποιημένη ανατροφοδότηση και την κατηγοριοποίηση.
Ένα παράδειγμα βοηθάει περισσότερο να εξηγήσουμε τι είναι ένας representer. Ας υποθέσουμε ότι δύο μαθητές κάνουν δύο υποβολές στην άσκηση hello-world της Ruby:
# Student 1's submission
def self.hello(name = 'World')
"Hello, #{name}!"
end
# Student 2's submission
def self.hello(nom = 'World')
"Hello, #{nom}!"
end
Αν και ο κώδικας αυτών των λύσεων είναι διαφορετικός (διαφορετική στοίχιση, ονόματα μεταβλητών και σύνταξη συμβολοσειρών), στην ουσία οι λύσεις είναι ίδιες. Έτσι, δημιουργώντας μια κανονικοποιημένη αναπαράστασή τους, μπορούμε να τις αντιμετωπίσουμε ως ίδιες για τους σκοπούς της ανατροφοδότησης. Αυτό μειώνει δραστικά τον όγκο της επαναλαμβανόμενης καθοδήγησης που χρειάζεται να γίνει.
Κάθε track διατηρεί τον δικό του representer, προσαρμοσμένο στη γλώσσα του. Δεν υπάρχει τυποποιημένη έξοδος· το μόνο που απαιτούμε είναι το track να είναι εσωτερικά συνεπές.
Αν σε ενδιαφέρει να φτιάξεις έναν representer, ρίξε μια ματιά στην τεκμηρίωση για τους representers για περισσότερες πληροφορίες.