Progetti
🔰 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ì.
👨👨👦 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.
🟨 Python
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.
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;
🆘 Tutorials
- programmare in python: https://www.youtube.com/watch?v=kqtD5dpn9C8&ab_channel=ProgrammingwithMosh
- matplotlib per analisi dei dati: https://www.youtube.com/watch?v=OZOOLe2imFo&ab_channel=NeuralNine
- pygame per giochi: https://www.youtube.com/watch?v=y9VG3Pztok8&ab_channel=CodingWithRuss
- tkinter per GUI: https://www.youtube.com/watch?v=ibf5cx221hk&ab_channel=NeuralNine
💽 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.
1. Analisi dei Dati Meteo
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
matplotlib
oseaborn
per creare grafici di tendenza, istogrammi, ecc.
- Interfaccia grafica: Creare una semplice GUI con
tkinter
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;
- Componenti della GUI:
2. Analisi dei Dati sui Social Media
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
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;
- Componenti della GUI:
Suggerimenti per la Realizzazione
- Librerie Utili:
- pandas per la gestione e l'analisi dei dati.
- matplotlib e seaborn per la visualizzazione dei dati.
- tkinter 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
per familiarizzarsi con queste librerie.
- Consultare la documentazione ufficiale per esempi e spiegazioni dettagliate.
- Seguire tutorial online su
🕹 Giochi da tavolo
1. Dama (Checkers)
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
2. Gioco dell'Oca
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.
3. Risiko (Risk)
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.
🟩 Java / C#
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;
Tutorial: https://www.youtube.com/watch?v=Gxf4T-4Ix-w&ab_channel=RaVen
🆘 Tutorials
- programmare in java: https://www.youtube.com/watch?v=drQK8ciCAjY&ab_channel=CodingwithJohn
- lettura e scrittura in java: https://www.youtube.com/watch?v=ScUJx4aWRi0&ab_channel=CodingwithJohn
- programmare in c#: https://www.youtube.com/watch?v=gfkTfcpWqAY&ab_channel=ProgrammingwithMosh
- lettura e scrittura in c#: https://www.youtube.com/watch?v=tApBDuVwCrc&ab_channel=tutorialsEU
💽 Applicazioni
1. Gestore Password con generatore randomico
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:
2. Applicazione di Gestione delle Finanze Personali
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:
🟦 Unity / Godot
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
🆘 Tutorials
- Unity tutorial: https://www.youtube.com/watch?v=XtQMytORBmM
- Godot tutorial: https://www.youtube.com/watch?v=LOhfqjmasi0
🔗 Link utili
- Pixel art da scaricare: https://itch.io/game-assets/tag-coin/tag-pixel-art
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.