LINGUAGGI DI PROGRAMMAZIONE

Obiettivi formativi

OBIETTIVI FORMATIVI Generali: Apprendimento del paradigma di programmazione a oggetti, uso degli strumenti concettuali offerti da questo paradigma nella soluzione di problemi di medie dimensioni. Studio comparato di diversi paradigmi di programmazione (imperativo, funzionale e a oggetti) per sviluppare un senso critico nell'apprendimento e valutazione dei linguaggi di programmazione. Specifici: a) Conoscenza e Comprensione: Conoscenza di elementi base e medio-avanzati di programmazione in Linguaggio C++. Basi del linguaggio di programmazione Haskell. Principi generali della programmazione a oggetti e della programmazione funzionale. b) Applicare Conoscenza e Comprensione: Applicare la metodologia a oggetti alla progettazione di sistemi software di medie dimensioni. Applicare gli strumenti offerti dalla programmazione funzionale alla soluzione di problemi, anche dovendo usare un linguaggio imperativo. c) Capacità Critiche e di Giudizio: Lo studio critico del paradigma di programmazione a oggetti, le basi del paradigma funzionale, oltre ai confronti con il paradigma imperativo già noto agli studenti, unitamente a richiami sul funzionamento di altri linguaggi a Oggetti (come Java e Smalltalk), permettono di valutare ad esempio quale sia il linguaggio più adatto per risolvere un certo problema o sviluppare un progetto software. Inoltre, lo studente dovrebbe acquisire strumenti necessari per valutare criticamente altri linguaggi di programmazione. d) Capacità Comunicative Lo studente è stimolato, sia durante il corso, sia nel colloquio d'esame a esporre in modo chiaro e conciso, ma preciso sia il funzionamento che la struttura di piccoli progetti software. e) Capacità di Apprendimento: Lo studio comparato di diversi paradigmi di programmazione stimola la capacità di apprendimento di altri linguaggi di programmazione, dando allo studente gli strumenti per distinguere gli aspetti caratterizzanti di un linguaggio di programmazione (logica del core language, come ad esempio passaggio di parametri, sistema dei tipi, semantica dei comandi) da quelli più strettamente tecnici (come imparare a usare librerie e strumenti di sviluppo, come IDE e debugger).

Canale 1
IVANO SALVO Scheda docente

Programmi - Frequenza - Esami

Programma
Programma: Parte I: Programmazione a Oggetti con C++ 1. Introduzione alla programmazione a oggetti. 2. Obiettivi del linguaggio C++. 3. Definizioni di classi. Campi e metodi. Invocazioni di metodi. 4. Modificatori di visibilità. Interfaccia e implementazione. 5. Costruttori. Oggetti sullo stack e sullo heap. Distruttori. 6. Ereditarietà. 7. Binding dinamico dei metodi virtual. 8. Metodologie di programmazione a oggetti. Esempi. 9. Templates. Concetto e definizione. Classi generiche di strutture dati. La Standard Template Library. 10. Verso una programmazione matura: le Eccezioni. Parte II: Programmazione Funzionale con Haskell 11. Introduzione alla programmazione funzionale e al linguaggio Haskell. 12. Tipi polimorfi e lazy evaluation in Haskell.
Prerequisiti
Viene supposto che gli studenti abbiano una buona conoscenza della programmazione C e di algoritmi risolutivi di problemi classici, come acquisita nei corsi di Laboratorio di Programmazione e Calcolo (primo anno) e Informatica Generale (secondo anno).
Testi di riferimento
Sono suggeriti i seguenti libri: Bruce Eckel: Thinking in C++ (2nd Edition), Prentice Hall, 2000. Graham Hutton: Programming in Haskell, Cambridge University Press, 2007 Vengono inoltre pubblicati numerosi materiali dal docente, sotto forma di codici di programmi esemplificativi degli argomenti trattati o soluzioni di homework o progetti degli anni precedenti. Vengono infine segnalate numerose risorse WEB sulla programmazione in C++ e Haskell.
Modalità insegnamento
Modalità di svolgimento tradizionale. Oltre alla didattica frontale, sono previste esercitazioni in laboratorio in cui gli studenti sono invitati a scrivere piccoli programmi in autonomia, ma sotto la supervisione del docente.
Frequenza
Seguire le lezioni è fortemente raccomandato.
Modalità di esame
L'esame mira a valutare l'apprendimento tramite la discussione orale di alcuni Homework di programmazione in C++ e Haskell. Viene sia testato il corretto funzionamento dei programmi, sia analizzata la 'qualità' del codice scritto dallo studente. Il colloquio comprende anche la discussione di come nel progetto siano stati applicati i principi di programmazione discussi a lezione. L'esame non prevede un voto, ma solo un giudizio di idoneità.
Modalità di erogazione
La modalità di svolgimento è tradizionale in aula con slides. Possibilità di didattica blended, a seconda della situazione pandemica.
  • Codice insegnamentoAAF1267
  • Anno accademico2025/2026
  • CorsoMatematica
  • CurriculumMatematica per le applicazioni
  • Anno2º anno
  • Semestre1º semestre
  • CFU3