În fiecare zi, noi trebuie să rezolvăm probleme. Rezolvarea acestor probleme o obținem apelând la cunoștințele dobândite în timpul școlii și la experiența noastră de viață. În acest context, o nouă abilitate vine în ajutorul nostru când ne confruntăm cu soluționarea problemelor. Această abilitate se numește "gândire computațională" (computational thinking) vine din domeniul informaticii. Fiecare dintre noi poate gândi ca și un programator.
Gândirea computațională reprezintă o atitudine și un set de competențe pe care fiecare dintre noi ar trebui să le dețină. Conceptul este construit pe capacitățile și limitările proceselor de calcul, indiferent dacă acestea sunt executate de un computer sau de o persoană. Așa cum am afirmat anterior, gândirea computațională este bazată pe concepte din informatică și constă dintr-o gamă de instrumente mentale. Acest concept implică rezolvarea problemelor, proiectarea sistemelor și înțelegerea comportamentului uman. Gândirea computațională este dezvoltarea abilităților de gândire sprijinind învățarea și înțelegerea. Prin utilizarea gândirii computaționale, putem descrie procesele și abordările pentru o problemă sau sistem într-un mod în care calculatorul ne poate ajuta.
În rezolvarea problemelor trebuie să determinăm criteriile după care vom măsura soluția. De exemplu, pentru o anumită problemă trebuie să vedem dacă o soluție aproximativă este bună sau nu, dacă putem folosi soluții aleatoare sau avem nevoie de o soluție unică și specifică. Cu ajutorul gândirii computaționale putem reformula o problemă dificilă într-una pe care știm cum să o rezolvăm folosind concepte ca reducerea (reduction), transformarea (transformation) sau simularea (simulation). Gândirea logică este folosită de gândirea computațională pentru rezolvarea problemelor și înțelegerea mai bună a proceselor și sistemelor. Pentru a folosi gândirea computațională, trebuie să îmbrățișăm capacitatea de a gândi algoritmic (algorithmically), în termeni de descompunere (decomposition), generalizare (generalization), abstractizare (abstractions) și evaluare (evaluation).
Acești termeni din domeniul informaticii pot fi înfricoșători pentru cineva din afara domeniului. În rândurile următoare, vom analiza pe rând fiecare concept.
Acest proces de gândire îi ajută pe oameni să realizeze lucruri prin analizarea și verificarea faptelor, prin gândirea clară și precisă. Gândirea logică este utilizată de persoane atunci când învață, de exemplu, despre gravitate folosind un fir având la un capăt o greutate suspendată de capacul unui borcan de sticlă.
Abstractizarea este procesul de a face o anumită problemă înțeleasă prin reducerea detaliilor inutile. Un exemplu de abstractizare este harta metroului din Londra, care este un sistem extrem de complex. Harta metroului din Londra este o abstracție extrem de rafinată, cu informații suficiente pentru ca un călător să navigheze în rețeaua subterană, fără a fi îngreunat de o cantitate inutilă de informații, cum ar fi distanța și poziția geografică exactă. Abstractizarea se bazează pe abilitatea de a alege detaliile potrivite pentru a le ascunde, astfel încât problema să devină mai ușoară, fără a pierde nimic important.
Evaluarea este procesul de asigurare a faptului că o soluție, care poate fi un algoritm, un sistem sau un proces, este una bună. Această evaluare se face pe baza unor întrebări și răspunsuri. De exemplu, trebuie evaluate diferite proprietăți ale soluțiilor: sunt corecte? Utilizează resursele economic? Sunt ușor de folosit de către oameni?
Evaluarea este o abilitate foarte importantă nu numai în domeniul informaticii, ci și în alte domenii, cum ar fi medicina, ingineria etc. .
Un algoritm este un proces sau un set de reguli care trebuie urmate în operațiile de rezolvare a unor probleme. Un algoritm este o metodă eficientă care poate fi exprimată într-o cantitate finită de spațiu și timp. Gândirea algoritmică este capacitatea de a gândi în termeni de secvențe și reguli ca o modalitate de a rezolva probleme sau de a înțelege situații. Un exemplu de algoritm este procesul de preparare a cafelei dimineața. Primul pas este să punem apă în mașina de cafea, apoi adăugăm cafeaua după care pornim mașina și așteptăm să termine. Acesta este un algoritm simplu pe care îl executăm în fiecare zi.
Descompunerea este o modalitate de a gândi despre o problemă sau sistem în ceea ce privește părțile componente. Fiecare parte poate fi definită, înțeleasă, rezolvată, dezvoltată și evaluată separat. Acest lucru face ca problemele complexe să fie mai ușor de rezolvat, iar sistemele mari să fie mai ușor de proiectat.
Un exemplu simplu poate fi prepararea micului dejun dimineața. Acest lucru poate fi "spart" sau descompus în activități separate, cum ar fi prăjirea pâinii, prepararea ceaiului etc. [3] De asemenea, aceste părți pot fi descompuse în continuare în activități mai mici.
Generalizarea este procesul de identificare a unor modele sau soluții similare. Aceasta este o modalitate de a rezolva problemele mai rapid prin utilizarea soluțiilor anterioare.
Bazându-ne pe articolul "Computational Thinking" de Jeannette M. Wing, putem vedea că gândirea computațională are următoarele caracteristici:
Conceptualizare, nu programare.
Abilități fundamentale, nu mecanice.
O modalitate prin care oamenii, nu computerele, gândesc.
Completează și combină gândirea matematică și ingineria.
Idei, nu artefacte.
Ideea generală a oamenilor în legătură cu domeniul informaticii este că ea constă doar în programare. Acest lucru nu este adevărat; deși programarea ocupă mult timp în informatică, ea nu reprezintă totul. Programarea este o abilitate folosită pentru a da formă conceptelor. Concepte care se găsesc utilizând mai multe nivele de abstractizare.
Pentru a funcționa în societatea contemporană, fiecare om trebuie să cunoască anumite abilități fundamentale. Uneori, oamenii fac lucruri bazate pe rutină. Cu toate acestea, în unele situații, problemele nu pot fi rezolvate utilizând abilități mecanice. În acest caz, abilitățile fundamentale sunt soluția.
Gândirea computațională este o modalitate prin care omenirea a rezolvat problemele cu mult înainte de inventarea calculatoarelor. Folosind gândirea computațională, nu încercăm să-i facem pe oameni să gândească ca și calculatoarele, ci vice-versa.
Informatica se bazează în mod inerent pe gândirea matematică, având în vedere că, la fel ca toate științele, fundamentele sale se bazează pe matematică. De asemenea, se bazează în mod natural pe gândirea caracteristică ingineriei, având în vedere că sistemele pe care le construim interacționează cu lumea reală. Componentele de calculator îi forțează pe oamenii de știință să gândească calculat, nu doar matematic. Programatorii sunt liberi să construiască lumi virtuale care depășesc lumea fizică, reală și pot îmbrăca infinite și diferite forme.
Nu construim doar artefacte software și hardware care sunt prezente fizic în viața oamenilor, ci și concepte computaționale pe care le folosim pentru a rezolva probleme, pentru a ne gestiona viața de zi cu zi și pentru a comunica și a interacționa cu alte persoane.
Gândirea computațională va fi o realitate atunci când va fi integrată în eforturile umane și va dispărea ca simplă filozofie. Mulți oameni cred că informatica înseamnă numai programarea calculatoarelor și consideră că cercetarea fundamentală din acest domeniu s-a epuizat, iar numai ingineria mai oferă subiecte de studiu. Gândirea computațională este o mare viziune pentru a ghida educatorii, cercetătorii și practicienii în domeniul informaticii, pe măsură ce acționăm pentru a schimba imaginea societății în domeniu.
Gândirea computațională este un set de abilități care ne ajută să rezolvăm probleme. Aceste abilități se bazează pe o gamă largă de instrumente mentale din domeniul informaticii: gândire logică, abstractizare, evaluare, gândire algoritmică, descompunere, generalizare. Folosind aceste moduri de gândire, putem rezolva orice problemă cu sau fără implicarea calculatorului și pot fi folosite de orice persoană de orice vârstă, chiar și de către copii.
De asemenea, am observat că anumite caracteristici ale gândirii computaționale se bazează pe concepte și nu pe anumite competențe sau abilități de programare. O altă caracteristică este că gândirea computațională este o modalitate de gândire specifică oamenilor, iar nu calculatoarelor și a fost folosită cu mult timp în urmă, chiar înainte de apariția calculatoarelor. Un aspect important este că gândirea computațională se bazează pe gândirea și ingineria matematică, permițând o modalitate de a defini o lume nouă, care nu se limitează la cea fizică.
Și cel mai important este că gândirea computațională este pentru toată lumea și disponibilă oriunde.
[1] Jeannette M. Wing, Computational Thinking, COMMUNICATIONS OF THE ACM March 2006/Vol. 49, No. 3
[2] Computational thinking - Computing At School, https://community.computingatschool.org.uk/files/8221/original.pdf
[3] Andrew Csizmadia, Prof Paul Curzon, Mark Dorling, Computational Thinking - A guide for teachers, Computing At School, 2015