Profesorii de informatică din liceele românești folosesc, de multe ori la clasă și pentru temele de acasă, platformele de evaluare automată a problemelor de programare. Evaluarea automată este folosită și la concursurile școlare de informatică, cum ar fi apropiatele olimpiade de informatică. Profesorul Bogdan Pătruț, inițiatorul cercului de informatică „Programare cu răbdare”, autor de manuale și culegeri de aplicații și probleme, cu peste 20 de ani vechime în cariera didactică, susține că dincolo de avantajele evidente aduse de aceste platforme, există și o serie de dezavantaje, care își pun amprenta asupra educației în informatică și asupra formării competențelor digitale, de care au nevoie tinerii. Redăm integral opinia profesorului:
„Un sistem automat de evaluare preia sursa trimisă şi o compilează online, iar dacă apar erori de compilare sau avertismente, ele vor fi afișate. Dacă sursa programului trece de acestea, atunci programul va fi rulat pe un set restrâns de date de intrare, pentru care se așteaptă un anumit rezultat.
Cu toate că ușurează munca profesorilor, evaluarea automată ridică niște probleme care ar trebui să le dea de gândit celor care folosesc acest sistem în munca la clasă sau chiar în competițiile de performanță.
De multe ori, textele problemelor sunt artificiale: se îmbracă într-o poveste artificială niște chestiuni teoretice, care nu sunt tocmai cele mai întâlnite în programarea reală. „Niște marțieni au aterizat într-o livadă, reprezentată sub forma unei matrice, și se deplasează în 4 direcții…” poate fi începutul unui enunț dintr-o asemenea problemă. Iată doar câteva chestiuni pe care le poate ridica un asemenea enunț și cerințele problemei.
- Nu e o problemă inspirată din realitate: a) niciodată nu ați văzut marțieni aterizând într-o livadă; b) livezile nu sunt neapărat dreptunghiulare, ca să fie reprezentate ca matrice; c) poate că marțienii se deplasează cum vor ei.
- Viața e plină de probleme din lumea reală: programatorii au de făcut jocuri, de implementat software educaționale, de grafică, cu calcule inginerești, de realizat software pentru mașini care se deplasează singure, de interpretat texte formatate, de extras conținut relevant din texte în limbaj natural, de vizualizat fișiere video sau de redat fișiere audio etc. Nu e nevoie să inventăm noi probleme de informatică, artificiale, numai de dragul de a îmbrăca în povești ideile noastre de algoritmi. E mai bine să găsim algoritmi pentru problemele reale.
- Pe platformele cu evaluare automată, modul de reprezentare a datelor de intrare (și de ieșire) ale problemei este prestabilit. Elevul nu poate să fie provocat să-și găsească propriile structuri de date potrivite reprezentării datelor din problema respectivă. Nu poate fi creativ în această reprezentare.
- Elevii încarcă rezolvările și nimeni nu se uită pe codul lor. Nimeni nu vede cum a denumit variabilele, dacă a folosit funcții sau nu, dacă a scris „cod curat”, dacă codul este identat sau nu.
- Mai rău de atât, nimeni nu se uită pe rezolvarea în sine a problemei, pe algoritm, să vadă dacă e corect sau nu. Sistemul automat poate face ca soluții incorecte să fie tratate ca fiind corecte, iar unele soluții corecte să fie subevaluate din cauza unor restricții tehnice sau a unor scăpări nesemnificative. Evaluatorul îți dă 0 puncte dacă uiți un „punct și virgulă”, dar scrii un algoritm corect 100%. Mai mult, evaluatorul îți dă punctajul maxim de 100 de puncte, dacă treci de testele propuse. Asta NU demonstrează corectitudinea algoritmului. Evaluatorul îți poate da 70 de puncte în situații foarte diferite: fie că nu folosești „long long” în loc de „int”, fie pentru că algoritmul tău este greșit, dar, întâmplător, trece de 7 din 10 teste.
- Un elev ia 0 puncte, altul ia 40 de puncte, iar un al treilea ia 70 de puncte. Deci ultimul se clasează pe podium, deși niciunul nu a rezolvat problema, pentru că nu a găsit algoritmul corect. De fapt, nici nu putem ști dacă cel cu 0 puncte nu cumva a uitat acel „punct și virgulă” sau a găsit algoritmul corect, dar nu a avut timp să-l transpună în cod.
- Poate că nu se cunoaște un algoritm rapid pentru problemă și elevul folosește un algoritm exponențial pentru a o rezolva. Astfel, un timp alocat de o secundă nu trece testul cu un „n” mare, decât dacă algoritmul are niște „artificii” la citirea intrării sau niște „optimizări” pe parcurs.
- Nu toate problemele din informatică au input-ul sub formă de fișiere text și output-ul tot sub formă de fișier text. De pildă, problema afișării pe ecran a unui fișier PDF înseamnă decodificarea unui fișier binar și transformarea sa într-o imagine pe ecran. Și e o problemă cât se poate de reală!
- Toate platformele cu sisteme de evaluare automată, asociate sau nu unui concurs, ierarhizează elevii după punctele obținute. Nu sunt interesate de felul în care au abordat elevii problemele, de felul în care au gândit, de cât de creativi pot fi în reprezentarea datelor, în elaborarea algoritmilor și așa mai departe.
- Aceste evaluări automate sunt mai mult despre individualism, despre egoism, nu despre colaborare. În IT lumea colaborează, nu se luptă pentru puncte într-un sistem artificial în care tot ce contează e câte puncte ai adunat din niște probleme artificiale.
Evident, acestea sunt niște probleme pe care le-am identificat, de aceea cred că ar fi bine ca întotdeauna să se aleagă o cale de mijloc, cu un sistem de evaluare automată și umană (până vor fi dezvoltate sisteme de inteligență artificială, care să înlocuiască oamenii de tot).
Demonstrarea corectitudinii unui algoritm scris de un elev este uneori o problemă foarte dificilă ea însăși, iar soluția aplicării unor teste cât mai variate este un compromis mulțumitor. Pe de altă parte, sistemul de evaluare cu intrări și ieșiri sub formă de fișiere text nu acoperă plaja de probleme din viața reală ce trebuie rezolvate de un informatician.
Și credem că informatica și concursurile de informatică trebuie să fie și despre copii, nu doar despre puncte. Despre copiii pe care îi formăm să devină oameni, să se ajute între ei, să colaboreze, descoperind frumusețea informaticii în toate fațetele ei, de la înțelegerea unor noțiuni elementare, până la cele mai sofisticate aplicații practice sau profunde elemente de cercetare științifică.”
FOTO: Bogdan Pătruț