TdP-prove-finali / Introduzione

Istruzioni e documentazione per la proposta e lo svolgimento delle prove finali relative al corso di Tecniche di Programmazione.
http://bit.ly/tecn-progr
Apache License 2.0
4 stars 13 forks source link

Software per la gestione e l'ottimizzazione delle prenotazioni delle lezioni: il caso di un'associazione per DSA #122

Closed ManuelGajoni closed 1 month ago

ManuelGajoni commented 1 month ago

Studente proponente s258753 Gajoni Manuel

Titolo della proposta Software per la gestione delle prenotazioni delle lezioni: il caso di un'associazione per DSA.

Descrizione del problema proposto Lavorando in un’associazione che fornisce tra i vari servizi quello di tutoraggio e ripetizioni per gli studenti, ho riscontrato come la gestione delle prenotazioni possa essere problematica, soprattutto se non gestita correttamente. E’ presente una richiesta altamente variabile da parte degli studenti che dipende dal periodo scolastico in cui ci si trova. I tutor, a loro volta, garantiscono delle disponibilità che possono variare da settimana a settimana e non garantiscono di poter seguire tutte le materie scolastiche. Ad oggi le prenotazioni sono gestite dal solo utilizzo di un foglio di calcolo di Excel, questo metodo presenta alcune problematiche date dalla difficoltà nel reperire informazioni su studenti e tutor. La mancanza di programmazione dovuta dalla compilazione del calendario, che viene fatta giornalmente, comporta un aumento del rischio di imprevisti e del tempo richiesto.

Descrizione della rilevanza gestionale del problema Per questo problema è fondamentale la componente gestionale perché per poter migliorare l’efficienza delle prenotazioni è importante l’organizzazione nella fase iniziale dell’assegnazione della lezione al tutor. Il ‘collo di bottiglia’ del processo sono, appunto, i tutor per via della loro disponibilità variabile e l’impossibilità di seguire tutte le materie scolastiche quindi, la loro gestione diventa fondamentale per poter aumentare il numero di lezioni annue. Un altro problema che può essere risolto è la tempestività nel risolvere eventuali problemi di accoppiamento tutor-studente. Lo scopo del progetto è quello di confrontare in 5/6 mesi i tre metodi di prenotazione: quello utilizzato fino ad oggi dall’associazione, quello con l’utilizzo di questo programma in modalità ‘manuale’ sfruttando la tab 'GESTISCI LEZIONI' e in modalità ‘automatica’ con ‘CALCOLA LEZIONI GIORNO’ con lo scopo di capire le reali funzionalità e limiti del metodo automatico.

Descrizione dei data-set per la valutazione I Data-Set utilizzati saranno creati da zero grazie ai dati reali che mi verranno forniti dall’associazione. Le dimensioni del database saranno di circa 100/150 studenti, 15/20 tutor e lezioni prenotate lungo tutto l’anno scolastico 2023/24. Le tabelle che verranno create saranno le seguenti:

Nome, Cognome: Saranno salvate due stringhe di caratteri durante la registrazione dello studente. Id_Stud: Viene generato un ID univoco per ogni studente. Classe: Può assumere valori: ‘Elementari’, ‘Medie’, ‘Superiori’ e ‘Università’. Info_Scheda: E’ un testo inserito manualmente durante la registrazione dello studente che contiene la scheda con tutte le informazioni comportamentali e didattiche dello studente. Dsa_S: Indica se c’è una certificazione per DSA o BES.

Nome, Cognome: Saranno salvate due stringhe di caratteri durante la registrazione del tutor. Id_Tut: Viene generato un ID univoco per ogni tutor. Dsa_T: Indica se il tutor ha un certificato adatto per insegnare ad uno studente DSA o BES. Materie: E’ un elenco di materie che il tutor è in grado di seguire, il livello di approfondimento è dalle superiori. Disponibilità: E’ un elenco di date nelle quali il tutor ha dato disponibilità per fare lezione. Formazione: Sarà indicata la formazione scolastica del tutor tramite una stringa di testo.

Id_Tut, Id_Stud: identificativo univoco di tutor e studente. Id_Lez: Identificativo univoco della lezione. Giorno, Orario: Indicano il giorno e l’ora nella quale viene svolta la lezione. Materia: Indica la materia della lezione. Info_lezione: un testo inserito durante la prenotazione della lezione nella quale vengono indicate le informazioni come ad esempio l’argomento della lezione o altre richieste.

Nome_Materia: Un elenco di tutte le materie.

Descrizione preliminare degli algoritmi coinvolti Nell’applicazione saranno presenti 4 schede: Gestisci lezioni, Gestisci studenti, Gestisci tutor e Resoconto. Le sezioni ‘Gestisci studenti’ e ‘Gestisci Tutor’ sono dedicate all’inserimento e alla gestione dei dati degli studenti e tutor nel database. La sezione ‘Resoconto’ è dedicata alla stampa delle lezioni ed ore dei tutor (o studenti) nel mese selezionato. La sezione più rilevante a livello algoritmico è quella ‘Gestisci lezione’ nella quale ci saranno due sezioni: Lezioni singole e Lezioni multiple. Nella sezione ‘Prenotazione lezioni multiple’ sarà possibile prenotare e gestire più lezioni contemporaneamente grazie a due algoritmi:

CALCOLA LEZIONI: Se uno studente dovrà prenotare più di una lezione, sarà possibile svolgerlo in maniera automatica tramite questo pulsante. In un primo momento verranno aggiunte tutte le lezioni richieste, senza selezionare il tutor a cui affidare la lezione. In un secondo momento il programma calcolerà i migliori accoppiamenti possibili con i tutor tramite una funzione ricorsiva con grafi pesati nei quali il peso sarà determinato grazie ad una tabella dei punteggi precedentemente stabilita in collaborazione con l’associazione. Questa tabella andrà dal punteggio più basso (0) assegnato ad un tutor che non ha mai seguito lo studente e non è in grado di seguire la materia richiesta per la lezione, fino al punteggio più alto (6) nel quale il tutor non solo è in grado di seguire la materia indicata ma ha già seguito lo studente sulla medesima materia nell’ultimo periodo. Lo scopo dell’algoritmo sarà quello di massimizzare quindi il punteggio di ogni assegnazione per poter garantire il miglior servizio possibile. La preparazione del tutor non è il solo criterio che verrà analizzato perché, a parità di punteggio finale, sarà preferita la soluzione che permette di impiegare il maggior numero di tutor già a contratto piuttosto che i liberi professionisti, che collaborano con l'associazione e che possono essere assunti ‘a chiamata’. Ci saranno altri criteri fondamentali per le prenotazioni, ad esempio, la presenza di un certificato DSA da parte dello studente che lo farà abbinare, nei casi più delicati, con soli tutor che hanno una pregressa formazione certificata, indicata nel campo ‘Dsa_T’.. L’algoritmo avrà lo scopo di trovare il percorso di assegnazione Studenti-Tutor che garantisca il maggior punteggio possibile tenendo però conto dei vincoli sulla preparazione dei tutor (nessun accoppiamento sarà accettato se il suo punteggio sarà < 1), sul numero di tutor già a contratto (massimizzare questo numero per aumentare i ricavi) e sulla presenza del certificato DSA.

CALCOLA LEZIONI GIORNO: Questo programma è pensato per essere utilizzato per calcolare il calendario delle lezioni per una data selezionata oppure nei casi di ‘emergenza’ nei quali uno studente o un tutor chiedono un cambiamento all’ultimo e c’è la necessità di riorganizzare tutte le lezioni della giornata. Il principio di funzionamento è il medesimo di ‘CALCOLA LEZIONE’, una funzione ricorsiva con grafi pesati che collegano la classe studente con la classe tutor dove il peso è calcolato con lo stesso metodo visto in precedenza. In questo caso per gli n studenti che hanno prenotato la lezione al giorno selezionato cerco quale degli n tutor che ha dato disponibilità fornisca, nel complessivo, la soluzione migliore. I vincoli e i punteggi utilizzati all’interno dell’algoritmo rimangono invariati.

Descrizione preliminare delle funzionalità previste per l’applicazione software L’applicazione è pensata per essere utilizzata dalla persona preposta alle prenotazioni delle lezioni e dal tesoriere dell’associazione per compilare il resoconto mensile riguardante i dipendenti. L’interfaccia avrà quattro schede principali:

La tab principale sarà suddivisa, a sua volta, in due sezioni: la prima è pensata per le prenotazioni delle lezioni singole, mentre la seconda è per le lezioni multiple. LEZIONI SINGOLE: Le funzionalità sono: DISPONIBILITA’ TUTOR: Stamperà un elenco di giorni ed orari nei quali il tutor selezionato nel menu a tendina sarà disponibile per avere lezione, al fine di dare continuità al percorso didattico. VERIFICA: Stamperà un elenco di tutor disponibili a seguire lo studente, elencandoli in ordine dal più indicato a seguirlo al meno indicato, questa funzione sarà utile per capire quale possa essere la scelta migliore del tutor. PRENOTA/CANCELLA: Permette di prenotare o cancellare una lezione singola. LEZIONI MULTIPLE: Le funzionalità sono: CALCOLA LEZIONI: Il software calcolerà in maniera automatica i migliori accoppiamenti possibili con i tutor. CALCOLA LEZIONI GIORNO: Indicando il giorno desiderato tramite il menu a tendina ‘Giorno’ sarà possibile calcolare in maniera automatica le assegnazioni delle lezioni per la giornata indicata.

In questa tab sarà possibile gestire gli studenti presenti nel database, perché solo gli studenti registrati potranno prenotare una lezione. Sono presenti i seguenti campi: Nome e cognome studente, classe, un box in cui aggiungere informazioni e una spunta per indicare la certificazione DSA. Le funzionalità sono:

AGGIUNGI/RIMUOVI/AGGIORNA: Permette di aggiungere, rimuovere o aggiornare i dati degli studenti nel Database.

In questa tab sarà possibile gestire i tutor che attualmente sono disponibili per fare lezione. Le funzionalità sono:

AGGIUNGI/AGGIORNA/RIMUOVI: Permette di aggiungere, rimuovere o aggiornare i dati dei tutor nel Database. AGGIUNGI/RIMUOVI DISPONIBILITA’: Permette di aggiungere o aggiornare le disponibilità dei tutor nel Database.

Quest’ultima tab è dedicata al resoconto mensile dell’associazione, nella quale è possibile ottenere resoconti relativi alle lezioni e alle ore dei tutor o degli studenti. Le funzionalità sono:

RESOCONTO TUTOR: Stamperà tutte le informazioni relative alle lezioni già svolte dal tutor indicato nel mese selezionato. RESOCONTO STUDENTE: Stamperà tutte le informazioni relative alle lezioni già svolte dallo studente indicato nel mese selezionato. LEZIONI PRENOTATE: Stamperà tutte le informazioni relative alle lezioni già prenotate per i giorni successivi.