LINGUAGGI DI PROGRAMMAZIONE

(Programming languages)

 

6 Credits

3rd year - 2nd  sem.

Teacher

 

 

Gianfranco Rossi                               gianfr@prmat.math.unipr.it

Form of teaching

 

Theory supported by practical experimentation

Prerequisites

 

Basic knowledge of: computer programming  (preferably using the C language), main data structures, computer system organization and usage. Also basic knowledge of  first-order predicate logic is recommended

 

Course description

Aim

 

To present two non-conventional  programming paradigms and languages, namely, logic programming (using the Prolog language) and object-oriented programming (using the C++ language)

 

Contents

Different programming paradigms: imperative, functional, logic, object-oriented; The logic programming language Prolog: syntax, procedural interpretation, unification, operational semantics (SLD tree, success set, search strategies); Programming in Prolog: list  and number manipulation, built-in predicates, input/output, program development in SICStus Prolog; From predicate logic to logic programming: clausal form, Resolution principle, Horn clauses, SLD Resolution, declarative (model-theoretic) semantics. Correctness and completeness; The language C++: simple data types, variable declarations, control structures, structured data types (array, struct), pointers, function definitions, parameter passing; Other specific C++ features: stream input/output, operator and function overloading, reference parameters, exception handling; Object-oriented programming support in C++: classes and objects; private and public members, constructors, object invocation, information hiding and encapsulation, parametric classes, inheritance; C++ program development

 

 

Assessment method

Oral exam, plus two individual or group (max. 3 students) course works, one based on Prolog, the other one based on C++

 

Literature/Course material

 

Console, Lamma, Mello: Programmazione logica e Prolog (II edizione), UTET Libreria, 1997.

Cohoon, Davidson: C++ Program Design - An Introduction to Programming and Object-Oriented Design (2nd Edition), McGRAW-HILL, 1999.