Arxiu de la categoria: INS Jaume Balmes

Programant el tracking de rutes

Exemple canònic OpenlayersAhir al vespre estava programant, i estava gravant posicions simulades des de casa. Com a casa no em moc, vaig simular un cert moviment. Les dades es graven en una base de dades MongoDB.

Avui estava continuant una mica, des de l’institut, i voilà, hi ha un salt de casa a l’institut. Lògic però divertit.

Curs MOOC ABP: Implementació del projecte a l’Aula

En aquesta part final del curs ens demanen que fem un Elevator pitch, que ve a ser un video promocional i motivador, per tal d’explicar als alumnes què farem en aquest projecte.
Comencem amb el títol del projecte, per tal de què quedi clar, i una pregunta motivadora que atraigui l’atenció dels alumnes. En el nostre cas, la pregunta seria: ”
Saps que per al 2025 s’obligarà als municipis de més de 20.000 habitants tenir Zones de Baixes Emissions. Saps quins són aquests municipis. Saps si el teu municipi haurà de complir aquesta ordenança?” Doncs si en el projecte volem aprendre a programar un mapa interactiu, ho hem de fer dins d’un context, en aquest cas saber quins són els municipis que hauran de complir la normativa de ZBE.

Hem d’ubicar el projecte dins de la programació del mòdul (cicle de DAW, mòdul M06: Javascript).

Hem de parlar de les fases. En el curs hem après que hem de fer 6 fases:

  • disseny i presentació del projecte
  • primeres activitats
  • execució del projecte
  • conclusions de l’alumnat
  • conclusions del docent
  • difusió

Finalment hem de parlar de com farem la difusió del projecte, i finalment com avaluarem aquest projecte.

I amb això ja està tot. Aquest curs s’acaba i crec que ja no ens faran fer cap més tasca. Ara només toca aplicar-ho a l’aula!

Disseny del meu projecte ABP

Disseny del projecte ABP
Títol del projecte: Mapa interactiu dels municipis on s’ha d’aplicar el decret de Zona de Baixes Emissions (ZBE): municipis de més de 20.000 habitants

Els alumnes de 2n de DAW, cap a final de curs, al mòdul de M06 (Javascript) i en col·laboració amb els mòduls de M05 i M08, hauran de fer un mapa interactiu on es visualitzin els mapes de més de 20000, 40000, 100000 i 200000 habitants.

S’utilitzarà mòduls de Javascript i la llibreria Openlayers per a fer el mapa, amb diferents renderitzacions del mapa (el mapa base sobre el que es dibuixaran les icones de les ciutats).

Les dades s’extreuran del IDESCAT (Institut d’Estadística de Catalunya), dades obertes.

Exemple de la proposta
En la imatge es pot veure una possible solució del mapa. Hi ha diferents checkbox per activar/desactivar els grups de ciutats, que són icones sobre el mapa amb diferents colors.

Una altra funcionalitat que es demana implementar és que hi hagi tres tamanys d’icones, i que s’adapti el tamany al nivell de zoom que tenim en el mapa.

El resultat s’haurà de desplegar al VPS que l’institut té en el núvol. Els alumnes també enllaçaran el resultat al seu portfoli.

Aquest projecte ha de ser un entrenament per al mòdul de Projecte (M12) que faran a final de curs, i es demana que utilitzin metodologies àgils, Trello i Github, entre d’altres.

Referències:

Enunciat de Projecte ABP.

La meva proposta de projecte ABP:

Introducció

Zona de Baixes EmissionsZBE: Zones de Baixes Emissions per millorar la qualitat de l’aire.

Segons la llei estatal de canvi climàtic, el 2023 els municipis de més de 50000 habitants hauran de complir els requisits de baixes emissions.

Ara bé, en la Cimera de la Qualitat de l’Aire que s’ha celebrat al Palau de Pedralbes el 18 de març de 2022 (govern de la Generalitat + ajuntaments + diputacions + Port i Aeroport de Barcelona) s’obligarà als municipis de 20.000 habitants de complir també els requisits per al 2025.

Enunciat

Fer un mapa interactiu de Catalunya on es visualitzin els municipis de més de 20.000, 40.000, 100.000 i 200.000 habitants. Utilitza diferents colors. De forma dinàmica i interactiva has de poder filtrar els diferents grups de municipis.

Referències

Checklist per tal de què un enunciat ABP sigui correcte:

  • Que siguin reals
  • Que aportin aprenentatge significatiu
  • Que estiguin relacionats amb els resultats d’aprenentatge del cicle
  • Que aportin competències que no estiguin en cap RA del cicle i que les empreses demanen
  • Que siguin contextualitzables
  • Que permetin creixement personalitzat
  • Que permeti resultats avaluables
  • Que tingui més d’una solució
  • Que exigeixi buscar informació, interpretar-la i dur-la a la pràctica
  • Que sigui assumible quant al calendari, recursos, tecnologies, etc.
  • Que pugui ser reutilitzable, que no sigui necessari canviar de projecte cada curs
  • Que compleixi amb la limitació de la despesa econòmica que tenim com a pressupost pels projectes.

Principis metodològics a l’aula

Joan QuintanaEl primer dia de classe, per introduir el projecte ABP que farem, expliquem els principis metodològics sobre els que els alumnes construiran el seu aprenentatge:

  • L’alumne és el centre de l’aprenentatge
  • L’aprenentatge té naturalesa social. Treballem de forma grupal i interaccionem els uns amb els altres.
  • Es té en compte les emocions. Volem que el procés d’aprenentatge commogui l’alumne
  • Es tindran en compte les diferències individuals: no tothom és igual, tothom té un ritme d’aprenentatge diferent.
  • L’esforç és un punt clau. Volem alumnes motivats per tal de què els alumnes treguin el màxim rendiment de les seves possibilitats.
  • Avaluació contínua. Tant important és la meta a la que volem arribar, com tot el procés que farem durant el projecte.
  • Construim connexions horitzontals. Connectem el nostre projecte amb la resta de mòduls i UFs, amb el món de l’empresa, amb les competències transversals.

MOOC ABP. Diari d’aprenentatge

Joan QuintanaAquest és el meu bloc que utilitzo des del 2009, i en la categoria MOOC-ABP aniré construint el diari d’aprenentatge d’aquest curs online de metodologies actives. De moment aquí va la meva presentació, i tot el que estigui relacionat amb aquest curs anirà a la categoria de MOOC-ABP.

Treballo al INS Jaume Balmes de Barcelona com a professor dels cicles de Desenvolupament d’Aplicacions Web (DAW) i Desenvolupament d’Aplicacions Multiplataforma (DAM), i els meus àmbits preferits són desenvolupament Full Stack i bases de dades.

Referències:

BDQuest: Quests per al llenguatge SQL

Aquest any faig M02 a 1r de DAM (Bases de Dades). Sempre he treballat amb bases de dades, amb els alumnes, però aquesta assignatura feia molt temps que no la feia.

Em vaig animar a l’estiu de fer una eina web per tal de què els alumnes poguessin testejar les seves sentències SQL de forma automàtica, i que també fos un recurs per avaluar i auto-avaluar. Aquesta aplicació és BDQuest, el nom no és molt original, però a aquestes altures ja no m’atraveixo a canviar-lo.

Vam començar el curs i a la UF1 no es fa res de SQL. Però a la UF2, que és la troncal del curs i que ja estem acabant, els alumnes han estat utilitzant l’eina, per tal de fer selects bàsiques, inserts, updates, deletes, create, alter i drop tables, create i drop views, selects complexes, etc.

Els alumnes han fet de conillets d’índies i la versió 10, que és l’actual, l’he anat actualitzant al llarg del trimestre. I funciona molt bé!

I ara que estem acabant la UF2 i falta res per començar la UF3, he adaptat l’aplicatiu per poder fer create i drop users, grant privilegis, etc; i també create procedures, etc. I els triggers ja vindran. És a dir, que l’objectiu inicial de què no només servís per fer selects s’haurà acomplert amb escreix.

Fins ara no havia escrit res ni aquí ni a la wiki. Ja és hora de documentar una mica el projecte i donar-lo a conèixer. A veure si algú en pot treure profit.

A l’aplicació encara li falten moltes coses, però allò important és que aquest any ha sigut funcional. És una típica aplicació web amb molt de Javascript i PHP-MySQL, amb un disseny de moment pelat. L’aplicactiu hauria de créixer per aquí: millorar el disseny; i utilitzar algun framework en el cantó del client i del servidor. I també alguna refactorització del codi i millora d’unes quantes coses.

Municipis de Catalunya (Openlayers)

Hem agafat de l’IDESCAT les dades dels municipis de més de 20.000 habitants de Catalunya (una setantena de municipis), i els hem geolocalitzat.
El que volia practicar en aquesta ocasió era la selecció de capes, i ho volia fer tot amb mòduls (imports) de Javascript, i el codi el més net possible.
Es pot veure el resultat en aquest video.

Catalunya Màgica

S’ha publicat la web de la Catalunya Màgica: dimonis, infern, bruixes i diables, amb informació agafada de OpenStreetMap.

Hem utiltizat OpenLayers 6.5.0 (amb el paradigma de imports), i les tiles estàndard de OSM i també TRESC, una capa de visualització que m’agrada molt. Les dades que s’obtenen poden ser nodes o vies, i hi ha hagut una feina prèvia de netejar una mica les dades, però tot plegat ha sigut un procés molt ràpid.

Referències:

Gràfics interactius amb Jupyter Notebooks: tir parabòlic

Ara que ja he començat a fer proves amb Jupyter Notebook, el següent pas que vull provar és fer gràfics interactius. Doncs ha resultat ser més fàcil i ràpid del que pensava.

Parteixo d’un script python que simula les dades experimentals d’una trajectòria parabòlica, i calcula la paràbola que millor s’hi ajusta (regressió quadràtica). A partir de l’equació de la paràbola es pot deduir la constant g (=9,81 m/s2). Simulo les dades experimentals introduïnt un error de soroll en les dades teòriques. Doncs bé, amb el meu gràfic interactiu puc jugar amb el nivell de soroll, i amb el número de punts de mostreig, tal com es veu en el video. El codi queda de la següent manera:

%matplotlib inline
from ipywidgets import interactive
import numpy as np
import pylab as plt
from IPython.display import display, Math, Latex

# tir parabòlic: y = vy*t - .5gt^2
vy = 10 # 10m/s
g = 9.81 # m/s^2
t_max = 2*vy/g

def f(nivell_soroll, num_punts):
    t = np.linspace(0, t_max, num_punts)
    y_or = vy*t - .5*g*t**2
    noise = np.random.normal(0, nivell_soroll, num_punts) # simulem dades experimentals
    y = y_or + noise

    # ajustament a una paràbola
    z = np.polyfit(t, y, 2)
    g_exp = 2.0*z[0]

    t_ = np.linspace(0, t_max, 100)
    y_ = z[0]*t_**2 + z[1]*t_ + z[2]

    fig, ax = plt.subplots()
    plt.plot(t_, y_, t, y, 'bo')
    plt.suptitle("Tir parabòlic. Regressió quadràtica")
    plt.title("y = " + str(round(z[0],3)) + "t^2 + " + str(round(z[1],3)) + "t + " + str(round(z[2],3)) + " -> g exp = " + str(round(g_exp,3)) + " m/s^2")
    ax.set(xlabel='temps (s)', ylabel='y (m)')
    ax.grid()
    plt.show()
    
interactive_plot = interactive(f, nivell_soroll=(0.0, 2.0),  num_punts=(10, 50))
interactive_plot

Una altra cosa que m’interessa és la manera d’exportar aquests Jupyter Notebooks a una web, conservant les gràfiques i les fórmules en format Latex (encara que es perdi la interacció amb les gràfiques). Això s’aconsegueix directament exportant el Notebook a html:

$ jupyter nbconvert --execute tir_parabolic.ipynb --to html

i integrant aquest codi en una web on hi hagi més text i explicacions, i amb la llibreria Bootstrap.