Anno di corso: 1

Crediti: 8
Crediti: 12
Crediti: 12
Crediti: 8
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale
Crediti: 3
Tipo: Lingua/Prova Finale

Anno di corso: 2

Anno di corso: 3

Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 6
Crediti: 8
Crediti: 6
Crediti: 6
Crediti: 18
Tipo: A scelta dello studente
Crediti: 4
Tipo: Lingua/Prova Finale

ALGORITMI E PROGRAMMAZIONE

Scheda dell'insegnamento

Anno accademico di regolamento: 
2018/2019
Anno di corso: 
2
Anno accademico di erogazione: 
2019/2020
Tipo di attività: 
Obbligatorio
Lingua: 
Italiano
Crediti: 
6
Ciclo: 
Secondo Semestre
Ore di attivita' didattica: 
56
Prerequisiti: 

Programmazione strutturata (corso di Laboratorio di Matematica e Informatica)

Moduli

Metodi di valutazione

Modalita' di verifica dell'apprendimento: 

Modalità dell’esame
Prova scritta e prova orale facoltativa (a richiesta dello studente). Valutazione con voto in trentesimi 18-30/30. La prova orale, che può riguardare sia domande teoriche che svolgimento di esercizi pratici di programmazione, ha peso inferiore alla prova scritta, determinando un incremento massimo di 4 punti rispetto al risultato della prova scritta ed è necessaria per l'ottenimento della lode.
La prova scritta è divisa in due parti: nella prima si valutano, attraverso una serie di domande a risposta chiusa, le conoscenze dei fondamenti teorici della programmazione a oggetti; nella seconda, si valuta, attraverso l'implementazione di un semplice sistema software, la capacità di realizzare in pratica un programma in grado di risolvere correttamente un semplice problema applicativo, rispondendo alle specifiche del problema da risolvere e rispettando i principi della programmazione a oggetti presentati a lezione, senza generare errori (di compilazione, a runtime o logici).
La media aritmetica (eventualmente pesata) dei voti conseguiti nelle due parti definisce il voto proposto allo studente, che, se sufficiente, ha la facoltà di accettarlo o modificarlo attraverso lo svolgimento di un orale integrativo (eventualmente peggiorandolo nel caso la prova orale non sia soddisfacente). La prova orale può essere sostenuta solo in caso di sufficienza piena. Il docente si riserva la facoltà di richiedere un supplemento di indagine, attraverso una prova orale obbligatoria, nei casi in cui la prova scritta, pur essendo valutata sufficiente, presenti delle criticità: ad esempio, insufficienza nella parte teorica e parte pratica molto soddisfacente, o viceversa.
Nel corso dell’anno sono previsti 5 appelli d’esame nei seguenti periodi: uno nel mese di giugno, uno a luglio, uno a settembre, uno a novembre e uno a gennaio. Durante il periodo del corso si tengono due prove scritte parziali che, in caso di esito complessivo positivo, permetteranno di verbalizzare il voto o sostenere la prova orale integrativa nel mese di giugno.

Valutazione: 
Voto Finale

Obiettivi formativi

Scopo di questo insegnamento è rendere lo studente in grado di progettare un sistema software a oggetti, integrando diversi tipi di strategie di problem solving.
Coerentemente con gli obiettivi formativi del Corso di Studio, l'insegnamento si propone di fornire allo studente le conoscenze di base riguardanti la progettazione e implementazione di sistemi software secondo il paradigma della programmazione a oggetti. Verranno altresì fornite le competenze necessarie a modellare semplici domini attraverso il linguaggio UML e codificarli in linguaggio di programmazione Java, secondo il paradigma della programmazione a oggetti.

Contenuti

Il corso si prefigge l’obiettivo di insegnare la programmazione ad oggetti e cenni di progettazione del software. Alla fine del corso lo studente dovrà essere in grado di modellare un problema secondo il paradigma a oggetti e di tradurlo in un programma scritto in un linguaggio object-oriented. Il linguaggio di riferimento è Java.

Programma esteso

• Introduzione ai concetti fondamentali del paradigma a oggetti (incapsulamento, ereditarietà, polimorfismo) e al linguaggio UML (Unified Modeling Language)
• Cenni al ciclo di vita del software.
• Java come linguaggio e come piattaforma.
• Il paradigma a oggetti base nel contesto Java: classi e oggetti, attributi e metodi.
• Il paradigma a oggetti avanzato nel contesto Java: ereditarietà e polimorfismo.
• Eccezioni, ArrayList, Generics a Collection Framework

Bibliografia consigliata

Tutte le informazioni sul corso, le slide presentate a lezione e le esercitazioni da svolgere in laboratorio verranno fornite tramite la piattaforma elearning di ateneo all’indirizzo elearning.unimib.it.
Testo di riferimento:
• W. Savitch: "Programmazione di base e avanzata con Java", a cura di Daniela Micucci, 2° edizione, Pearson

Modalità di erogazione

Convenzionale

Metodi didattici

• Lezione frontale, 4 cfu
• Esercitazione frontale, 1 cfu
• Laboratorio frontale, 1 cfu

Periodo: Secondo semestre

Contatti/Altre informazioni

Orario di ricevimento
Giovedì, dalle 11 alle 12 o su appuntamento.
Pagina web
https://elearning.unimib.it/course/info.php?id=24364