Mario Marino

progettista e sviluppatore di applicativi gestionali e sistemi basati su LLM

ScuolaAperta

Un orario scolastico è un problema di vincoli, prima che di interfaccia

Periodo
2011 – 2015
Ruolo
progettazione e sviluppo
Stato
non più online

Fra il 2011 e il 2015 ho lavorato come docente di informatica e responsabile dei processi informatici al CFP IPEA e all'Agenzia Formazione Lavoro (AFL), due enti di formazione professionale accreditati dalla Regione Veneto. ScuolaAperta è nata lì, per l'ente in cui lavoravo: l'ho progettata e sviluppata da solo, dentro quel ruolo, non come commessa per un cliente esterno.

tre sezioni, un solo incrocio di dati

La piattaforma è web e multiutente, divisa in tre sezioni: il registro elettronico, l'orario scolastico e il gestionale delle attività amministrative. Le tre sezioni si appoggiano allo stesso incrocio di dati — orari, materie, classi, docenti, sedi, allievi, assenze — letto da punti diversi a seconda di chi accede.

il problema è nei vincoli

Costruire un orario scolastico è un problema di vincoli. Un docente ha una sola disponibilità in un dato momento. Una classe segue una materia alla volta. Le sedi sono distinte, e chi si sposta da una all'altra impiega un tempo che va conteggiato. Due lezioni che si contendono lo stesso docente, o la stessa aula, nello stesso momento, sono l'errore che il sistema deve impedire prima che l'orario venga pubblicato. Scritto così sembra ovvio; costruire la logica che lo verifica, su classi, sedi e materie reali, è la parte che ha richiesto lavoro.

Il registro elettronico porta un vincolo di natura diversa: lo usano ogni giorno docenti e famiglie, non collaudatori. Un errore lì si vede subito, e da chi non ha modo di aggirarlo.

perché "Orario Aperto"

Chi arriva a questa pagina da un vecchio indirizzo, www.mariomarino.org/orario-aperto, stampato sul CV del 2020, è nel posto giusto. Orario Aperto era il nome della pagina che descriveva la sezione dell'orario di questo stesso progetto; ScuolaAperta è il progetto intero, orario compreso.

stack

HTML5, CSS3, MySQL, jQuery, AJAX, framework CodeIgniter, pattern MVC.