Programmazione
A.A. 2025/2026
Obiettivi formativi
Questo insegnamento introduttivo alla programmazione, copre i principi e le tecniche fondamentali della disciplina. È progettato per familiarizzare gli studenti, anche quelli senza alcuna esperienza pregressa, con i concetti base della programmazione. L'obiettivo è fornire una comprensione solida e gli strumenti necessari per affrontare con successo tutti gli insegnamenti successivi che richiedono conoscenze di programmazione.
Risultati apprendimento attesi
Alla fine dell'insegnamento, lo studente sarà in grado di progettare soluzioni algoritmiche semplici e implementarle in un linguaggio di programmazione imperativo. Inoltre, sarà capace di progettare soluzioni a problemi semplici utilizzando il paradigma orientato agli 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
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 al fine di consolidare i concetti teorici più rilevanti 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 una prova pratica di laboratorio.
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.
La prova di laboratorio riguarda sia la programmazione imperativa (C) che la programmazione ad oggetti (Java).
La prova di laboratorio prevede esercizi in C e Java da effettuarsi in laboratorio ognuno con un punteggio specifico.
Le votazioni della prova scritta e della prova pratica, sono espresse in trentesimi.
I risultati verranno comunicati direttamente agli interessati non appena disponibili.
Le prove (scritta e pratica) possono essere superate anche in sessioni differenti.
Il voto finale espresso in trentesimi risulterà dalla media dei voti della prova scritta e pratica.
E' possibile migliorare la media con un progetto facoltativo da concordare con i docenti (fino ad un massimo di 2).
Per la prova scritta oltre alla correttezza della risposta verrà valutata la competenza nell'uso di un linguaggio tecnico adeguato. Per la prova pratica verrà valutata oltre alla correttezza del risultato la qualità tecnica della programmazione. Per il progetto facoltativo verrà valutata la complessità, la qualità del codice e la capacità di esposizione.
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.
La prova di laboratorio riguarda sia la programmazione imperativa (C) che la programmazione ad oggetti (Java).
La prova di laboratorio prevede esercizi in C e Java da effettuarsi in laboratorio ognuno con un punteggio specifico.
Le votazioni della prova scritta e della prova pratica, sono espresse in trentesimi.
I risultati verranno comunicati direttamente agli interessati non appena disponibili.
Le prove (scritta e pratica) possono essere superate anche in sessioni differenti.
Il voto finale espresso in trentesimi risulterà dalla media dei voti della prova scritta e pratica.
E' possibile migliorare la media con un progetto facoltativo da concordare con i docenti (fino ad un massimo di 2).
Per la prova scritta oltre alla correttezza della risposta verrà valutata la competenza nell'uso di un linguaggio tecnico adeguato. Per la prova pratica verrà valutata oltre alla correttezza del risultato la qualità tecnica della programmazione. Per il progetto facoltativo verrà valutata la complessità, la qualità del codice e la capacità di esposizione.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Lezioni: 72 ore
Docenti:
Anisetti Marco, Luperto Matteo
Turni:
Docente:
Anisetti Marco
Turno A
Docente:
Luperto MatteoDocente/i
Ricevimento:
Su appuntamento
Ufficio docente (7003) presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
Richiedere colloquio via mail.
AISLAB , IV Piano, Via Celoria 18, Milano