Salta al contenuto principale
CODICE 94721
ANNO ACCADEMICO 2021/2022
CFU
SETTORE SCIENTIFICO DISCIPLINARE ING-INF/03
LINGUA Italiano
SEDE
  • GENOVA
PERIODO 2° Semestre
MODULI Questo insegnamento è un modulo di:
MATERIALE DIDATTICO AULAWEB

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Lo studente che abbia seguito con profitto l’insegnamento di “Laboratorio di Informatica e Telematica” sarà in grado di progettare, creare e verificare il funzionamento di un sistema software complesso, utilizzando metodologie UML e tecniche di programmazione orientate agli oggetti.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Durante questo insegnamento lo studente imparerà a:

  • Utilizzare sistemi per il controllo versioni con particolare attenzione a git
  • Sviluppare programmi e librerie utilizzando il linguaggio di programmazione C#. In particolare l’allievo sarà in grado di:
    • creare ed utilizzare variabili
    • scrivere e leggere dalla console
    • scrivere ed utilizzare istruzioni condizionali, cicli e vettori
    • creare ed utilizzare oggetti e loro metodi
    • utilizzare costruttori, variabili e metodi statici, namespace, eccezioni e stringhe
    • creare nuove classi, strutture, enum anche con l’uso di generics
    • leggere e scrivere file
    • modellare strutture dati lineari, alberi, grafi, insiemi e hash maps
  • Verificare il corretto funzionamento del software sviluppato utilizzando gli unit test
  • Scrivere programmi C# utilizzando un approccio orientato agli oggetti. In particolare l’allievo sarà in grado di:
    • utilizzare le interfacce, l’encapsulazione, il polimorfismo, i delegati e gli eventi
    • applicare alcuni design pattern (in particolare observer, enumerator)
    • creare metodi di estensione, tipi anonimi
    • utilizzare le lambda expressions e LINQ
  • Implementare semplici interfacce grafiche con windows forms
  • Implementare web services con il windows communication framework
  • Progettare sistemi software complessi con la metodologia UML

MODALITA' DIDATTICHE

Le lezioni alternano spiegazioni teoriche ad esercitazioni pratiche. Le spiegazioni teoriche vengono frequentemente esemplificate con l’analisi, l’esecuzione e il debug di frammenti di codice direttamente sul pc del docente. Tutto il materiale visto a lezione (slide ed esempi pratici) viene condiviso attraverso le piattaforme AulaWeb e Teams. Gli studenti possono interagire direttamente con il docente durante le lezioni oppure attraverso la piattaforma Teams. Durante le lezioni, vengono proposte agli studenti un certo numero di esercitazioni pratiche che devono essere consegnate secondo un preciso programma temporale utilizzando il sito GitHub. Al raggiungimento del 60%-80% di esercizi svolti correttamente e consegnati con le modalità richieste, lo studente ha diritto da 1 a 5 punti di bonus sul voto finale dell’esame.

PROGRAMMA/CONTENUTO

  • Introduzione
  • Controllo versioni
  • Git come strumento per il controllo delle versioni
  • Git: uso di repository remoti, branching e merging
  • Workflow locali e distribuiti, branch remoti, rebasing e stashing
  • Introduzione all’Object Oriented Programming e al C# - .NET framework
  • Tipi primitivi e variabili in C#
  • Console I/O, istruzioni condizionali
  • Cicli e array in C#
  • Unit testing
  • Metodi, creazione e uso di oggetti in C#
  • Costruttori, variabili e metodi statici, namespace
  • Eccezioni e stringhe in C#
  • Definizione classi in C#: variabili membro, metodi, costruttori, proprietà, strutture, enum, classi generiche
  • Lettura e scrittura file, strutture dati lineari
  • Alberi, grafi, insiemi e hash maps
  • Concetti base Object Oriented Programming con applicazioni al C#
  • Interfacce
  • Encapsulazione, polimorfismo, coesione ed accoppiamento
  • Distruttori, overloading di operatori, enumeratori
  • Delegati, eventi e observer design pattern; metodi di estensione, tipi anonimi
  • Lambda expressions, LINQ, Sviluppo GUI con Windows Forms
  • Web service e WCF

TESTI/BIBLIOGRAFIA

Slide

Robert C. Martin and Micah Martin. 2006. Agile Principles, Patterns, and Practices in C# (Robert C. Martin). Prentice Hall PTR, Upper Saddle River, NJ, USA.

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.

Joseph Albahari and Ben Albahari. C# 5.0 in a Nutshell: The Definitive Reference. O'Reilly Media; Fifth Edition edition (June 26, 2012)

Jennifer Greene and Andrew Stellman. Head First C#. O'Reilly Media; 3 edition (September 16, 2013)

DOCENTI E COMMISSIONI

Commissione d'esame

LUCIO MARCENARO (Presidente)

CARLO REGAZZONI

RODOLFO ZUNINO

PAOLO GASTALDO (Presidente Supplente)

LEZIONI

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

L’esame si svolge nelle date fissate sul calendario esami, tipicamente dalle ore 9 alle ore 13. Gli studenti che affrontano l’esame dovranno svolgere un test con 62 domande a risposta multipla (tempo limite 1h30m) e impostare un progetto software complesso con un approccio test driven. Questa seconda parte dell’esame può essere fatta a coppie.

MODALITA' DI ACCERTAMENTO

Durante le lezioni vengono proposti alcuni esercizi divisi in blocchi le cui tematiche sono allineate con lo svolgimento della parte teorica. Gli studenti che frequentano questo insegnamento possono svolgere gli esercizi e caricare il codice sorgente corrispondente in uno specifico repository su GitHub seguendo una tabella di scadenze che viene condivisa durante la prima lezione. Il docente corregge puntualmente gli esercizi svolti suggerendo possibili correzioni e miglioramenti del codice. Gli studenti che alla fine dell’anno abbiano svolto in maniera corretta almeno l’80% degli esercizi proposti hanno diritto ad un bonus sul voto finale dell’esame.

Calendario appelli

Data appello Orario Luogo Tipologia Note
11/01/2022 09:00 GENOVA Scritto + Orale
11/01/2022 10:30 GENOVA Scritto
25/01/2022 09:00 GENOVA Scritto + Orale
08/02/2022 10:30 GENOVA Scritto
09/02/2022 09:00 GENOVA Scritto + Orale
10/06/2022 09:00 GENOVA Scritto + Orale
14/06/2022 10:30 GENOVA Scritto
17/06/2022 09:00 GENOVA Scritto + Orale
28/06/2022 09:00 GENOVA Scritto + Orale
08/07/2022 09:00 GENOVA Scritto + Orale
13/07/2022 10:30 GENOVA Scritto
03/08/2022 09:00 GENOVA Scritto + Orale
06/09/2022 10:30 GENOVA Scritto
07/09/2022 09:00 GENOVA Scritto + Orale