Credito parziale: dall'ideazione all'implementazione

31 agosto 2015 | Di

Saluti! Mi chiamo Colin Fredericks. Lavoro ad HarvardX come Senior Project Lead, il che significa che la maggior parte del mio lavoro consiste nell'aiutare i professori di Harvard a realizzare corsi di qualità. Tuttavia, negli ultimi mesi ho lavorato, principalmente nel mio tempo libero, all'aggiunta credito parziale alla piattaforma Open edX.

Mi piace molto la piattaforma Open edX, ma sono sempre rimasto sorpreso dal fatto che non ci fosse modo di assegnare crediti parziali. Dopo aver insegnato al college e al liceo, sembrava una svista così ovvia che continuavo ad aspettarmi di vederlo nell'elenco delle "prossime funzionalità". Dopo tre anni di attesa ho deciso di prendere finalmente in mano la situazione.

Ora, non sono un programmatore professionista. (Potresti sentire musica sinistra in sottofondo. Lo chiamiamo "prefigurazione.") Ho imparato Applesoft BASIC in quarta elementare, programmazione TI-4 al liceo, C++ al college, Python mentre lavoravo al MIT e Javascript mentre ero disoccupato, ma non avevo mai contribuito a uno sforzo open source prima. Non avevo mai scritto il codice di prova. Diamine, sapevo a malapena che esistesse il codice di test. (Un'ombra cade sulla fotocamera. Più presagio.) Ho deciso che avrei aggiunto un tipo di credito parziale a un solo tipo di problema, mantenendo le cose semplici in modo da poterlo gestire in una o due settimane. (Anche questo è prefigurativo.)

Erano i primi di aprile. Ho raggiunto il mio obiettivo originale in due giorni e poi il progetto si è rapidamente gonfiato nel suo stato attuale. Ero convinto di espandermi da un singolo tipo di problema a tutti quelli che potevo ragionevolmente gestire e di scrivere a proposta a tutti gli effetti che ha finito per essere lungo 16 pagine. 

Durante l'implementazione di questa funzione, ho scoperto questa roba del "codice di prova" e dei "controllori della qualità del codice" e altre cose di cui (saggiamente) non parlano alla gente in Computer Science II. Ho iniziato dal Guida per sviluppatori edX, come meglio ho capito, con i suoi bel diagramma di flusso. Ho aperto un biglietto di proposta su JIRA, ho creato un repository github per il mio codice, ha aperto il mio prima di tutto richiesta di pull, ha fatto un po' di sviluppo in più, ha ricevuto molti buoni feedback (la maggior parte dei quali ho incorporato), ho imparato a eseguire il rebase correttamente, ha aperto a richiesta pull nuova e migliore, e ho fatto un po' più di codifica. Finalmente, dopo circa 15 settimane di sviluppo, sono orgoglioso di dire che la funzionalità è stata incorporata nel ramo master della piattaforma edx!

Credito parziale: dettagli sulle funzionalità

Ecco una rapida carrellata di come appare attualmente questa funzione. Si noti che attualmente, gli autori possono abilitare solo crediti parziali modificando direttamente la definizione OLX di un problema.

Scelta multipla e Discesa i problemi hanno un tipo di credito parziale disponibile: la valutazione in stile “Punti”. L'autore del corso elenca alcune scelte che valgono un credito parziale e, facoltativamente, imposta quanto vale il credito (l'impostazione predefinita è 50%). Come effetto collaterale, i problemi a discesa sono stati aggiornati in modo che più di una scelta possa essere contrassegnata come corretta.

casella di controllo i problemi hanno due tipi (mutuamente esclusivi) di credito parziale disponibili: stile "Metà", in cui una risposta perfetta dà il 100% di credito e ogni errore dimezza il credito, e stile "Ogni decisione conta", in cui ogni casella di controllo si trasforma effettivamente nella sua domanda vero/falso separata.

Ecco un esempio di come un autore di un corso abiliterebbe il credito parziale in stile "Ogni decisione conta" (o "EDC") in un problema di Studio:

La definizione OLX di una casella di controllo EDC risponde a un problema di credito parziale. Vedere la documentazione per maggiori dettagli.

Ecco come apparirà il problema agli studenti:

Problema della casella di controllo EDC con 3 risposte vere e 2 risposte false. Verificando una risposta vera e una risposta falsa si ottiene un punteggio totale di 0.4 su 1 punto.

Numerico i problemi hanno anche due tipi disponibili: stile "Elenco", in cui l'autore elenca le risposte che contano per un credito parziale (ad esempio in un problema di matematica, le risposte con credito parziale potrebbero essere quelle che derivano dalla mancanza di un segno negativo o dall'inversione di una frazione) e Stile "Close", che espande la tolleranza data per consentire un approccio "ferri di cavallo e bombe a mano". Poiché i due stili sono compatibili, puoi usarli entrambi nello stesso problema, se lo desideri.

Ecco come un autore di un corso può definire un problema numerico con crediti parziali in stile “lista”:

Ecco come apparirà il problema agli studenti:

Un problema di credito parziale a risposta numerica. La risposta corretta è 93*10^6 miglia; accettato per credito parziale è il valore in chilometri. Ciò produce un valore in punti totale di 0.5 su 1 punto.

Infine, il Python personalizzato i problemi ora possono restituire non solo un valore in punti, ma un indicatore del fatto che il problema sia considerato completamente o solo parzialmente corretto.

Per maggiori dettagli su come aggiungere credito parziale ai problemi, vedere la documentazione del credito parziale.

Sono molto contento di come è venuto fuori tutto questo. Il progetto ha richiesto più tempo di quanto pensassi, ma è anche molto più potente. Fornisce un quadro che semplifica l'aggiunta di crediti parziali ad altri tipi di problemi in futuro, qualcosa di cui spero davvero che le persone ne traggano vantaggio. 

Cosa sta arrivando nella v2? 

Bene, in primo luogo, ho pianificato una v1.5 che ripulisce alcuni dei circostante codice, in modo che i futuri contributori al modulo Capa non avranno tanti problemi come me. Dopodiché, più tipi di problemi, ovviamente! Sto anche cercando di rendere disponibile questa funzione per problemi comuni senza utilizzare XML, ovvero dando agli istruttori la possibilità di utilizzare questa funzione dall'editor markdown di Studio. C'è qualche ulteriore generalizzazione del codice che potrebbe essere fatta. Da qualche parte in futuro c'è anche la possibilità di aggiungere la valutazione basata sui tentativi... ma facciamo le cose un passo alla volta.

Non posso che elogiare quanto siano state meravigliose e utili tutte le persone di edX durante questo processo. Sono arrivato con un'infarinatura di conoscenza di Python e Javascript e ne sono uscito con competenze molto più solide e una comprensione di com'è contribuire a un progetto open source. Sarina Canelake, Leslie Gerhat, Piotr Mitros, Mark Sadecki, Marco Morales, Ben Patterson, Diana Huang, Mark Hoeber e altri hanno preso tempo dalle loro intense giornate per aiutarmi a capire e perfezionare il mio codice. Non vedo l'ora di vederlo usato in natura.

Non mi considero ancora un programmatore professionista, ma grazie a questo lavoro mi sto avvicinando.

Colin Fredericks è un capo progetto senior presso HarvardX. Nel resto del tempo libero si diverte a cucinare, scrivere giochi di ruolo, ed essere amico di tutti gli animali.

 

Caricamento in corso

Tempo per altro? Dai un'occhiata agli articoli qui sotto.

Risolvere i problemi insieme: sviluppo di piattaforme guidate dalla comunità
Competenze e sviluppo del futuro alla conferenza Open edX
Workshop per sviluppatori della conferenza Open edX
Riconquistare il nostro futuro digitale: perché mi sono unito all'Open Renaissance Group
Partecipa alla conferenza Open edX 2026!

La conferenza Open edX del 2026 presenterà casi d'uso innovativi per uno dei migliori sistemi di gestione dell'apprendimento online open source al mondo, la piattaforma Open edX, e scoprirà gli ultimi progressi nella progettazione didattica, nella costellazione dei corsi e nei metodi per utilizzare ed estendere la piattaforma Open edX , comprese tecnologie rivoluzionarie, come l'intelligenza artificiale generativa.