Progetti
- #progetti
- #programmazione
In questa lezione
- 1. Introduzione
- 2. Lavoro di gruppo
- 3. Tabella dei progetti
- 4. 🟨 Python
- 4.1 Tutorials
- 4.2 💽 Applicazioni di analisi dei dati
- 4.3 Suggerimenti per la Realizzazione
- 4.4 🕹 Giochi da tavolo
- 4.5 🤖 Bot
- 4.6 💽 Applicazioni
- 5. 🟩 Java / C#
- 5.1 Tutorials
- 5.2 💽 Applicazioni
- 6. 🟨 C/C++
- 6.1 Installatore Automatico con Chocolatey
- 6.2 Gestore File / Backup Automatico
- 6.3 Mini-Engine Testuale / Gioco Rogue-like
- 6.4 Calcolatrice Scientifica Avanzata
- 7. 🟦 Unity / Godot
- 7.1 Tutorials
- 7.2 Link utili
- 7.3 Videogioco
1. Introduzione
I progetti elencati qui sotto sono alla portata di tutti! Se non sapete fare qualcosa, è del tutto normale, li ho resi apposta così, altrimenti dove sarebbe il bello? 😉 L’obiettivo è anche quello di mettersi alla prova. Non abbiate paura di sbagliare; ricordatevi che il mondo del web è ricco di informazioni e tutorial su come fare qualsiasi cosa. Per ogni dubbio e/o perplessità potete sempre contare su di me 😀.
Le consegne dei vari progetti non devono essere seguite alla lettera. Sentitevi liberi di modificare, aggiungere e rivedere i punti elencati. Siate curiosi e cercate di divertirvi. Fateli anche in gruppo!
Ricordate che per un informatico avere dei progetti personali è fondamentale per fare curriculum per le aziende, oltre che servire a voi stessi per sperimentare, imparando ed avere una marcia in più degli altri! 🚀
Poiché sono elencati diversi tipi di linguaggi e progetti, potreste sentirvi un po’ persi su cosa scegliere. In tal caso, non esitate a contattarmi su Discord: vi guiderò nella scelta più adatta a ciascuno di voi. 💯
La chat Discord dedicata al progetto è #🎎general. Preferirei che tutte le domande, sia generali che personali, venissero poste lì.
2. Lavoro di gruppo
Se scegliete di lavorare in gruppo, è consigliabile utilizzare un sistema come Google Drive per condividere il progetto con tutti i componenti del team. Tuttavia, per il mondo della programmazione, è preferibile utilizzare GitHub. GitHub è un’applicazione gratuita che i programmatori usano sia come bacheca personale per i progetti, sia per organizzare il lavoro di squadra.
3. Tabella dei progetti
| Titolo Progetto | Linguaggio | Difficoltà (1-5) | Progetto TOP | Descrizione Sintetica | Suggerimenti Didattici |
|---|---|---|---|---|---|
| Analisi Dati Meteo | Python | 🟢 2 | ✅ | Analizza dati climatici da file, calcola medie, visualizza grafici. | Ottimo per introdurre pandas, matplotlib, e GUI semplici. |
| Analisi Social Media (tweet/post) | Python | 🟠 3 | ✅ | Usa API per scaricare post e analizzarli (sentiment, parole chiave, frequenze). | Introduzione alle API e al text mining con GUI interattiva. |
| Dama (Checkers) | Python (pygame) | 🟠 3 | Gioco da tavolo con logica di movimento, catture e promozioni. | Rafforza la logica, il disegno della GUI e la gestione degli eventi. | |
| Gioco dell’Oca | Python (pygame) | 🟢 2 | Simulazione di gioco da tavolo classico con dado e percorsi. | Buon progetto introduttivo con struttura base. | |
| Risiko | Python (pygame) | 🔴 5 | Strategico con mappe, turni, truppe, battaglie e obiettivi. | Richiede struttura dati complesse e gestione grafica avanzata. | |
| Previsioni Finanziarie Personali | Python | 🔴 4 | ✅ | Inserisci spese, investimenti e ottieni 30 simulazioni patrimoniali con inflazione e rendimento stimato. | Unisce matematica, statistica, modelli predittivi e visualizzazioni interattive. |
| Discord Tutor Bot | Python | 🔴 5 | ✅ | Bot Discord per supporto a lezioni private: quiz, spiegazioni, esercizi, gestione studenti e reminder. | Ottimo per imparare integrazione API, gestione database, GUI/UX bot e logica avanzata. |
| Generatore di esercizi interattivi | Python (Sympy + Flask/Streamlit) | 🟠 3 | ✅ | Genera automaticamente esercizi di matematica e fisica con parametri casuali, mostra la soluzione passo-passo. | Ottimo per didattica matematica/fisica, esercizi randomici, possibilità di esportare su web o PDF, base per gamification futura. |
| Discord Knowledge Bot | Python (discord.py + SQLite) | 🟢 2 | ✅ | Bot Discord che invia periodicamente messaggi con pillole di nozioni tecniche o matematico-scientifiche. | Stimola la community, diffonde conoscenza, facile da aggiornare con nuovi contenuti. |
| Progress Tracker personalizzato | Python (Dash/Streamlit + SQLite) | 🟠 3 | ✅ | Monitora gli esercizi svolti dagli studenti, mostra grafici di miglioramento e assegna badge/livelli. | Permette analisi dei progressi, gamification, facile integrazione con esercizi generati. |
| Visualizzatore di soluzioni passo-passo | Python (Sympy + Streamlit) | 🟢 2 | ✅ | Mostra la risoluzione dettagliata di esercizi matematici/fisici e grafici interattivi. | Utile per studenti di analisi e fisica, aiuta a comprendere i passaggi intermedi e verifica le soluzioni. |
| Installer Automatico con Chocolatey | C++ (o C#) | 🟢 2 | ✅ | App che installa/rimuove software leggendo un file, integrando Chocolatey e il sistema. | Ottimo per imparare automazione, scripting, gestione file e chiamate a processo. |
| Gestione Password con generatore sicuro | Java / C# | 🟠 3 | Generatore e archivio sicuro di password con GUI, salvataggio criptato. | Utile per esercitarsi su GUI, file JSON e crittografia base. | |
| Gestione Finanze Personali | Java / C# | 🟠 3 | ✅ | CRUD di entrate/uscite con categorizzazione e statistiche mensili in grafico. | |
| Gestionale di Assistenze Tecniche PC | Java / C# / Python | 🟠 3 | ✅ | Sistema per la gestione dei ticket di assistenza: clienti, tecnici, stato interventi e report PDF. | Ottimo esempio di CRUD completo, database relazionale e GUI aziendale. |
| Quiz Game Interattivo | Java / C# | 🟠 3 | ✅ | Gioco a quiz con domande casuali, timer e punteggi, GUI completa. | Eccellente esercizio di logica, eventi e progettazione interattiva. |
| Gestionale Aziendale per Dipendenti | C# / Java | 🔴 4 | ✅ | Applicazione gestionale per dipendenti: anagrafiche, stipendi, ferie, ruoli e report. | Introduce gestione ruoli, database complessi e autenticazione base. |
| Gestore File / Backup Automatico | C++ / C# | 🟠 3 | App che automatizza il backup di file/cartelle con log e pianificazione. | Ottimo per imparare accesso file system e gestione eventi temporali. | |
| Mini-Engine Testuale / Gioco Rogue-like | C++ / Java / Python | 🔴 5 | ✅ | Gioco testuale con mappa random, combattimenti e salvataggio partita. | Perfetto per consolidare OOP, generazione procedurale e gestione input. |
| Calcolatrice Scientifica Avanzata | C++ / C# | 🟠 3 | Calcolatrice con funzioni matematiche avanzate e grafico 2D opzionale. | Esercizio ideale per GUI, parsing e calcoli matematici complessi. |
4. 🟨 Python
Nota
Descrizione
Questi progetti sono pensati per chi desidera sviluppare applicazioni di data analysis per la creazione di report, lo studio dei dati e la generazione di grafici, oppure per chi vuole divertirsi a sviluppare qualche gioco da tavolo con interfaccia grafica.
I progetti qui sotto elencati possono essere sviluppati come applicazione desktop oppure come applicazioni web.
N.B. I progetti elencati sono pensati anche per coloro che non hanno mai programmato in python.
Prerequisiti consigliati
- conoscenza base della programmazione;
Topics
- GUI (interfaccia grafica);
- data analisys;
- lettura e scrittura su file;
- plotting in grafici dei dati;
- strutture dati di base;
- API;
4.1 Tutorials
- programmare in python
- matplotlib per analisi dei dati
- pygame per giochi
- piattaforma (scegletene una):
- Desktop: tkinter / customtkinter
- Web: Streamlit
- Mix: Flask/FastAPI + Pywebview / BeeWare (Toga)
4.2 💽 Applicazioni di analisi dei dati
Questi progetti forniranno una buona introduzione all’analisi dei dati e allo sviluppo di interfacce grafiche, oltre a essere divertenti e istruttivi.
4.2.1 Analisi dei Dati Meteo
- Difficoltà: 🟢 2/5
- Motivo: Ottimo per principianti, utilizza dataset semplici e librerie standard.
Prerequisiti e competenze necessarie: liste, cicli, condizionali, funzioni, classi e oggetti.
Descrizione: Scarica un dataset di dati meteorologici (ad esempio, temperature giornaliere, precipitazioni, umidità) e analizza i dati per trovare tendenze e modelli.
Componenti:
- Raccolta dati: Utilizzare librerie come
pandasper caricare e gestire i dati. - Analisi: Calcolare medie, massimi, minimi, e altri statistiche.
- Visualizzazione: Utilizzare
plotly/matplotlib/seabornper creare grafici di tendenza, istogrammi, ecc. - Interfaccia grafica: Creare una semplice GUI con
tkinter/customtkinter/streamlitche permetta di selezionare il tipo di grafico e il periodo di tempo da analizzare. Dovrà comprendere:- Componenti della GUI:
- Finestra Principale;
- Sezione Caricamento Dati → Pulsante “Carica File”;
- Selezione dei Parametri → Menu a Tendina “Seleziona Parametro” (es. temperatura, precipitazioni, umidità);
- Selezione del Periodo di Tempo → calendario;
- Selezione del Tipo di Grafico;
- Pulsante “Genera Grafico”;
- Area di Visualizzazione del Grafico;
- Pulsante “Salva Grafico”;
- Sezione di Output Testuale → medie, massimi, minimi, ecc…;
- Funzionalità della GUI:
- Caricamento del Dataset;
- Selezione del Parametro e Periodo di Tempo;
- Generazione e Visualizzazione del Grafico;
- Salvataggio del Grafico;
- Componenti della GUI:
4.2.2 Analisi dei Dati sui Social Media
- Difficoltà: 🟠 3/5
- Motivo: Integrazione con API, analisi testuale, GUI intermedia.
Prerequisiti e competenze necessarie: liste, cicli, condizionali, funzioni, gestione API, base di analisi testo
Descrizione: Scaricare ed analizzare i dati relativi a tweet o post su un certo argomento per vedere tendenze, sentimenti e parole chiave.
Componenti:
- Raccolta dati: Utilizzare API come quella di Twitter per scaricare i dati.
- Analisi: Usare librerie come
textblobper l’analisi del sentiment,wordcloudper creare nuvole di parole, ecc. - Visualizzazione: Grafici a torta per la distribuzione dei sentimenti, nuvole di parole per le parole più frequenti, grafici a linee per il numero di tweet/post nel tempo.
- Interfaccia grafica: Una GUI con
tkinter/customtkinter/streamlitper inserire l’argomento di interesse e visualizzare i risultati dell’analisi.- Componenti della GUI:
- Finestra Principale;
- Sezione di Input dell’Argomento:
- Label “Inserisci Argomento”;
- Campo di Testo;
- Pulsante “Cerca”;
- Spunta per opzioni avanzate (Opzionale);
- Sezione di Analisi dei Dati:
- Pulsante “Analizza Dati”;
- Progresso dell’Analisi;
- Visualizzazione dei Risultati:
- Grafico a Torta per la Distribuzione dei Sentimenti (positivo, negativo, neutro).
- Nuvola di Parole;
- Grafico a Linee per il Numero di Tweet nel Tempo;
- Tabella Riassuntiva;
- Sezione di Salvataggio dei Risultati:
- Pulsante “Salva Risultati”;
- Sezione di Output Testuale:
- Area di Testo per il Feedback / Log;
- Funzionalità della GUI:
- Input e Raccolta dei Dati;
- Analisi dei Dati;
- Visualizzazione Interattiva;
- Salvataggio dei Risultati;
- Componenti della GUI:
Bonus opzionali (per versione avanzata): Tecnica AI → ****Natural Language Processing + sentiment analysis + clustering.
- Analisi più sofisticata dei testi (usare modelli tipo BERT, anche semplificati).
- Clustering dei tweet per individuare “topic nascosti”.
- Previsione del numero di tweet futuri su una tematica con modelli time series.
4.2.3 Simulatore di Previsioni Finanziarie Personali con Random Walk
Difficoltà: 🔴 5/5
Prerequisiti e competenze necessarie: liste, cicli, condizionali, classi/oggetti, numpy, pandas, grafici matplotlib/seaborn, interfacce GUI base
Lingue consigliate: Python (per via di numpy, matplotlib, pandas, scipy, tkinter / streamlit)
Descrizione:
Questa applicazione simula l’evoluzione del patrimonio personale nel tempo (es. 10, 20, 30 anni), partendo da parametri come:
- età,
- capitale liquido attuale,
- spese mensili,
- investimenti mensili,
- rendimenti stimati,
- inflazione stimata,
- condizioni abitative (affitto, mutuo, mantenuto).
- Rendimento medio atteso degli investimenti (% annuo)
- default: 4-7%
- Deviazione standard dei rendimenti (per il modello gaussiano)
- default: 10-15% (maggiore instabilità = simulazioni più varie)
- Percentuale spese variabili (oscillazione mensile)
- per simulare mesi con più o meno spese (es. imprevisti o ferie)
- Probabilità di eventi imprevisti
- esempio: ogni 5 anni c’è il 30% di probabilità di una spesa straordinaria
- Crescita stipendio/entrate annuale prevista (%)
- per studenti che entreranno nel mondo del lavoro
- o per tenere conto di promozioni / inflazione salariale
- Data stimata di pensionamento
- per simulare un calo o azzeramento degli investimenti dopo quella data
- Tassazione sugli investimenti (%)
- per rendere il calcolo netto più realistico
- Tipologia investimento (rischio alto, medio, basso)
- che modifica media e deviazione standard
Obiettivo:
Usare un modello stocastico per generare 30+ scenari differenti di crescita/decrescita del patrimonio, basati su una random walk gaussiana:
Ogni anno/mese il capitale evolve in base a un rendimento simulato con distribuzione normale, centrato su una media attesa (es. 4% annuo) e una deviazione standard.
Questo approccio imita i rendimenti variabili reali del mercato, permettendo una simulazione più realistica del futuro.
Componenti:
- Calcolo simulato mese per mese;
- Randomizzazione dei rendimenti con distribuzione normale (
numpy.random.normal); - Grafico con tutte le simulazioni sovrapposte (curva patrimonio/tempo);
- Media delle simulazioni (curva di riferimento “centrale”);
- Input user-friendly per tutti i parametri iniziali;
- Possibilità di esportare i dati delle simulazioni in CSV/PDF;
- Interfaccia:
- Versione desktop con
tkinter/customtkinter; - oppure Web con
streamlit.
- Versione desktop con
Bonus opzionali (per versione avanzata):
- 🔄 Possibilità di simulare più strategie (es. “rischio alto vs basso”)
- 📈 Output dei percentili (es. andamento 10º, 50º, 90º percentile)
- 📊 Calcolo del valore atteso finale, varianza e probabilità di capitale < 0
- 🧮 Calcolo valore attuale netto (NPV)
- Intelligenza Artificiale: Modelli di regressione, reti neurali semplici, oppure modelli di forecasting come LSTM (long short-term memory).
- Addestrare un modello sui dati storici reali (o simulati) per prevedere andamenti futuri del patrimonio.
- Utilizzare reinforcement learning per ottimizzare il piano di investimento in base a obiettivi (es. rischio minimo).
- Inserire un modulo che “suggerisce strategie” di risparmio/investimento tramite clustering di profili utente.
4.3 Suggerimenti per la Realizzazione
- Librerie Utili:
- pandas per la gestione e l’analisi dei dati.
- matplotlib e seaborn per la visualizzazione dei dati.
- tkinter / customtkinter / streamlit per creare interfacce grafiche di base.
- numpy per operazioni numeriche avanzate.
- Dataset:
- Utilizzare dataset pubblici disponibili su siti come Kaggle, UCI Machine Learning Repository o data.gov.
- Tutorial e Risorse:
- Seguire tutorial online su
pandas,matplotlib,seaborn,tkinter/customtkinter/streamlitper familiarizzarsi con queste librerie. - Consultare la documentazione ufficiale per esempi e spiegazioni dettagliate.
- Seguire tutorial online su
4.4 🕹 Giochi da tavolo
4.4.1 Dama (Checkers)
- Difficoltà: 🟠 3/5
- Motivo: Richiede gestione eventi, grafica, logica di gioco e turni.
Prerequisiti e competenze necessarie: logica di gioco, cicli, condizionali, gestione eventi, pygame
Descrizione: Un gioco da tavolo per due giocatori dove ogni giocatore cerca di catturare tutte le pedine dell’avversario muovendosi in diagonale.
Componenti:
- Interfaccia grafica: Creata con
pygame, con una scacchiera 8x8 di pulsanti o canvas. - Logica del gioco: Implementazione delle regole di movimento e cattura delle pedine, gestione dei turni, e controllo per la vittoria.
- Promozione: Gestione della promozione delle pedine a dama.
Assets: https://dani-maccari.itch.io/pixel-checkers
Bonus opzionali (per versione avanzata): Tecnica AI → Minimax, Monte Carlo Tree Search, Q-learning.
- Aggiunta di un giocatore automatico intelligente
- Il bot può migliorare usando reinforcement learning.
4.4.2 Gioco dell’Oca
- Difficoltà: 🟢 2/5
- Motivo: Logica più semplice, ottimo per principianti.
Prerequisiti e competenze necessarie: cicli, condizionali, pygame
Descrizione: Un gioco da tavolo classico dove i giocatori avanzano su un percorso tirando un dado e devono affrontare varie sfide.
Componenti:
- Interfaccia grafica: Creata con
pygame, con un percorso a caselle numerate. - Logica del gioco: Movimento dei pezzi, gestione degli eventi speciali sulle caselle, e controllo per la vittoria.
- Dado virtuale: Implementazione di un dado che i giocatori possono tirare.
4.4.3 Risiko (Risk)
- Difficoltà: 🔴 5/5
- Motivo: Strategia complessa, mappe, gestione turni e IA base.
Prerequisiti e competenze necessarie: cicli, condizionali, gestione turni, logica strategica, pygame, basi AI opzionali
Descrizione: Un gioco strategico dove i giocatori conquistano territori e cercano di controllare il mondo.
Componenti:
- Interfaccia grafica: Creata con
pygame, con una mappa del mondo suddivisa in territori. - Logica del gioco: Gestione dei turni, movimento delle truppe, battaglie, e controllo per la vittoria.
- Carte: Implementazione delle carte obiettivo e rinforzi.
Bonus opzionali (per versione avanzata): Tecnica AI → Minimax, Monte Carlo Tree Search, Q-learning.
- Aggiunta di un giocatore automatico intelligente
- Il bot può migliorare usando reinforcement learning.
4.5 🤖 Bot
4.5.1 Discord Tutor Bot
- Difficoltà: 🔴 5/5
- Motivo: Richiede gestione di bot Discord, integrazione AI, database, GUI opzionale e logica complessa.
Prerequisiti e competenze necessarie: gestione bot Discord, database, API, funzioni avanzate Python (pandas, matplotlib), logica complessa, base AI opzionale
Descrizione: Un bot Discord dedicato a studenti e insegnanti, con funzionalità educative avanzate per rendere le lezioni più interattive e personalizzate. Può servire come supporto per esercizi, spiegazioni e gestione del percorso di studio.
Funzionalità principali:
-
Supporto didattico
/explain <topic>→ spiegazioni semplificate con esempi.- Quiz e test interattivi (domande multiple-choice, vero/falso, riempi spazi).
- Flashcards per memorizzare concetti chiave.
- Esercizi randomici con soluzioni passo-passo.
- Suggerimenti personalizzati di studio in base alle performance.
-
Funzioni matematico-scientifiche: Realizzare una sorta di WolframAlpha testuale
- Risoluzione di problemi matematici passo-passo.
- Grafici e plot interattivi (matematica/fisica/statistica).
- Conversione e gestione di formule matematiche.
- Statistiche e simulazioni (es. probabilità, random walk).
-
Programmazione e tecnologia
- Analisi e debug automatico di snippet di codice.
- Generatore di codice e pseudocodice per principianti.
- Esercizi di programmazione generati automaticamente.
-
Gestione studenti e studio
- Reminder per compiti, lezioni e scadenze.
- Gestione note e appunti salvabili.
- Agenda lezioni con calendario integrato.
- Promemoria grafico e avanzamento degli studenti.
-
Interazione e motivazione
- Leaderboard e punteggi per quiz completati.
- Badge e achievements virtuali.
- Mini-giochi educativi e sfide giornaliere.
-
Funzioni avanzate
- Integrazione AI per spiegazioni più dettagliate.
- Text-to-Speech per leggere spiegazioni ad alta voce.
- Analisi dei progressi degli studenti con grafici.
- Multi-server support per usare lo stesso bot in diversi server Discord.
Tecnologie consigliate:
- Python:
discord.py,pandas,matplotlib,numpy - JavaScript:
discord.js, Node.js, eventualmenteChart.jsper grafici web - Database: SQLite o MongoDB per memorizzare progressi, note e punteggi.
- Eventuale AI: OpenAI API per spiegazioni e analisi avanzate.
Suggerimenti per la realizzazione:
- Iniziare dal bot base che risponde a comandi semplici (
/hello,/help). - Integrare quiz e esercizi statici, poi avanzare verso quiz dinamici con logica.
- Implementare database per gestire progressi degli studenti.
- Infine, aggiungere grafici, AI e funzioni avanzate.
4.5.2 Discord Knowledge Bot
- Difficoltà: 🟢 2/5
- Motivo: Gestione di bot Discord, schedulazione e archiviazione contenuti semplice.
Prerequisiti e competenze necessarie: gestione bot Discord, schedulazione messaggi, database semplice, Python di base
Descrizione: Bot Discord che invia periodicamente messaggi con pillole di conoscenza tecnica o matematica/fisica. Può gestire un archivio di contenuti e inviare messaggi automatici.
Componenti:
-
Bot Discord: Usare
discord.pyper gestione bot e comandi. -
Schedulazione messaggi: Usare
apschedulerper invii periodici. -
Archivio contenuti: Memorizzare le pillole in SQLite o JSON.
-
Messaggi formattati: Embed con titolo, spiegazione, esempio e eventuale curiosità.
- Componenti del bot:
- Comando admin
!pillola adessoper inviare subito; - Sistema di log per non ripetere pillole;
- Possibilità di votare o salvare pillole.
- Comando admin
- Funzionalità:
- Invio automatico programmato;
- Accesso facile al database dei contenuti;
- Aggiornamento facile di pillole nuove.
- Componenti del bot:
-
Suggerimenti: Iniziare con un piccolo set di pillole, aggiungere comandi interattivi e opzionalmente collegarlo a quiz o progress tracker.
4.6 💽 Applicazioni
4.6.1 Generatore di esercizi interattivi
- Difficoltà: 🟠 3/5
- Motivo: Richiede logica di generazione casuale, gestione simbolica dei calcoli e interfaccia web/base.
Prerequisiti e competenze necessarie: cicli, condizionali, funzioni, sympy, base GUI/web (Flask/Streamlit)
Descrizione: Genera automaticamente esercizi di matematica e fisica con parametri casuali, mostrando passo-passo la soluzione. Può essere integrato in web app o desktop app.
Componenti:
-
Generazione esercizi: Usare
sympyper calcoli simbolici (derivate, integrali, equazioni). -
Randomizzazione parametri: Ogni esercizio deve avere valori variabili casuali.
-
Soluzione passo-passo: Visualizzare passaggi intermedi, spiegazioni testuali e verifiche numeriche.
-
Interfaccia grafica/web: Con
FlaskoStreamlitper mostrare esercizi e soluzioni.- Componenti della GUI/Web:
- Finestra Principale / Pagina Web;
- Sezione esercizio → mostra domanda;
- Sezione risposta → input dell’utente o calcolo automatico;
- Pulsante “Mostra soluzione” → espone passo-passo;
- Pulsante “Genera nuovo esercizio”;
- Eventuale area grafico/funzione plot per visualizzare grafici.
- Funzionalità:
- Generazione automatica di nuovi esercizi;
- Visualizzazione della soluzione dettagliata;
- Possibilità di esportare PDF o copiare testo.
- Componenti della GUI/Web:
-
Suggerimenti: Iniziare con problemi semplici (es. calcoli di base, equazioni lineari) e poi aggiungere derivati, integrali o fisica base.
4.6.2 Progress Tracker personalizzato
- Difficoltà: 🟠 3/5
- Motivo: Richiede database, grafici e interfaccia web interattiva.
Prerequisiti e competenze necessarie: database (SQLite), grafici (plotly/matplotlib), GUI/web interattiva (Streamlit)
Descrizione: Monitora gli esercizi svolti dagli studenti, mostra grafici di miglioramento nel tempo e permette assegnazione di badge o livelli.
Componenti:
-
Database: Usare SQLite per salvare esercizi, punteggi, tempo impiegato, materia e livello.
-
Interfaccia web: Con Streamlit o Dash per visualizzare dashboard interattive.
-
Grafici e statistiche: Librerie
plotlyomatplotlibper grafici di progresso.- Componenti GUI/Dashboard:
- Lista studenti e progresso;
- Grafico punteggi medi nel tempo;
- Badge e livelli assegnati automaticamente;
- Filtri per materia o tipologia di esercizio.
- Funzionalità:
- Aggiornamento dati automatico dopo ogni esercizio;
- Visualizzazione grafici interattivi;
- Possibilità di esportare report PDF/CSV.
- Componenti GUI/Dashboard:
-
Suggerimenti: Collegare con il Generatore di esercizi (
#4.6.1) per automatizzare il tracciamento dei risultati.
4.6.2 Visualizzatore di soluzioni passo-passo
- Difficoltà: 🟢 2/5
- Motivo: Mostrare calcoli simbolici e grafici richiede solo librerie standard Python.
Prerequisiti e competenze necessarie: calcolo simbolico (sympy), grafici (matplotlib/plotly), GUI/web (Streamlit)
Descrizione: Mostra la risoluzione dettagliata di esercizi matematici/fisici con grafici interattivi, aiutando gli studenti a comprendere ogni passaggio.
Componenti:
-
Calcolo simbolico:
sympyper derivare passaggi matematici. -
Visualizzazione grafici:
matplotliboplotlyper grafici delle funzioni. -
Interfaccia web:
Streamlitper input esercizio e output interattivo.- Componenti GUI:
- Finestra/Sezione input → inserimento esercizio;
- Pulsante “Calcola” → mostra passaggi simbolici;
- Area grafico → plot funzione o risultato;
- Sezione output testuale → spiegazioni passo-passo.
- Funzionalità:
- Calcolo di derivata, integrale, limite;
- Plot funzione e verifica soluzione;
- Possibilità di salvare grafici o risultati.
- Componenti GUI:
-
Suggerimenti: Iniziare con integrali/derivate semplici, poi aggiungere equazioni, limiti e funzioni più complesse.
5. 🟩 Java / C#
Nota
Descrizione
Questi progetti sono pensati per chi vuole sviluppare applicazioni usando linguaggi ad oggetti per la costruzione di applicazioni desktop o per chi vuole divertirsi a sviluppare qualche giochetto.
N.B. I progetti elencati sono pensati anche per coloro che non hanno mai programmato in Java o in C#.
Prerequisiti consigliati
- conoscenza base della programmazione;
- conoscenza della programmazione ad oggetti (classi)
Topics
- GUI (interfaccia grafica);
- lettura e scrittura su file CSV;
- lettura e scrittura su file JSON;
- strutture dati di base;
5.1 Tutorials
- programmare in java
- lettura e scrittura in java
- GUI in java
- Json in java
- programmare in c#
- lettura e scrittura in c#
- GUI in c#
- Json in c#
5.2 💽 Applicazioni
5.2.1 Gestore Password con generatore randomico
- Difficoltà: 🟠 3/5
- Motivo: Interfaccia ricca, file handling, crittografia.
Descrizione: Un’applicazione per generare e gestire password randomiche.
- Funzionalità:
- Login/Register nell’applicazione.
- Generazione di password sicure con criteri personalizzabili.
- Salvataggio delle password generate in file.
- Ricerca e recupero delle password salvate.
- Tecnologie:
- Lettura/scrittura di dati su file JSON per la gestione delle password.
- Criptazione e decriptazione delle password salvate.
- Interfaccia grafica per la gestione delle password.
- Componenti della GUI:
- Finestra Principale;
- Sezione di Generazione delle Password:
- Label “Genera Password”;
- Campo di Input per Lunghezza Password;
- Checkbox per Opzioni di Criteri;
- Pulsante “Genera”;
- Campo di Testo per Visualizzazione Password;
- Pulsante “Salva Password”;
- Sezione di Gestione delle Password Salvate:
- Label “Gestione Password” o “Password List” che mostra una lista delle password salvate in cui è possibile:
- eliminare una password;
- modificarla;
- …
- Label “Gestione Password” o “Password List” che mostra una lista delle password salvate in cui è possibile:
- Sezione di Criptazione e Decriptazione:
- Pulsante “Salva come File Criptato”;
- Pulsante “Carica File Criptato”;
- Campo di Testo per Inserimento Chiave di Criptazione;
- Sezione di Output Testuale:
- Area di Testo per il Feedback / Log;
- Funzionalità della GUI:
- Generazione delle Password;
- Gestione delle Password Salvate;
- Criptazione e Decriptazione;
- Feedback / Log;
- Componenti della GUI:
5.2.2 Applicazione di Gestione delle Finanze Personali
- Difficoltà: 🟠 3/5
- Motivo: CRUD su dati, grafici, GUI ordinata ma gestibile.
Descrizione: Un’applicazione per monitorare le entrate e le spese personali.
- Funzionalità:
- Aggiungere, modificare e rimuovere transazioni.
- Categorizzazione delle entrate e delle spese.
- Visualizzazione del saldo attuale e delle statistiche mensili.
- Tecnologie:
- Lettura/scrittura di dati su file CSV per le transazioni.
- Utilizzo di file JSON per la configurazione dell’applicazione e le impostazioni dell’utente.
- Interfaccia grafica per la gestione delle finanze personali.
- Componenti della GUI:
- Finestra Principale;
- Sezione di Aggiunta/Modifica delle Transazioni;
- Label “Aggiungi/Modifica Transazione”;
- Campo di Input per la Descrizione della Transazione;
- Campo di Input per l’Importo;
- Dropdown per la Categoria della Transazione;
- Radiobutton per Tipo di Transazione;
- Pulsante “Aggiungi/Modifica”;
- Pulsante “Cancella”;
- Sezione di Visualizzazione delle Transazioni:
- Label “Transazioni”;
- Tabella delle Transazioni;
- Pulsante “Modifica Selezionata”;
- Pulsante “Rimuovi Selezionata”;
- Sezione di Visualizzazione del Saldo e delle Statistiche:
- Label “Saldo Attuale”;
- Campo di Testo per il Saldo Attuale;
- Label “Statistiche Mensili”;
- Grafico a Barre per le Statistiche Mensili;
- Pulsante “Aggiorna Statistiche”;
- Sezione di Configurazione e Impostazioni:
- Label “Configurazione”;
- Campo di Input per il File CSV;
- Pulsante “Salva Configurazione”;
- Pulsante “Carica Configurazione”;
- Sezione di Output Testuale:
- Area di Testo per il Feedback / Log
- Funzionalità della GUI:
- Aggiunta e Modifica delle Transazioni;
- Visualizzazione delle Transazioni;
- Visualizzazione del Saldo e delle Statistiche;
- Configurazione e Impostazioni;
- Feedback / Log;
- Componenti della GUI:
5.2.2 Gestionale di Assistenze Tecniche PC
- Difficoltà: 🟠 3/5
- Motivo: Richiede gestione di database, interfaccia grafica e logica CRUD (Create, Read, Update, Delete).
Descrizione: Sistema gestionale per monitorare richieste di assistenza tecnica sui PC dei clienti. Permette di inserire nuovi ticket, assegnarli a un tecnico, aggiornarne lo stato e generare report.
Componenti:
- Gestione dati: Utilizzare un database locale SQLite o MySQL per memorizzare clienti, dispositivi, interventi e tecnici.
- Interfaccia grafica: Realizzare una GUI con JavaFX o C# WinForms/WPF.
- Funzionalità principali:
- Creazione di nuovi ticket di assistenza;
- Assegnazione automatica o manuale dei tecnici;
- Aggiornamento stato (in attesa, in corso, completato);
- Ricerca e filtri per cliente, tecnico, data, stato;
- Generazione di report o ricevute (PDF o CSV).
- Componenti GUI:
- Finestra principale con tabella ticket;
- Form per inserire nuovi interventi;
- Filtro di ricerca e ordinamento;
- Pulsante “Genera Report”;
- Sezione statistiche (numero ticket per tecnico, tempo medio risoluzione).
- Bonus:
- Notifiche interne (popup o email);
- Gestione magazzino componenti sostitutivi.
5.2.3 Quiz Game Interattivo
- Difficoltà: 🟠 3/5
- Motivo: Unisce logica di gioco, timer e interfaccia grafica.
Descrizione: Gioco a quiz con domande a risposta multipla o vero/falso. Può essere tematico (matematica, informatica, storia, ecc.) e include punteggi e livelli di difficoltà.
Componenti:
- Gestione domande: File JSON/CSV o database per domande e risposte.
- Logica di gioco: Timer, punteggio e progressione livello.
- Interfaccia grafica: JavaFX o WinForms/WPF.
- Componenti GUI:
- Finestra principale con domanda e 4 pulsanti risposta;
- Barra del tempo (timer);
- Punteggio attuale e livello;
- Pulsante “Prossima domanda”;
- Finestra finale con punteggio totale e statistiche.
- Componenti GUI:
- Funzionalità:
- Domande casuali o per argomento;
- Feedback immediato (corretto/sbagliato);
- Salvataggio dei punteggi migliori.
- Bonus:
- Modalità multiplayer locale;
- Classifica e badge.
5.2.4 Gestionale Aziendale per Dipendenti
- Difficoltà: 🔴 4/5
- Motivo: Include gestione dati complessa, ruoli utente e reportistica.
Descrizione: Applicazione gestionale per amministrare i dipendenti di un’azienda: anagrafiche, presenze, stipendi, mansioni e ferie.
Componenti:
- Database: SQLite o MySQL per salvare anagrafica, ruoli, orari e retribuzioni.
- Interfaccia grafica: C# (WPF) o Java (JavaFX).
- Funzionalità principali:
- Inserimento e modifica dati dipendenti;
- Gestione ferie, malattie e presenze;
- Calcolo automatico stipendi e ore lavorate;
- Ruoli amministratore/utente;
- Generazione di report e statistiche.
- Componenti GUI:
- Tabella dipendenti;
- Form dettagliato per modifica;
- Pannello statistiche (grafici ore, ferie, retribuzioni);
- Pulsante “Genera Report” PDF.
- Bonus:
- Esportazione mensile dati in Excel;
- Login con autenticazione base;
- Gestione reparti aziendali.
6. 🟨 C/C++
Nota
Descrizione
Per chi vuole programmare in C / C++
Prerequisiti consigliati
- conoscenza discreta della programmazione;
Topics
6.1 Installatore Automatico con Chocolatey
- Linguaggio consigliato: C++ (più sfidante, ma didattico), alternativa in C# per GUI.
- Difficoltà: 🟢 2**/5**
Descrizione:
Un’applicazione (con o senza GUI) che legge un file di testo (software.txt) e installa automaticamente una lista di programmi usando Chocolatey.
Funzionalità principali:
-
Legge da file
.txtl’elenco dei pacchetti. -
Per ogni voce esegue il comando:
choco install nomepacchetto -y -
Mostra nella console o GUI l’avanzamento (es. “Installing… VLC…”).
Estensioni opzionali (avanzate ma non obbligatorie):
- Disinstalla software (
choco uninstall). - Permette di selezionare i programmi da installare via checkbox (solo con GUI).
Obiettivi didattici:
- Comprendere input/output da file.
- Gestione di processi
- Approccio a tool esterni come Chocolatey.
6.2 Gestore File / Backup Automatico
- Difficoltà: 🟠 3/5
- Motivo: Ottimo progetto pratico per imparare gestione file system e automazione.
Descrizione: Applicazione che esegue copie di backup automatiche di cartelle o file verso un percorso di destinazione, con log e programmazione temporale.
Componenti:
- Gestione file: Librerie standard di C/C++ per accesso file, directory e timestamp.
- Funzionalità principali:
- Scelta di cartella sorgente e destinazione;
- Backup manuale o pianificato (ogni X minuti/ore);
- Log delle operazioni completate o fallite;
- Controllo spazio disponibile e file duplicati.
- Componenti GUI (opzionale):
- Selezione sorgente e destinazione (browse);
- Pulsante “Esegui Backup”;
- Finestra log attività;
- Checkbox “Backup automatico”.
- Bonus:
- Compressione file (zip);
- Rilevamento modifiche in tempo reale (watcher);
- Notifiche via email o popup.
6.3 Mini-Engine Testuale / Gioco Rogue-like
- Difficoltà: 🔴 5/5
- Motivo: Richiede buona logica OOP, gestione mappe e interazioni complesse.
Descrizione: Gioco testuale d’avventura stile “rogue-like”, con mappa generata casualmente, combattimenti a turni e oggetti collezionabili.
Componenti:
- Motore di gioco: Classi per mappa, giocatore, nemici e oggetti.
- Generazione mappe: Algoritmo randomico con stanze e corridoi.
- Sistema combattimento: Turni, danni, punti vita, armi e abilità.
- Interfaccia testuale: Console o libreria come ncurses (C/C++).
- Componenti principali:
- Visualizzazione mappa in ASCII;
- Comandi tastiera (WASD, I per inventario, A per attacco);
- Finestra log eventi (“Hai trovato una spada!”);
- Menu iniziale e salvataggio partita.
- Componenti principali:
- Funzionalità:
- Movimento e esplorazione;
- Combattimenti e loot;
- Salvataggio e caricamento progressi.
- Bonus:
- Nemici con IA semplice;
- Sistema di quest o livelli multipli;
- Effetti sonori o grafici con SDL2.
6.4 Calcolatrice Scientifica Avanzata
- Difficoltà: 🟠 3/5
- Motivo: Ottimo esercizio di parsing e gestione GUI matematica.
Descrizione: Calcolatrice scientifica che supporta operazioni aritmetiche, trigonometriche, logaritmiche, statistiche e conversioni.
Componenti:
- Parsing espressioni: Implementare un parser personalizzato o usare librerie come exprtk (C++).
- Interfaccia grafica: Qt o wxWidgets per un design pulito e funzionale.
- Funzionalità principali:
- Operazioni di base e avanzate (sin, cos, tan, log, exp, potenze);
- Calcoli su più righe (storico);
- Conversioni (gradi ↔ radianti);
- Gestione errori e parentesi.
- Componenti GUI:
- Display numerico;
- Pulsantiera numeri e operatori;
- Menu “Funzioni scientifiche”;
- Finestra storico;
- Pulsante “Cancella” e “Salva risultato”.
- Bonus:
- Plot di funzioni 2D (grafico semplice);
- Supporto tastiera;
- Modalità programmatore (conversioni binarie, esadecimali).
7. 🟦 Unity / Godot
Nota
Descrizione
Per chi vuole provare a sviluppare un gioco come fanno i veri professionisti!
- Unity ha una sintassi del codice tipica di c#;
- Godot ha una sintassi del codice “simile” a python;
Non fatevi spaventare se non sapete nulla sulla modellazione 3D o se non sapete disegnare in 2D. Si può sempre usare qualcosa di gratuito dal web! 😉 Volendo ho già preparato un po di pixel art per chi ne vuole!🚀
- N.B Per chi è interessato ad usare pixel art, consiglio il programma Piskel che è gratuito e molto valido. Per comodità consigio di fare pixel art 16x16 pixels.
- N.B. Unity è un programma più pesante di godot che invece è molto leggero (gira bene su qualsiasi PC), quindi assicuratevi di avere un PC decente prima di scaricarlo.
Prerequisiti consigliati
- buona conoscenza della programmazione;
- conoscenza della programmazione object oriented;
Topics
- animazioni di base
- GUI
- 2D / 3D
- effetti particellari
7.1 Tutorials
7.2 Link utili
7.3 Videogioco
per questa categoria non sono previsti dei progetti da me proposti. Sentitevi liberi di sbizzarrirvi come meglio credete e lasciatevi trascinare dalla creatività! 🖼️
Consiglio: per semplicità vi suggerisco di fare un progetto in 2D.