Linguaggi e Metodologie di Programmazione

Modulo: Programmazione Dichiarativa e Funzionale

Benvenuto nella pagina del secondo modulo di Linguaggi e Metodologie di Programmazione, dedicato alla Programmazione Dichiarativa e Funzionale. Questa pagina contiene tutto il materiale didattico aggiornato. Per qualsiasi altra comunicazione (date esami, prenotazioni, informazioni su assenze docenti etc..), vi rimandiamo invece alla pagina non ancora attivata presente sul sito della didattica di Tor Vergata

Esercizi Collaborativi

Per imparare, occorre anche fare! Consegnate gli esercizi seguenti a me (fabiomassimo.zanzotto) e al tutor condividendo una cartella su gooogledrive.

  1. Progetto in Java: Creatore Automatico di Cruciverba (Codice su BitBucket): consegnare Giovedi 10/3/2015
  2. Progetto in Java: Ricercare Informazione in Grafi Sintattici (Codice su BitBucket): consegnare Martedi 15/3/2015
Blog di Coding
Cartella di esercizi Prolog Fatti in Aula
Compiti d'esame

Programma

Paradigma Dichiarativo: In questa parte del corso, si vuole introdurre lo studente alla programmazione dichiarativa basata sulla logica. Dopo una prima analisi delle differenze dei paradigmi di programmazione procedurali e dichiarativi, viene introdotto il Prolog come un linguaggio dichiarativo. Il linguaggio verrà descritto dal punto di vista sintattico e verranno introdotti i principali tipi di dati e gli operatori. Verranno descritte delle applicazioni nell'ambito dell'intelligenza artificiale e dell'elaborazione del linguaggio naturale. Verrà infine introdotta il legame con la logica dei predicati e con la logica del prim'ordine.

Paradigma Funzionale: In questa parte del corso, lo studente verrà introdotto ai principi di programmazione funzionale. Il linguaggio utilizzato è il Python che è un linguaggio ibrido che contiene alcuni di questi principi.

Materiale didattico di accompagno al corso

Introduzione al Paradigma Dichiarativo

Basi del linguaggio Prolog

Esecuzione dei programmi Prolog. Liste ed operatori aritmetici

Definire operatori. Strutture dati

Controllare lo spazio di ricerca

Controllare Tipi Dati. Decomporre fatti. Controllare il database

Recuperare tutte le risposte. Gestione di input-output

Ordinamento e operazioni su dati strutturati

Similarità tra alberi e programmazione dinamica

Alberi Bilanciati

Strategie di problem solving

Cenni di Natural Language Processing in Prolog

Cenni di logica

Cenni di Machine Learning in Prolog

Introduzione al Python e alla programmazione funzionale (in progress)