Programmazione

A.A. 2020/2021
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
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.
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 prevalentemente in videoconferenza utilizzando Teams. Tutte le lezioni saranno registrate e rese disponibili. Le attività di laboratorio si svolgeranno contemporaneamente in presenza per un numero di studenti compatibile con gli spazi disponibili, ed online per gli studenti che non potranno presenziare.
Le modalità e i criteri per partecipare ai laboratori in presenza, che prevedono una prenotazione con la apposita app, saranno pubblicate per tempo.

Materiali di riferimento:
Nessuna variazione

Modalità di verifica dell'apprendimento e criteri di valutazione:
L'esame rimane suddiviso in 3 parti (teorico, pratico e progetto) ciascuna delle quali in modalità orale attraverso Teams, secondo le indicazioni fornite dall'Ateneo. Su Ariel vengono pubblicati e costantemente aggiornati i dettagli e i calendari degli orali per ciascuna delle parti.

Programma
Il programma del corso 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
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, una prova di laboratorio sulla programmazione in C e un progetto sulla programmazione ad oggetti (Java) da presentare al docente.
La prova scritta verte sulla teoria della programmazione e la capacità 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 parte di laboratorio prevede la soluzione di problemi semplici attraverso programmi scritti in C. Si tratta di problemi con diversi punteggi associati ai livelli di difficoltà crescenti. Le votazioni di queste due parti, quella scritta e quella di laboratorio, sono espresse in trentesimi.
Il progetto Java, definito previa accordi con il docente, può essere presentato una volta superate la parte scritta e quella di laboratorio con un punteggio per entrambe le parti superiori a 17 e comunque con media superiore o uguale a 18. Durante la presentazione il docente verifica complessità e qualità del progetto e le competenze sulla programmazione in Java e ad oggetti in generale.
Le prove possono essere superate anche in sessioni differenti.
Il voto finale espresso in trentesimi risulterà dalla media dei voti della prova scritta e della prova pratica, incrementato eventualmente dal punteggio del progetto (max 2 punti).
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Docenti: Anisetti Marco, Ferrari Stefano, Tresoldi Emanuele
Turni:
Lab. Turno A
Docenti: Anisetti Marco, Ferrari Stefano
Lab. Turno B
Docente: Tresoldi Emanuele
Docente/i
Ricevimento:
Su appuntamento
Ufficio docente (7003) presso il Dipartimento di Informatica in Via Celoria 18, Milano (MI)
Ricevimento:
Su appuntamento (via email)
via Celoria, 18 --- Milano