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