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
INFO
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.
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 pandas per caricare e gestire i dati.
Analisi: Calcolare medie, massimi, minimi, e altri statistiche.
Visualizzazione: Utilizzare plotly / matplotlib / seaborn per creare grafici di tendenza, istogrammi, ecc.
Interfaccia grafica: Creare una semplice GUI con tkinter / customtkinter / streamlit che 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;
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 textblob per l’analisi del sentiment, wordcloud per 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 / streamlit per 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;
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)
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.
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 / streamlit per familiarizzarsi con queste librerie.
Consultare la documentazione ufficiale per esempi e spiegazioni dettagliate.
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.
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, eventualmente Chart.js per 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.py per gestione bot e comandi.
Schedulazione messaggi: Usare apscheduler per 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 adesso per inviare subito;
Sistema di log per non ripetere pillole;
Possibilità di votare o salvare pillole.
Funzionalità:
Invio automatico programmato;
Accesso facile al database dei contenuti;
Aggiornamento facile di pillole nuove.
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 sympy per 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 Flask o Streamlit per 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.
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.
Descrizione:
Mostra la risoluzione dettagliata di esercizi matematici/fisici con grafici interattivi, aiutando gli studenti a comprendere ogni passaggio.
Componenti:
Calcolo simbolico:sympy per derivare passaggi matematici.
Visualizzazione grafici:matplotlib o plotly per grafici delle funzioni.
Interfaccia web:Streamlit per input esercizio e output interattivo.
Suggerimenti: Iniziare con integrali/derivate semplici, poi aggiungere equazioni, limiti e funzioni più complesse.
5. 🟩 Java / C#
INFO
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;
INFO
Per migliorare il design dell’interfaccia in Java, usare FlatLaf→Tutorial
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;
…
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;
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;
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.
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.
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 .txt l’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.
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);
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.
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.