Recursos II. Codis d’exemple i rúbriques.

A tall d’exemple les dues rúbriques clau del projecte, sense cap altre pretensió de que puguin ser un punt de partida a qui les volgués fer servir.

  • La que passem de forma alternada a final de cada unitat per avaluar el treball col·laboratiu:  rúbrica co i auto avaluació, preparada per fer servir amb el fantàstic Corubrics de Jaume Feliu.
  • I una molt consensuada amb l’alumnat per avaluar els codis generats: rúbrica Codi Python

I uns quants codis senzills en Google Colab, 

 

Projecte. Conclusions

Aquesta conclusió serà entre relativa i virtual. Just enguany tenia els grups de programació de 1r de batxillerat i l’ESO només durant el primer trimestre, l’adopció del nou batxillerat ha comportat ajustos estranys de distribucions horàries… Per tant ja estàvem enllestint l’avaluació del primer trimestre quan vàrem fer els curs.

De totes maneres tinc alguns elements per poder treure alguna conclusió. Per una banda sí que vaig estar fent proves amb aquest projecte. Per exemple, donat que durant el curs vam donar bons continguts pel tractament de dades amb les llibreries pandas i numpy, vaig fer un mini projecte, el que vindria a ser la unitat 4 (la de selecció adequació i neteja de dades amb la llibreria pandas) on vaig ser conscient de que seria útil tenir un petit repositori àgil de dades de diferents tipus per poder fer exercicis i pràctiques d’estadística. Aquesta primera aproximació a la ciència de dades amb els alumnes em va resultar valuosa per definir i millorar les rúbriques de treball i veure la necessitat de buscar exemples concrets i motivadors.

Per altre (com ja he explicat) porto anys amb el, molt recomanable, projecte AstroPi Challenge. Tot i que no és el projecte que aquí presento,sí que en puc extreure una conclusió que seria, això espero, exportable a aquest projecte.  De totes les aportacions positives del projecte AstroPi, moltes, destaco especialment la millora real en el treball cooperatiu i la gestió de la informació. Després de tot un curs treballant de forma intensament cooperativa i prenent consciència de la seva pròpia evolució, l’alumnat acabant assolint aquestes competències i creant les seves pròpies estructures per gestionar la informació molt millor que els alumnes que no l’han cursat i aquesta millora es manté en el temps com a mínim durant tot el batxillerat.

Per tot puc pensar que el projecte hauia d’assolir els objectius, de totes maneres, afegiré les conclusions reals un cop el porti a la pràctica.

Projecte. Planificació i avaluació

Planificació:

La planificació és molt lineal i directa està inicialment pensat per fer-se en unes 30-36 sessions (10-12 setmanes) i és fàcilment adaptable.

  • Introducció (1-sessió). Explicar el repte, la metodologia, crear els grups de treball (d’entre 3 i 4 membres) i començar amb els documents de treball de cada grup compartits amb el professor.
  • Unitat 1. ‘Xuleta’ / Formulari de matemàtiques. (6-sessions)
    • 2 o 3 sessions de repàs dels continguts i acabant cada sessió amb un petit exemple que construïm entre tots.
    • 2 sessions de treball cooperatiu.
    • 1 sessió de presentació dels programes/eines de cada grup i autoavaluem i reflexionem i busquem bones pràctiques i solucions del treball cooperatiu.
  • Unitat 2. Anàlisis de funcions (6-sessions)
    • Totes seguiran el mateix esquema però alternant l’última sessió entre autoavaluació i coavaluació.
  • Unitat 3.Suport al càlcul matricial. (4-sessions)
  • Unitat 4. Construïm un repositori de bases de dades. (5-sessions)
  • Unitat 5. Suport estadístic. (6-sessions)
  • Acabem (2-sessions)
    • Reflexió i valoració global de la feina feta, dels reptes i dificultats i analitzem l’evolució de les feines fetes i les autoavaluacions del nostre treball col·laboratiu.
    • Seleccionem i donem forma una pàgina web accessible a tots els codis generats format pàgina web.
    • Tanquem i guardem de forma accessible els documents, bibliografies, repositoris de codis … creats durant el repte.

Sistema d’Avaluació:

Donat que el nombre d’alumnes és petit permetrà fer un seguiment casi diari de la feina feta, de tota manera prefereixo anar fent un seguiment més exhaustiu d’un o dos grups de treball com a màxim per cada sessió. Permet fer anotacions puntuals de la feina, les dinàmiques de treball i anar donant suport als temes que van sorgint.

Fem servir també dues rúbriques una pel codis lliurats i una per l’auto i coavaluació del treball en grup.

La dels codis lliurats abans de fer els lliurament estan acostumats a passar-la mig com a autoavaluació mig com a check-list dels requeriments generals.

Les dues les tenen compartides i les comentem des del primer dia però després miro de mantenir-les estables durant tot el projecte per poder estudiar en certa manera la progressió en les seves avaluacions.

Projecte. Continguts

Continguts i activitats

El repte. Els alumnes hauran de dissenyar codis ergonòmics (pensats per ser utilitzats pels seus companys que no fan programació i que siguin útils i pràctics i ben organitzats), amb l’objectiu de donar suport , ajudar i complementar les matèries de matemàtiques i estadística.

Els continguts els he estructurat en 5 unitats de dificultat creixent tot i que als alumnes se’ls presenta com un únic repte amb 5 lliuraments

Unitat 1. ‘Xuleta’ / Formulari de matemàtiques.

[Comencem repassat els tipus de dades, els condicionals i les funcions senzilles així com l’entorn de programació de Google Colab]

per exemple: Funcions senzilles ben documentades i organitzades per resoldre problemes senzills de:

  • Àrees i volums
  • Equacions de segon grau
  • Trigonometria

Unitat 2. Anàlisis de funcions

[repassem els bucles, llistes i introduïm la llibreria matplotlib, ]

exemple de codis a realitzar:

  • Taula de valors d’una funció qualsevol.
  • Gràfica d’una funció amb opcions de fer zoom.
  • Trobar els zeros per Bolzano.

Unitat 3.Suport al càlcul matricial.

[repassem els iteradors i la llibreria numpy]

exemple de codis a realitzar:

  • Programa per introduir matrius per després poder fer operacions senzilles amb elles: Producte de matrius, determinants, matrius inverses…

Unitat 4 Construïm un repositori de bases de dades.

[repassem pandas, neteja de dades]

En aquesta unitat els alumnes hauran de col·laborar per crear un repositori de bases de dades variat amb dades de diferents tipus i origen però que puguin ser interessant i pertinents (canvi climàtic, fonts energètiques, consum d’aigua, demogràfiques, ús de les xarxes socials…. ) el problema és que hi ha milers de fonts amb multitud de dades però no sempre són àgils d’utilitzar. Les hauran de seleccionar, netejar, simplificar… per tal que puguin ser utilitzades àgilment en altres assignatures com ara la d’estadística.

Unitat 5 Suport estadístic.

[repassem pandas, matplotlib i introduïm la llibreria seaborn, ]

Un altre cop hauran de crear codis ara amb l’objectiu de donar suport a la matèria de estadística

  • Representació de gràfica
  • Resums estadístics
  • Test d’hipòtesis

Materials i Eines:

Com a entorn de treball: les eines de Google Workspace for Education (seria perfectament equivalent amb l’entorn Microsoft Teams for Education ). Per potenciar el treball cooperatiu els documents fulls de càlcul, carpetes calendaris… Una alternativa seria lligar-ho tot de GitHub però tenint en compte que un dels principals objectius és que siguin autònoms creant els seus propis espais de col·laboració, optar per entorns que en el futur els siguin més versàtils i que estudiïn el que estudiïn en puguin treure el màxim profit.

Com a IDE (entorn de programació ) a l’escola degut al programa AstroPi Challenge estan acostumats a programar amb Thonny, un IDE molt senzill lliure i que necessita pocs recursos. El faríem servir de forma puntual junt amb Google Colab la implementació dels  versió dels Jupyter Notebooks de Google, que permet treballar de forma col·laborativa sense haver de instal·lar res i també permet compartir la feina a usuaris que tampoc hauran d’instal·lar res simplement accedir a una adreça de internet.

Com a fonts de documentació he preparat una selecció de recursos que tinguin la màxima coherència amb el que fem a l’aula i pensats a prioritzar fonts oficials.

Projecte. Objectius

El projecte està inscrit dins l’acció formativa: Introducció a la ciència de dades amb Python (B2) (per cert el curs molt recomanable, en faré una entrada) . Com a part de la formació he de dissenyar una acció formativa d’implementació a l’aula i aquest blog com a prova/evidència, ja en parlarem.

El projecte l’he anomenat Eines de suport: de Python a Mates. 

De cara a l’alumnat el repte consisteix a treballar de forma col·laborativa per proporcionar eines de suport a les matèries de matemàtiques i estadística que desenvoluparan en l’entorn de programació Google Colab.

Motivació

Contràriament al que es podria pensar, amb tots aquests anys de digitalització a tots nivells crec no ha millorat significament la competència del nostre alumnat en el treball cooperatiu. A nivell de 1r de batxillerat si proposes una activitat ben pautada on específicament els demanes com treballar de forma cooperativa encara, però si observes el seu treball espontani sense unes indicacions clares en aquest sentit pocs grups es posen a treballar de forma autònoma amb certa destresa cooperativament. Clarament això només és la meva percepció (compte també compartida amb d’altres companys). Per tant un dels objectius anirà per aquí, intentarem treballar de forma intensament cooperativa durant dos mesos, una mena d’immersió en un projecte cooperatiu.  El segon objectiu important serà intentar que la programació no aparegui com un bolet en el seu currículum, sense massa recorregut, que puguin consolidar el que han après amb projectes propers on vegin clar que poden arribar a desenvolupar programes útils per ells i la resta de companys.

Objectius:

Aquestes dues de les mancances que a les que pretén donar resposta aquest projecte segurament són les que més han incidit en la seva concepció. Per tant em centraré amb dos objectius principals.

  1. Consolidar les competències digitals relacionades amb el pensament computacional i la programació. A partir de 5 unitats de repàs i consolidació amb reptes orientats a construir  un conjunt de programes i eines de suport per les assignatures de matemàtiques i estadística. Han de poder ser conscients de que tenen un nivell suficient per de forma autònoma donar solució a problemes reals a través de la programació.
  2. Fomentar el treball col·laboratiu durant tot el projecte treballant de forma intensa i  sistemàtica en grup, amb l’objectiu que comencin a incorporar-la de forma autònoma i per iniciativa pròpia com una destresa fonamental del seu procés d’aprenentatge.

 

Astro Pi Challenge

Ja he mencionat que ja porto uns quants anys intentant introduir la programació, he passat per uns quants projectes interessants, en destaco dos.

El de projecte de Mobilitzem la informàtica 4t ESO amb App Inventor és un bona idea per començar a introduir la programació, és prou conegut. És un projecte de caràcter generalista, vull dir amb això que es pot treballar amb el grup sencer sense problemes i en el context de la programació té una vocació molt introductòria, molt semblant al encara més conegut Scratch.

Two views of an Astro Pi computer, showing the front panel (with some of the sensors) and the camera.

Les RasberryPi del projecte font:Projecte AstropI 

No tan conegut és el projecte Astro Pi Challenge i en concret, pels alumnes de ESO i Batxillerat, la Mission Space Lab de la fundació RasberryPi i l’Agència Espacial Europea. Ofereix l’oportunitat de dissenyar una recerca a l’estació espacial internacional.

Per desenvolupar aquesta recerca els alumnes tindran accés a dues RasberryPi amb tot de sensors i càmeres durant 3 hores (aproximadament dues orbites senceres a la Terra) on executaran el seu programa per recollir dades i fotografies de la Terra.

Cal destacar que és projecte internacional (24 paisos membres de la ESA), totalment gratuït, amb molt bon acompanyament durant totes les fases i que a l’escola rebran tot el material necessari incloent una RasberryPi amb els sensors per poder fer les proves necessàries.

El projecte està molt ben seqüència  en 4 fases, dura bona part del curs escolar i ofereix acompanyament amb molts recursos i guies didàctiques. La recerca que hauran de dissenyar és tot un repte, molt transversal on treballaran competències de totes les àrees.  Hauran de treballar en equips ( de de 2 a 6 membres), programar en Python, editar les fotografies que hauran captat des de l’òrbita, georeferenciar-les, treballar amb multitud de dades recollides pels sensors… analitzar totes les dades, treure unes conclusions fonamentades per acabar presentant una recerca de tot plegat. Cada any es presenten centenars de grups i se’n acaben seleccionant les guanyadores, el premi sol ser l’opció de fer una breu connexió amb l’estació espacial o enviar preguntes a algun dels astronautes de la ISS (ex. edició 2022 que va guanyar un dels grups que tutoritzava).

A l’escola hi he participat com a mentor d’una dotzena de grups els últims 4 anys. Ho he encaixat sense molts problemes a Informàtica de 4t d’ESO ( destinant aproximadament el 50% del temps) i a una optativa de Programació a 1r de Batxillerat. A tall d’exemple per veure quina mena de projectes s’hi presentar:

  • Recerques sobre canvi climàtic, en concret van fer recerques per poder determinar de forma automàtica la coberta de neu, l’evolució de deltes de grans rius o caracteritzar el filtre NVDI…
  • Recerques sobre la variació del camp magnètic de la Terra.
  • Sobre les diferències entre les formacions de núvols sobre terra i sobre el mar.
  • Mesurar la radiació a partir del soroll en fotografies nocturnes
  • Sobre d’edat de formació de grans serralades en funció de la seva dimensió fractal (va resultar un dels equips guanyadors 2022 )
  • Estudi del perfil de temperatures en refredar-se en micro-gravetat (sense convecció) (va resultar una recerca molt elogiada 2019).

Després de participar-hi uns quants cops el considero un projecte molt positiu en tots als aspectes, el repte pels alumnes resulta molt motivador  i per la quantitat de competències a que permet desenvolupar.  Com a limitació  he de dir que és difícil portar més de 3 grups simultàniament, això seria un màxim de 18 alumnes (idealment entre 12 i 15). En el meu cas l’assignatura de informàtica la fem desdoblada en dos grups, un orientat a  programació on desenvolupem aquest projecte i l’altre orientat al disseny amb un altre professor. Una situació ideal per portar a la pràctica aquest projecte. No sé com funcionaria amb un grup de més nombrós …

Recursos I -Manuals, canals de vídeo i recursos generals 

Hi ha milers de recursos a la web, ja he comentat els avantatges, però aquí cal tenir en comte un dels inconvenients del llenguatge. En qualsevol llenguatge de programació hi ha una manera correcta i moltes d’incorrectes de fer les coses, en Python això es multiplica en tots sentits. Trobareu moltes pàgines dubtoses, antigues que barregen diferents metodologies de programació i que poden aportar molta confusió. La mateixa pàgina oficial de la llibreria Matplotlib (tot hi que ha millorat moltíssim darrerament) en seria un exemple.

Miro de inculcar als meus alumnes que no es quedin amb la primera proposta de google quan fan una cerca, que prioritzin les documentacions oficials de Python i de les llibreries que fem servir, jo mateix intento predicar amb l’exemple quan busco coses a la classe i els proposo tasques que els fan treballar amb les documentacions oficials.

La realitat és que prefereixen sobretot vídeos, pàgines en castellà més adaptades al seu nivell i clar ara sobretot ChatGTP… i no crec que sigui raonable anar sempre contracorrent, miro d’arribar a un compromís raonable preseleccionant (després faran el que voldran) referències.

Acabo ràpid amb l’últim, el chatGPT, és fantàstic programant i explicant codi. El fem servir sovint. De fet he acabat fent un boot ChatGPT Code Helper que els ajuda a programar en Python en català i amb exemples adaptats al seu nivell i interès.

De pàgines, com he dit n’hi ha milers, deixo aquí una recopilació. Una recopilació que no pretén ser exhaustiva. Simplement un recull prou ampli per anar per feina i que no perdin tant de temps buscant. Els recomano que triïn un parell de referències amb les que es sentin còmodes i les facin servir com a punt de partida.

Uns quants en castellà:

En cursos per capítols en format vídeo dels canals:

En anglès

Bons exemples:

Llibres sencers

Resums

Python Cheatsheet

Llenguatge i IDE

Ara rebuscat veig que ja fa 7 anys, que vaig començar amb Python. No crec, a dia d’avui, que calgui massa justificació. És senzill per començar, molt polivalent, des de gràfics senzills amb el turtle a ciència de dades i amb bones llibreries per poder fer coses ràpid. Per contra algú pot criticar que es poden agafar mals vicis i acabar programant molt malament, compte però acaben programant! a la facultat ja els ensenyaran a fer-ho bé… Estic cada cop més convençut de que és una bona elecció i que amb cap altre llenguatge havia aconseguit tant nivell d’adhesió.

El tema de l’entorn de desenvolupament (IDE), aquí també he arribat a una conclusió clara. Després de començar amb Spyder (havia fer algun curs de ciència de dades…) i Visual Studio Code els he acabat descartant per massa complexos. Recomano molt fortament començar per IDEs molt, molt més senzills i que l’alumnat es puguin concentrar només a programar. Com Thonny (una alternativa seria  o Geany). Vaig descobrir Thonny gràcies a projecte AstroPi i crec que és fantàstic per començar, no pot ser més fàcil d’instal·lar ocupa pocs recursos, en qualsevol ordinador o chromebook funciona al perfecció  (fins i tot en una RasberryPi ) i té el una molt pràctica finestra ‘Shell’ per fer proves i accedir a les variables del programa que has executat. Ideal per centrar-se només a programar. Quan ja saben una mica què estan fent es interessant introduir Colab, una implementació de google dels fantàstics jupiter notebooks. No hauran d’instal·lar res, podran treballar de forma col·laborativa i poden compartir la seva feina amb la resta de l’aula que podran fer servir els seu codis directament sense instal·lar res, crec que és un avantatge decisiu i que he aprofitat per animar-los a fer programes que puguin ser útils a la resta de companys que no fan programació, en el meu cas sobretot de matemàtiques i estadística.

Antecedents

Com ja he comentat a la introducció ja fa uns quants cursos (5 o 6) que estic introduint la programació a 4t d’ESO i 1r de Batxillerat. No ha estat fàcil, crec que hi ha pocs recursos adaptats a aquestes edats o potser tot el contrari n’hi ha moltíssims alguns de molt bons la majoria no tant.

En aquest context he de mencionar clarament punts clau per tal que aquest intent tingui continuïtat:

Un grup reduït. No crec (jo no em veuria en cor) que pugui funcionar a l’ESO amb un grup gaire més nombrós de 15 alumnes. A 4t dividíem el grup en dos en funció dels seus interessos. La idea era seguir el currículum però mentre un grup s’orientava més al disseny (fotografia, àudio, vídeo i pàgines web), grup disseny. L’altre grup s’orientava més a la programació en Python, grup programació. Els dos grups teníem una part del temari més o menys comú però a tots els afectes treballàvem per separat fora d’alguna activitat molt concreta que fèiem junts.

Suport de la direcció. Calen recursos per dividir un grup i confiança amb un cert grau de llibertat per provar un projecte nou.

A batxillerat també hem ofert com a optativa trimestral programació i els grups no han passat mai de 18 alumnes, tot i ser al batxillerat una ràtio de 18 comença a estar molt al límit.

La meva formació no és en informàtica, vaig estudiar física i tot i que a la carrera es programava força i que amb els anys he continuat programant podria dir que he aprés Python junt amb els meus alumnes.

Prensentació

Ja fa un bon grapat d’anys que sóc professor, sobretot matemàtiques i física a batxillerat i alguna informàtica a 4t d’ESO .

Des fe fa uns quants anys estic mirant de introduir Python com a llenguatge de programació, tant a informàtica de 4t d’ESO (ara digitalització) com a algunes optatives de primer de batxillerat.

La rao de ser d’aquest blog és el curs de formació ‘Introducció a la ciència de dades amb Python’ cursat durant el Novembre 2023 per acreditar en nivell B2 de comptetència digital docent.

També és clar compartir el que pugui ser d’interès a d’altres companys que vulguin introduir la programació en el seu currículum.