Il corso è un'accademia completa per l'apprendimento della programmazione C# e dello sviluppo di applicazioni utilizzando la piattaforma .NET. Si concentra sui fondamenti della programmazione, coprendo gradualmente i concetti chiave della programmazione orientata agli oggetti (OOP), gestione del codice, manipolazione dei dati, utilizzo delle raccolte e altro ancora. I partecipanti impareranno a creare e sviluppare applicazioni robuste ed efficienti in C# utilizzando vari concetti e tecnologie come OOP, gestione della memoria, manipolazione dei dati, gestione delle eccezioni, programmazione parallela e altro ancora.
Uno specialista dello sviluppo C# ha le competenze per gestire una varietà di aspetti nell'ambito dello sviluppo di un'applicazione, andando oltre le considerazioni legate solo a prestazioni, capacità e sicurezza.
Gli sviluppatori che hanno familiarità con .Net/C# hanno la capacità di creare applicazioni avanzate, siano esse sofisticate applicazioni desktop o complesse infrastrutture dietro moderne applicazioni web. Sono in grado di progettare e sviluppare soluzioni software che includono l'ottimizzazione delle prestazioni, la garanzia della qualità attraverso test adeguati, l'implementazione della sicurezza e altro ancora. Pertanto, possono contribuire allo sviluppo di prodotti software affidabili, scalabili e allineati con gli attuali requisiti tecnologici.
Seguendo questo programma, i partecipanti impareranno a:
- Comprendere i concetti fondamentali della programmazione e l'importanza del linguaggio C# nello sviluppo del software.
- Utilizzare l'ambiente di sviluppo integrato (IDE) per creare, compilare ed eseguire programmi C#.
- Manipola variabili, tipi di dati e operatori in C# per eseguire calcoli e operazioni logiche.
- Gestisce il flusso di esecuzione del programma attraverso istruzioni decisionali e di interazione.
- Modella e implementa concetti OOP come classi, oggetti, ereditarietà, interfacce e astrazione.
- Lavorare con raccolte e strutture di dati, compreso l'uso di generici e algoritmi di raccolta.
- Sviluppa applicazioni parallele utilizzando thread e tecniche di programmazione asincrona.
- Gestisce eccezioni ed errori nei programmi C#.
- Interagisci con i database utilizzando ADO.NET ed Entity Framework.
- Creare ed esporre servizi Web utilizzando l'API Web ASP.NET.
- Implementa test unitari e scrivi codice pulito e ben strutturato.
La conoscenza di un linguaggio di programmazione costituirà un vantaggio ma non essenziale. Se i partecipanti avessero una conoscenza di base dei concetti matematici e logici, ciò sarebbe utile anche per l'apprendimento della programmazione.
Lezione 1 – Introduzione
- Cos'è un programma? Qual è lo scopo della programmazione? Cosa possiamo fare con .NET?
- Cos'è un IDE? Come semplificano la vita dei programmatori
– Cos'è .NET e cos'è C#?
– Il nostro primo programma in C# viene eseguito dall'IDE
– C# come linguaggio compilato e interpretato (riproduzione da riga di comando dei passaggi che il nostro IDE ha eseguito per noi per eseguire il programma mostrato)
– Variabili. Cos'è una variabile?
– Letterali: intero, virgola mobile, booleano, carattere e stringa
– Operatori
- Assegnazione
- Operatori matematici
- Incremento e decremento automatico
- operatori logici
- Operatori relazionali
- Operatori bit a bit (spiegano come i computer "pensano" in termini di bit ed eseguono alcune conversioni dalla base 2 a 10 e anche a 16)
- Operatori di turno
- Operatore ternario if-else
- Operatore di concatenazione di stringhe(+, +=)
- Operatori del casting
- Operatori speciali (es. istanza di)
– Controllo dell'esecuzione: istruzioni di decisione, istruzioni di interazione, comando di interruzione, comando di continuazione
– Esempi ed esercizi
Lezione 2 – Gestione del codice
– Controllo della versione
- SVN, Mercurial, Git
- Configurazione di Git
- Github, inserisci il tuo primo codice in Github
- Commenti
- Scrivi commenti in linea
- Scrivere commenti sulla documentazione
– Spazi dei nomi
- Come organizzare il codice negli spazi dei nomi
- Spazi dei nomi speciali all'interno di un programma C#
– Eseguire un programma C#
- Modalità normale
- Modalità di debug
- Esegui con argomenti speciali
– Esempi ed esercizi
Lezione 3 – Array e stringhe
- Quali sono?
– Lunghezza dell'array
– Array multidimensionali
– Accesso e modifica degli elementi di un Array
– Ciclo attraverso un array
– Passa un array come argomento di una funzione
– Esempi con i metodi più utilizzati dalla classe di utilità Arrays
– Manipolazione di stringhe (sottostringa, confronto di stringhe, conversione da un array di caratteri, ecc.)
– Esempi ed esercizi
Lezione 4 – Funzioni
– Cos’è una funzione e qual è il suo scopo generale
– Parametri funzione, parametri opzionali, valori restituiti
– Linee guida sulla funzione di scrittura (secondo "Clean Code" di Robert C. Martin)
– Spiegazione del ciclo di vita delle variabili locali
– Passaggio di variabili primitive come parametri alle funzioni
– Passa per valore
– Chiamare funzioni, Argomenti con nome
– Esempi ed esercizi
Lezione 5 – Introduzione all'OOP
– Cos'è l'OOP, OOP vs Procedurale
- Cos'è una classe
- Cos'è un oggetto
- Costruttore
- Costruttori predefiniti
- Questa parola chiave
- Polimorfismo
– Dichiarazione e inizializzazione di un'istanza di classe
– Allocazione della memoria e garbage collector
– Variabili/metodi di istanza vs variabili/metodi statici
– Costruttore statico
– Costruttore non statico
– Modificatori di accesso C#
– Esempi ed esercizi
Lezione 6 – Ereditarietà, classi astratte, interfacce
– Spiegazione dell'ereditarietà
– Metodi di sostituzione
– Base di parole chiave
- Protetto spiegato
- Parola chiave sigillata
– Classi astratte
- Interfacce
– Interfacce vs. classi astratte
– Molteplici implementazioni di interfacce
– Esempi ed esercizi
Lezione 7 – Classi interne, Classe oggetto, oggetto nullo
– Sono/come operatori
– Upcasting e downcasting
– Tutto è un oggetto
– Spiegazione della classe dell'oggetto
– Scopo del metodo ToString() iii. Scopo del metodo Equals() iv. Metodo HashCode()
– Clonazione di oggetti – Interfaccia ICloneable
– Metodo del finalizzatore
– Oggetto nullo
– Esempi ed esercizi
Lezione 8 – Enumerazioni, gestione delle eccezioni
– Enum ha spiegato
– Gerarchia delle eccezioni
– Eccezioni verificate e non verificate
– Try-catch-finalmente spiegato
– Lancio di eccezioni (lancio comando)
– Trattate le eccezioni localmente o delegandole
– Definire le nostre eccezioni
– Esempi ed esercizi
Lezione 9 – Flussi di input/output, serializzazione
– La classe File
– Flussi di byte
– Flussi di personaggi
– Flusso bufferizzato
– Flussi di dati
– Flussi di oggetti
– Serializzazione
– Esempi ed esercizi
Lezione 10 – Generici, Collezioni
– Classi generiche
– Funzioni Generis
– Convenzione di denominazione generica
– Collezioni con esempi di implementazioni:
– Collezioni generiche: Elenco, Dizionario , Elenco ordinato, Coda, Stack, Hashset
– Collezioni non generiche: ArrayList, SortedList, Stack, Queue, Hashtable
– Esempi ed esercizi
Lezione 11 – Generici, Collezioni
– Iteratori
– Per ogni istruzione
– Tipo di dizionario
- Algoritmi di collezioni
- Riordina
- Interfaccia comparabile
- Interfaccia IComparer
- Ricerca binaria
- Invertire
- Minimo Massimo
- scambiare
- Operazioni Linq sulle raccolte: ad esempio Trova, Primo, Salta, Prendi, ecc
– Esempi ed esercizi
Lezione 12 – Thread, socket, attività (Async Await)
– Esecuzione del codice in sequenza o in parallelo
– Attesa asincrona in .net (C#)
– Creazione e avvio di un thread in C#
- Classe di thread
- Classe di attività
– Ciclo di vita del thread
– Pausa dell'esecuzione di un thread
– Il thread si unisce
– Sincronizzazione e blocchi
– Monitorare la classe helper: Wait, Pulse, PulseAll
– Esempi ed esercizi
Lezione 13 – Thread, socket, attività (Async Await)
– Variabili atomiche
– Parola chiave volatile
– Oggetti immutabili
– Insidie della programmazione parallela
– Presa client
– Presa del server
– Esempi ed esercizi
Lezione 14 – Gestori delle dipendenze, C# database connettività
– Gestore pacchetti Nuget
– Importare più progetti nel tuo progetto
– Configurazione di una connessione a SQL Server da C#
– Chiamare il codice SQL da C#
- Comando Sql
- SQLDataReader
– Chiusura della connessione C# a SQL Server
– Lettura dei risultati della query: ExecuteScalar vs ExecuteReader
Lezione 15 – Entity Framework
– Cos’è l’Entity Framework?
– Diversi ORM
– Espressioni Lambda
– Migrazioni
– Console di gestione pacchetti
– Codice EF Primo vs Database Nome
– Esempi ed esercizi
Lezione 16 – Oggetti anonimi. Delegati, inserimento delle dipendenze
– Esempi di oggetti anonimi
– Delegati
– Espressioni lambda
- Iniezione di dipendenza
– Correzione null: classe opzionale
– Esempi ed esercizi
Lezione 17 – MVC, API Web e generazione di codice
– MVC (modello controller vista modello)
– Che cos'è un'API Web
– Verbi HTTP
–JSON/XML
– Esempi ed esercizi
Lezione 18 – Test unitari e codice pulito
– Codice pulito
- Perché il codice pulito è importante
- Linee guida generali per la scrittura del codice
- Principio ASCIUTTO
- Principio del bacio
- Principio Yagni
– Test unitari
- xUnità
- nUnità
- Test unitari e test di integrazione
- Utilizzo di librerie beffarde
- Codice disaccoppiato e unit test
Lezione 19 – Progetto Finale
Al termine del corso e al superamento dell'esame di valutazione i partecipanti riceveranno un diploma di laurea.

