LABORATORIO DI INFORMATICA E TELEMATICA

LABORATORIO DI INFORMATICA E TELEMATICA

_
iten
Ultimo aggiornamento 30/06/2021 15:27
Codice
94721
ANNO ACCADEMICO
2021/2022
CFU
6 cfu al 2° anno di 9273 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE (L-8) GENOVA
SETTORE SCIENTIFICO DISCIPLINARE
ING-INF/03
LINGUA
Italiano
SEDE
GENOVA (INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE)
periodo
2° Semestre
materiale didattico

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

Modalità 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 il corso, vengono proposti 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 al corso
  • 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 del corso

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

Ricevimento: on request

LEZIONI

Modalità 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 il corso, vengono proposti 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.

ORARI

L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

ESAMI

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

Modalità di accertamento

Durante il corso vengono proposti alcuni esercizi divisi in blocchi le cui tematiche sono allineate con lo svolgimento della parte teorica. Gli studenti che frequentano il corso 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 del corso. 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.