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. |