Programmazione
A.A. 2021/2022
Obiettivi formativi
Questo è un insegnamento introduttivo alla programmazione, ai suoi principi ed alle sue tecniche. Il suo scopo è quello di familiarizzare lo studente, che potrebbe non essere mai stato esposto alla programmazione, con questa disciplina e fornirgli quella comprensione e gli strumenti necessari ad affrontare tutti gli insegnamenti che ne presuppongono la conoscenza.
Risultati apprendimento attesi
Alla fine dell'insegnamento lo studente saprà progettare soluzioni algoritmiche di media difficoltà ed implementare le stesse in un linguaggio di programmazione imperativo
Saprà inoltre progettare semplici soluzioni algoritmiche utilizzando il paradigma ad oggetti.
Saprà inoltre progettare semplici soluzioni algoritmiche utilizzando il paradigma ad oggetti.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo semestre
Metodi didattici:
Le lezioni si terranno sia in presenza che sulla piattaforma Microsoft Teams e potranno essere seguite sia in sincrono sulla base dell'orario sia in asincrono perché saranno registrate e lasciate a disposizione degli studenti sulla medesima piattaforma.
Si rimanda ai decreti rettorali per tutte le direttive e istruzioni per l'accesso ai locali dell'università.
Materiali di riferimento:
Nessuna variazione
Modalità di verifica dell'apprendimento e criteri di valutazione:
L'esame è strutturato come nella modalità non emergenziale. Laddove la regolamentazione lo consentisse, verranno mantenute le medesime modalità in presenza.
In caso contrario, l'esame teorico verrà effettuato in modalità orale così come la presentazione dei progetti utilizzando la piattaforma Microsoft Teams.
Le lezioni si terranno sia in presenza che sulla piattaforma Microsoft Teams e potranno essere seguite sia in sincrono sulla base dell'orario sia in asincrono perché saranno registrate e lasciate a disposizione degli studenti sulla medesima piattaforma.
Si rimanda ai decreti rettorali per tutte le direttive e istruzioni per l'accesso ai locali dell'università.
Materiali di riferimento:
Nessuna variazione
Modalità di verifica dell'apprendimento e criteri di valutazione:
L'esame è strutturato come nella modalità non emergenziale. Laddove la regolamentazione lo consentisse, verranno mantenute le medesime modalità in presenza.
In caso contrario, l'esame teorico verrà effettuato in modalità orale così come la presentazione dei progetti utilizzando la piattaforma Microsoft Teams.
Programma
Il programma dell'insegnamento si articola come segue.
NOZIONI DI BASE
· Nozione di algoritmo.
· Fasi della programmazione.
· Strumenti di modellazione.
· Linguaggi e Paradigmi di programmazione.
PROGRAMMAZIONE STRUTTURATA
· Costrutti e principi della programmazione strutturata.
· Linguaggio C: espressioni e assegnamenti, costrutti di controllo, tipi predefiniti, vettori, matrici e stringhe, tipi strutturati, puntatori e gestione della memoria, funzioni e passaggio di parametri, main e parametri al main, libreria standard, gestione dei file.
· Eliminazione dei Salti: teorema di Böhm-Jacopini, trasformazione di Ashcroft e Manna.
· Correttezza del codice: elementi di validazione e verifica della correttezza.
PROGRAMMAZIONE AD OGGETTI
· Concetti fondamentali: Modularità, astrazione e tipi di dato astratto, incapsulamento, interfacce, classi ed oggetti, ereditarietà e polimorfismo.
· Riuso del software: pattern, programmazione orientata agli aspetti.
· Linguaggio Java.
· Cenni alle nuove tendenze della programmazione
NOZIONI DI BASE
· Nozione di algoritmo.
· Fasi della programmazione.
· Strumenti di modellazione.
· Linguaggi e Paradigmi di programmazione.
PROGRAMMAZIONE STRUTTURATA
· Costrutti e principi della programmazione strutturata.
· Linguaggio C: espressioni e assegnamenti, costrutti di controllo, tipi predefiniti, vettori, matrici e stringhe, tipi strutturati, puntatori e gestione della memoria, funzioni e passaggio di parametri, main e parametri al main, libreria standard, gestione dei file.
· Eliminazione dei Salti: teorema di Böhm-Jacopini, trasformazione di Ashcroft e Manna.
· Correttezza del codice: elementi di validazione e verifica della correttezza.
PROGRAMMAZIONE AD OGGETTI
· Concetti fondamentali: Modularità, astrazione e tipi di dato astratto, incapsulamento, interfacce, classi ed oggetti, ereditarietà e polimorfismo.
· Riuso del software: pattern, programmazione orientata agli aspetti.
· Linguaggio Java.
· Cenni alle nuove tendenze della programmazione
Prerequisiti
L'insegnamento si concentra sulle nozioni di programmazione di base. Verranno fornite tutte le nozioni necessarie per poter modellare progettare e sviluppare semplici soluzioni software. Per tanto non richiede nessun particolare pre-requisito.
Metodi didattici
Lezioni frontali svolte in aula e lezioni di laboratorio dove sarà possibile svolgere esercitazioni mirate e scrivere programmi in Linguaggio C e Java.
Materiale di riferimento
Dispense e lucidi a cura dei docenti, disponibili sul sito dell'insegnamento.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame si articola in una prova scritta della durata di due ore (senza l'ausilio di libri o appunti) e due progetti da presentare al docente.
La prova scritta verte sulla teoria della programmazione e la capacità di comprendere ed ideare e progettare flussi, algoritmi e soluzioni software semplici. E' costituita da una serie di domande aperte ed esercitazioni con un punteggio specifico.
I due progetti riguardano: 1) la programmazione imperativa (C); 2) la programmazione ad oggetti (Java).
I progetti sono accordati con il docente e presentati assieme in un'unica sessione d'esame. Durante la
presentazione il docente verifica complessità e qualità dei progetti e le competenze sulla programmazione C e Java.
Le votazioni della prova scritta e dei progetti, sono espresse in trentesimi.
Le prove (scritta e i due progetti assieme) possono essere superate anche in sessioni differenti.
Il voto finale espresso in trentesimi risulterà dalla media dei voti della prova scritta e dei progetti.
La prova scritta verte sulla teoria della programmazione e la capacità di comprendere ed ideare e progettare flussi, algoritmi e soluzioni software semplici. E' costituita da una serie di domande aperte ed esercitazioni con un punteggio specifico.
I due progetti riguardano: 1) la programmazione imperativa (C); 2) la programmazione ad oggetti (Java).
I progetti sono accordati con il docente e presentati assieme in un'unica sessione d'esame. Durante la
presentazione il docente verifica complessità e qualità dei progetti e le competenze sulla programmazione C e Java.
Le votazioni della prova scritta e dei progetti, sono espresse in trentesimi.
Le prove (scritta e i due progetti assieme) possono essere superate anche in sessioni differenti.
Il voto finale espresso in trentesimi risulterà dalla media dei voti della prova scritta e dei progetti.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Lezioni: 72 ore
Docenti:
Anisetti Marco, Casiraghi Elena
Docente/i
Ricevimento:
Su appuntamento
Ufficio docente (7003) presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
Su appuntamento
Ufficio 6006 (secto piano), Dip. di Informatica, Via Celoria 18, Milano