95648 - PROGETTAZIONE E SVILUPPO DEL SOFTWARE

Anno Accademico 2022/2023

  • Docente: Roberto Casadei
  • Crediti formativi: 9
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Moduli: Danilo Pianini (Modulo 1) Roberto Casadei (Modulo 2) Sara Montagna (Modulo 3)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2) Convenzionale - Lezioni in presenza (Modulo 3)
  • Campus: Cesena
  • Corso: Laurea in Tecnologie dei sistemi informatici (cod. 5816)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente possiede le conoscenze di base dei paradigmi di programmazione per software in-the-large, quali il paradigma object-oriented e quello funzionale, dei suoi principali pattern di progettazione, della sua incarnazione in linguaggi moderni e relativi framework di sviluppo. È in grado quindi di progettare e sviluppare applicazioni complete di medio-piccole dimensioni, usando processi di sviluppo e tecniche agili, tra cui l'approccio DevOps alla conduzione del progetto.

Contenuti

  • Elementi base di analisi, progettazione, e programmazione orientata agli oggetti
  • Linguaggio Java: panoramica e tool di sviluppo
  • Elementi base/tipici dei linguaggi ad oggetti: classi, oggetti, metodi, campi, istanziazione
  • Polimorfismo, ereditarietà e riuso: interfacce e classi astratte
  • Panoramica di aspetti avanzati: programmazione generica, annotazioni, eccezioni, elementi di programmazione funzionale (lambda).
  • Librerie base per la costruzione di programmi
  • Gestione dell'I/O
  • Programmazione di interfacce grafiche
  • Rudimenti di concorrenza
  • Cenno a pattern di progettazione e tecniche di programmazione efficace
  • Strumenti di sviluppo e basi di devops: JDK, IntelliJ Idea, git, Gradle, continuous integration
  • Panoramica sul linguaggio C#

Testi/Bibliografia

Testo di riferimento per il corso:

  • Bruce Eckel. Thinking in Java -- Fourth Edition

Testi aggiuntivi:

  • Joshua Block. Effective Java -- Second Edition
  • Erich Gamma, Richard Elm, Ralph Johnson, John Vlissides. Design Patterns

Il corso si avvarrà anche di tutorial e documentazione tecnica disponibile in rete

Metodi didattici

La progettazione didattica si avvarrà di lezioni frontali ed esercitazioni parzialmente guidate in laboratorio.

In aula vengono illustrate le tecniche di programmazione ad oggetti, i dettagli del linguaggio di programmazione Java, e vengono svolti esercizi stimolando la discussione critica con gli studenti.

In laboratorio, vengono illustrati i vari strumenti di sviluppo, e vengono assegnati task di sviluppo per esercitare le capacità pratiche degli studenti attraverso approcci attivi.

 

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

Modalità di verifica e valutazione dell'apprendimento

L'apprendimento sarà verificato e valutato con la seguente modalità:

Colloquio orale con presentazione di un progetto. A gruppi di 3 persone circa, gli studenti realizzano un progretto di sviluppo software in Java, producendo una relazione che evidenzia requisiti, progrettazione e implementazione. La valutazione di tale relazione include il controllo di qualità della soluzione, e la discussione delle scelte progettuali.

Strumenti a supporto della didattica

Nel corso sarà utilizzato anche materiale didattico fornito dal docente (in particolare, lucidi ed esercizi). L'attività di laboratorio supporterà l'apprendimento pratico. Sarà presente un tutor per supportare l'attività laboratoriale.

Orario di ricevimento

Consulta il sito web di Roberto Casadei

Consulta il sito web di Danilo Pianini

Consulta il sito web di Sara Montagna