Prerequisiti del corso di Analisi e progettazione del software
Un prerequisito fondamentale per il corso di
Analisi e progettazione del software sono i corsi di Programmazione
orientata agli oggetti e di Basi di dati.
Questo documento specifica i prerequisiti specifici del corso di Analisi
e progettazione del software.
In particolare, per prerequisiti si intendono le conoscenze che lo
studente deve possedere all'inizio delle lezioni del corso
per poter fruire positivamente dalle lezioni del corso stesso.
Se invece lo studente non intende frequentare il corso, per prerequisiti
si intendono le conoscenze che lo studente deve possedere
all'inizio dello studio degli argomenti del corso per poter studiare in
modo effettivo per il corso stesso.
Nel seguito, per ciascuna conoscenza specifica viene indicata anche la
rilevanza come prerequisito per il corso di Analisi e progettazione del
software, secondo la seguente scala:
* (un asterisco): un prerequisito minore - non è necessario
conoscere l'argomento in dettaglio - la conoscenza dell'argomento può essere
utile per comprendere meglio alcuni argomenti del corso
** (due asterischi): un prerequisito significativo - è
necessario conoscere bene l'argomento - la mancata conoscenza dell'argomento può
pregiudicare la comprensione di alcuni argomenti importanti del corso - prima di
iniziare il corso è bene ripassare o studiare questi argomenti
*** (tre asterischi): un prerequisito fondamentale - è
necessario conoscere l'argomento in dettaglio - la mancata conoscenza
dell'argomento può pregiudicare la comprensione di molti argomenti
fondamentali del corso - in mancanza di di uno o più di questi prerequisiti
fondamentali, può essere opportuno rimandare la frequenza del corso all'anno
successivo, dopo aver ottenuto i prerequisiti
Inoltre, la rilevanza dei prerequisiti, rispecchia anche il livello di
conoscenza richiesto per ciascuna conoscenza specifica:
- prerequisiti con tre asterischi (***) - sono pronto a
discutere l'argomento in qualunque momento, descrivendo
l'argomento abbastanza in dettaglio
- prerequisiti con due asterischi (**) - sono pronto a
discutere l'argomento in qualunque momento, e sono in grado di
descriverne i dettagli consultando qualche libro o sito web
- prerequisiti con un asterisco (*) - se qualcuno mi
parla dell'argomento, sono in grado di seguirlo e di
comprenderne i dettagli
Prerequisiti relativi al corso di Programmazione orientata agli oggetti.
Argomenti di base della programmazione a oggetti
- che cosa è una classe (***)
- che cosa è un oggetto (***)
- relazione tra classi e oggetti (***)
- che cosa è una variabile d'istanza (***)
- che cosa è un metodo d'istanza (***)
- che cosa è un costruttore (***)
- che cosa è un tipo riferimento, una variabile riferimento e
un riferimento (***)
- conoscenza di tutti questi aspetti in un linguaggio di
programmazione orientato agli oggetti, in particolare Java
oppure C# (***)
Collezioni
- che cosa è una collezione (***)
- che cosa è una lista (***)
- che cosa è un insieme (set) (***)
- che cosa è una mappa (map) (***)
- similitudini e differenze tra liste, insiemi e mappe (***)
- quali sono le operazioni principali su liste, insiemi e
mappe (**)
- semantica delle operazioni principali su liste, insiemi e
mappe (**)
- iteratori e forma for-each del for, per iterare su una
collezione (**)
- notazione Collection<T>, List<T>, Set<T>, Map<K,V> (***)
- se T è che una classe che devo definire io, quali metodi è
necessario definire nella classe T affinché abbia senso usare il
tipo Set<T> oppure Map<T,V>? (**)
- conoscenza di tutti questi aspetti in un linguaggio di
programmazione orientato agli oggetti, in particolare Java
oppure C# (*** o **, a seconda dei casi)
Polimorfismo
- che cosa è una interface (***)
- che cosa vuol dire implementare un'interfaccia (***)
- che cosa vuol dire estendere una classe (***)
- che cosa si intende per polimorfismo (***)
- che cosa si intende per ereditarietà (***)
- che cosa è l'overriding (***)
- che cosa è il late binding (***)
- che cosa è una classe astratta (**)
- differenza tra interface e classi astratte (**)
- conoscenza di tutti questi aspetti in un linguaggio di
programmazione orientato agli oggetti, in particolare Java
oppure C# (*** o **, a seconda dei casi)
Altri argomenti
- che cosa sono le eccezioni (*)
- gestione delle eccezioni in un linguaggio di programmazione
orientato agli oggetti, in particolare Java oppure C# (*)
Prerequisiti relativi al corso di Basi di dati.
- basi di dati relazionali (*)
- modello Entità-Relazione - entità, relazione, attributo,
cardinalità, schemi e istanze (***)
- progettazione concettuale di basi di dati (***)
- istruzioni SQL immerse in un linguaggio di programmazione
(*)