Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Progetti

✍️ Dennis Turco 🏷️ Informatica 📘 Progetti
Ultima modifica:
#progetti#programmazione

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 ProgettoLinguaggioDifficoltà (1-5)Progetto TOPDescrizione SinteticaSuggerimenti Didattici
Analisi Dati MeteoPython🟢 2Analizza dati climatici da file, calcola medie, visualizza grafici.Ottimo per introdurre pandas, matplotlib, e GUI semplici.
Analisi Social Media (tweet/post)Python🟠 3Usa API per scaricare post e analizzarli (sentiment, parole chiave, frequenze).Introduzione alle API e al text mining con GUI interattiva.
Dama (Checkers)Python (pygame)🟠 3Gioco da tavolo con logica di movimento, catture e promozioni.Rafforza la logica, il disegno della GUI e la gestione degli eventi.
Gioco dell’OcaPython (pygame)🟢 2Simulazione di gioco da tavolo classico con dado e percorsi.Buon progetto introduttivo con struttura base.
RisikoPython (pygame)🔴 5Strategico con mappe, turni, truppe, battaglie e obiettivi.Richiede struttura dati complesse e gestione grafica avanzata.
Previsioni Finanziarie PersonaliPython🔴 4Inserisci spese, investimenti e ottieni 30 simulazioni patrimoniali con inflazione e rendimento stimato.Unisce matematica, statistica, modelli predittivi e visualizzazioni interattive.
Discord Tutor BotPython🔴 5Bot 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 interattiviPython (Sympy + Flask/Streamlit)🟠 3Genera 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 BotPython (discord.py + SQLite)🟢 2Bot 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 personalizzatoPython (Dash/Streamlit + SQLite)🟠 3Monitora 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-passoPython (Sympy + Streamlit)🟢 2Mostra 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 ChocolateyC++ (o C#)🟢 2App 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 sicuroJava / C#🟠 3Generatore e archivio sicuro di password con GUI, salvataggio criptato.Utile per esercitarsi su GUI, file JSON e crittografia base.
Gestione Finanze PersonaliJava / C#🟠 3CRUD di entrate/uscite con categorizzazione e statistiche mensili in grafico.
Gestionale di Assistenze Tecniche PCJava / C# / Python🟠 3Sistema 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 InterattivoJava / C#🟠 3Gioco a quiz con domande casuali, timer e punteggi, GUI completa.Eccellente esercizio di logica, eventi e progettazione interattiva.
Gestionale Aziendale per DipendentiC# / Java🔴 4Applicazione gestionale per dipendenti: anagrafiche, stipendi, ferie, ruoli e report.Introduce gestione ruoli, database complessi e autenticazione base.
Gestore File / Backup AutomaticoC++ / C#🟠 3App 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-likeC++ / Java / Python🔴 5Gioco testuale con mappa random, combattimenti e salvataggio partita.Perfetto per consolidare OOP, generazione procedurale e gestione input.
Calcolatrice Scientifica AvanzataC++ / C#🟠 3Calcolatrice 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.


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

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 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)
  • 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.

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.

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:

  1. 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.
  2. 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).
  3. Programmazione e tecnologia

    • Analisi e debug automatico di snippet di codice.
    • Generatore di codice e pseudocodice per principianti.
    • Esercizi di programmazione generati automaticamente.
  4. 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.
  5. Interazione e motivazione

    • Leaderboard e punteggi per quiz completati.
    • Badge e achievements virtuali.
    • Mini-giochi educativi e sfide giornaliere.
  6. 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.

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 plotly o matplotlib per 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.
  • 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: sympy per derivare passaggi matematici.

  • Visualizzazione grafici: matplotlib o plotly per grafici delle funzioni.

  • Interfaccia web: Streamlit per 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.
  • 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 \rightarrow Tutorial

5.1 Tutorials

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;
        • 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.
  • 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++

INFO

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 .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);
    • 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

INFO

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.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.

Prenota una lezione