Introduzione a Python; programmazione orientata agli oggetti; diagrammi UML; principi del design; design patterns; analisi object-oriented; modelli di ciclo di vita del software.
Introduzione alle basi di dati; il modello relazionale; il linguaggio SQL per la creazione ed interrogazione di basi di dati; progettazione concettuale delle basi di dati; analisi di schemi concettuali e progettazione logica; gestione di dati con Pandas.
- Phillips, Dusty & Lott, Steven F. (2021). Python Object-Oriented Programming. Packt Publishing.
- Anaya, Mariano (2020). Clean Code in Python. Packt Publishing.
- Fowler, Martin (2004). UML distilled: a brief guide to the standard object modeling language. Addison-Wesley Publishing Company.
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley Publishing Company.
- Atzeni, P., Ceri, S., Fraternali, P., Paraboschi, S., & Torlone, R. (2018). Basi di dati. McGraw-Hill Education.
Obiettivi Formativi
Obiettivo del corso è quello di fornire le conoscenze e competenze necessarie a progettare, sviluppare e gestire sistemi software complessi e basi di dati.
- Conoscenza del paradigma di programmazione orientata agli oggetti
- Capacità di usare i principali diagrammi UML nel contesto dello sviluppo software
- Comprensione dei modelli di ciclo di vita del software
- Conoscenza del modello relazionale
- Conoscenza dei costrutti del linguaggio SQL per la creazione, aggiornamento ed interrogazione di una base di dati relazionale.
- Capacità di descrivere un contesto di interesse attraverso la formulazione di uno schema concettuale, e di tradurlo nel modello relazionale.
Prerequisiti
Conoscenza di tipi e strutture dati elementari.
Conoscenza dei costrutti per il controllo del flusso di esecuzione in un linguaggio procedurale.
Competenze di programmazione in un linguaggio procedurale.
Metodi Didattici
Lezioni in aula ed esercitazioni.
Modalità di verifica apprendimento
Prova scritta e prova orale.
In alternativa, due prove scritte parziali con prova orale facoltativa.
Programma del corso
Il linguaggio Python: struttura del linguaggio, tipi di dati fondamentali, funzioni.
Programmazione orientata agli oggetti: concetti di classe e di oggetto, ereditarietà, incapsulamento, polimorfismo.
I principi SOLID: single responsibility principle, open/closed principle, Liskov's substitution principle, interface segregation principle, dependency inversion principle.
Unified Modeling Language: motivazione ed uso del linguaggio di modellazione, class diagram, sequence diagram, state machine diagram.
Design patterns: genesi e utilizzo dei design pattern, struttura dei pattern GoF, esempi di uso di una selezione di pattern.
Principi di analisi object-oriented.
Modelli di ciclo di vita del software: modello waterfall, ciclo di vita dei software a uso medico (norma IEC 62304).
Introduzione alle Basi di Dati.
Il modello relazionale: definizione di relazione, vincoli di integrità.
Il linguaggio SQL: tipi di dati, creazione tabelle, specifica vincoli di integrità, il comando select, clausole di raggruppamento, ordinamento, operatori aggregati.
Progetto di basi di dati: progettazione concettuale tramite diagrammi UML, progettazione logica (analisi delle ridondanze, ristrutturazione, traduzione nel modello relazionale).
Importazione, esportazione e manipolazione di basi di dati tramite Pandas.