TECNICHE AVANZATE DI PROGRAMMAZIONE

TECNICHE AVANZATE DI PROGRAMMAZIONE

_
iten
Codice
80311
ANNO ACCADEMICO
2021/2022
CFU
6 cfu al 3° anno di 8759 INFORMATICA (L-31) GENOVA
SETTORE SCIENTIFICO DISCIPLINARE
INF/01
LINGUA
Italiano
SEDE
GENOVA (INFORMATICA )
periodo
1° Semestre
materiale didattico

PRESENTAZIONE

Scopo dell'insegnamento è migliorare le capacità di programmazione degli studenti e farli familiarizzare con tecnologie e metodologie di largo impiego nel mondo industriale; in particolare, con il concetto di piattaforma, esemplificato sul .NET framework, con alcuni strumenti di produttività, quali Visual Studio, e con lo sviluppo a componenti.

Per seguire proficuamente l’insegnamento bisogna saper programmare in un linguaggio object-oriented e avere una conoscenza elementare di basi di dati.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Acquisire i concetti base di progettazione e programmazione basata su componenti e familiarizzare con tecnologie e strumenti di produttività in uso nell'ambito professionale, integrando e ampliando le competenze di sviluppo software già conseguite in altri corsi.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Attraverso lo studio individuale e la pratica di programmazione, al termine del corso gli studenti

  • saranno in grado di implementare piccoli progetti in ambiente DotNet
  • avranno acquisito familiarità con le funzionalità base di Visual Studio
  • avranno sperimentato l'uso di unit testing per migliorare la qualità del codice e acquisito i concetti alla base di tale tecnica
  • avranno studiato il modello alla base dei versioning system di ultima generazione e usato in pratica GitHub
  • avranno imparato a sviluppare codice che rispetta le specifiche
  • avranno imparato ad usare l'Entity Framework per interagire con una base di dati SQL-Server 

PREREQUISITI

  • Programmazione imperativa e object-oriented (strutture dati, cicli, ereditarietà, gestione eccezioni, sistemi di tipi...)
  • Progettazione e concetti fondamentali di Basi di Dati (tabelle, interrogazioni, vincoli...)
  • Ciclo di vita del software (progettazione, implementazione, testing...)

Modalità didattiche

L’insegnamento si compone di lezioni frontali e di una parte di  laboratorio guidato in cui vengono applicate le tecniche e i principi introdotti durante le lezioni frontali.

Nel corso dei laboratori verranno affrontati in isolamento le problematiche da risolvere nel progetto finale. La partecipazione attiva è quindi da riguardare come propedeutica al superamento dell'esame con sforzo contenuto.

PROGRAMMA/CONTENUTO

TAP introduce le tecnologie, metodologie e strumenti mainstream per lo sviluppo del software. Come "effetto collaterale", gli studenti miglioreranno le loro capacità di programmazione.
Il corso sviluppa due argomenti principali:

  1. Programmazione in-the-small. Gli studenti dovranno dimostrare di saper
    • leggere, capire e implementare una specifica dettagliata
    • eseguire attività di unit testing, usando il risultato per correggere eventuali errori
    • progettare e usare un piccolo database
      Una ragionevole familiarità con queste attività è un prerequisito del corso. TAP affronterà l'integrazione di questi aspetti.
  2. Sviluppo a componenti, principi di programmazione modulare e riuso; gli studenti dovranno imparare:
    • le motivazioni economiche e storiche per il riuso
    • concetti alla base delle componenti e dei modelli a componenti
    • concetti base di framework/piattaforma
    • impatto dell'uso di componenti riusabili sullo sviluppo di un sistema
    • peculiarità del processo di sviluppo di una componente riusabile

​I concetti esposti saranno concretizzati mediante attivita progettuali, che si svolgeranno fin dall'inizio del periodo di lezione e permetteranno anche di prendere familiarità con vari strumenti per lo sviluppo e il testing in ambiente .NET.

Questo insegnamento è obbligatorio per il curriculum TECNOLOGICO e può essere scelto per il curriculum PROPEDEUTICO

TESTI/BIBLIOGRAFIA

Le indicazioni sui testi di riferimento e sulla documentazione di strumenti/tecnologie saranno disponibili su Aulaweb e nelle slide del corso.

DOCENTI E COMMISSIONI

Ricevimento: Su appuntamento o via mail.

Commissione d'esame

MAURA CERIOLI (Presidente)

DAVIDE ANCONA

GIOVANNI LAGORIO (Presidente Supplente)

MAURIZIO LEOTTA (Supplente)

LEZIONI

Modalità didattiche

L’insegnamento si compone di lezioni frontali e di una parte di  laboratorio guidato in cui vengono applicate le tecniche e i principi introdotti durante le lezioni frontali.

Nel corso dei laboratori verranno affrontati in isolamento le problematiche da risolvere nel progetto finale. La partecipazione attiva è quindi da riguardare come propedeutica al superamento dell'esame con sforzo contenuto.

ORARI

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

ESAMI

Modalità d'esame

Per superare l'esame gli studenti dovranno completare un piccolo progetto individuale e superare una prova scritta.

Gli studenti che avranno così raggiunto la sufficienza potranno sostenere la discussione del progetto e una prova orale.

Modalità di accertamento

Il progetto permette di valutare le capacità di programmazione utilizzando uno strumento di produttività nel corso di sviluppo di interfacce fissate.

Lo scritto permette di valutare

  • le capacità di programmazione di piccoli frammenti i codice senza l'ausilio di ambienti di sviluppo sofisticati
  • e, attraverso un piccolo quiz, la conoscenza dei concetti introdotti durante il corso

L'orale permette di verificare quanto sono stati assimilati i concetti alla base delle tecnologie adottate

La discussione del progetto permette di verificarne la paternità e offre allo studente la possibilità di controbattere eventuali valutazioni negative illustrando le motivazioni delle scelte implementative adottate