Salta al contenuto principale della pagina

TECNICHE AVANZATE DI PROGRAMMAZIONE

CODICE 80311
ANNO ACCADEMICO 2022/2023
CFU
  • 6 cfu al 3° anno di 8759 INFORMATICA (L-31) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE INF/01
    LINGUA Italiano
    SEDE
  • GENOVA
  • PERIODO 1° Semestre
    MATERIALE DIDATTICO AULAWEB

    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 dell'iinsegnamento 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...)

    MODALITA' 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.
    L'insegnamento 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 dell'insegnamento. 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 dell'insegnamento.

    DOCENTI E COMMISSIONI

    Commissione d'esame

    MAURA CERIOLI (Presidente)

    DAVIDE ANCONA

    GIOVANNI LAGORIO (Presidente Supplente)

    MAURIZIO LEOTTA (Supplente)

    LEZIONI

    Orari delle lezioni

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

    ESAMI

    MODALITA' 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.

    MODALITA' 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 l'insegnamento

    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

    Calendario appelli

    Data Ora Luogo Tipologia Note
    30/01/2023 14:30 GENOVA Scritto
    16/02/2023 14:30 GENOVA Scritto
    05/06/2023 14:30 GENOVA Scritto
    03/07/2023 14:30 GENOVA Scritto
    11/09/2023 14:30 GENOVA Scritto

    ALTRE INFORMAZIONI

    Si consigliano gli studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali di contattare sia il referente Prof. Sergio Di Domizio (sergio.didomizio@unige.it), sia il docente, all’inizio del corso, per concordare modalità didattiche e d’esame che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali e forniscano idonei
    strumenti compensativi. Ulteriori informazioni utili si possono trovare alla pagina del sito Unige che reca le informazioni del caso: https://unige.it/disabilita-dsa/studenti-disabilità-informazioni-utili