Obiettivi
Il corso intende presentare i fondamenti della programmazione. A
questo scopo sono illustrate le tecniche formali per descrivere le
caratteristiche dei linguaggi di programmazione: grammatiche e automi per
descrivere la sintassi e sistemi di transizione per descrivere la semantica. Le
tecniche sono esemplificate su un sottoinsieme di Java. Sono poi introdotte,
tramite esempi di strutture dati e di algoritmi, alcune tecniche fondamentali
di programmazione iterativa e ricorsiva.
Descrizione
·
Algoritmi e problem-solving
·
Elementi di sintassi e semantica dei linguaggi di programmazione
·
Teoria degli automi
·
Costrutti di base della programmazione
·
Strutture di dati e gestione della memoria
·
Ricorsione e strategie di calcolo basate sulla ricorsione
Programma
·
Introduzione
·
Sintassi
·
Automi
·
Grammatiche
·
Semantica Operazionale
·
Sistemi di transizione formalizzazione del nucleo iterativo di Java
modello dello stato con stack e heap metodi e passaggio dei parametri
·
Tipi di dato e problem solving, prima parte: array, metodi
iterativi di search e sort, tabelle hash
·
Ricorsione
·
Tipi di dato e problem solving: seconda parte metodi ricorsivi di
sort, liste e alberi binari, alberi binari di ricerca.
Materiale didattico: C.S. Horstmann: Concetti di Informatica e fondamenti di Java 2, Apogeo A.Brogi et al. Introduzione alle strutture dati in Java, dispense: D.Pedreschi, Elementi di Sintassi dei Linguaggi di Programmazione, e R.Barbuti et. al Semantica Operazionale