Facoltà di Ingegneria - Guida degli insegnamenti (Syllabus)

Program


Search Search    Print Print

Linguaggi di Programmazione
Programming Languages
Alessandro Cucchiarelli

Seat Ingegneria
A.A. 2015/2016
Credits 9
Hours 72
Period I
Language ENG

Prerequisites
basic knowledge of computer science and programming languages.

Learning outcomes
The course aims to provide students with knowledge on different programming paradigms, along with the characteristics of the languages and the programming techniques associated with them.

Program
1. Introduction to programming concepts - Computation model, programming model and reasoning model. Declarative model: main characteristics. 2. The Programming Languages - Syntax, semantics and pragmatics. Context Free Grammars. EBNF. Syntactic ambiguity. Parsing Techniques. Compilers and interpreters. Data representation: simple types (Integer, Real, Char) and structured types (record, tuple and lists). 3. A model of programming language: the kernel language - Motivation for its use. Definition: linguistic abstractions, data types, variables and partial values, statements and expressions. Language semantics. 4. Procedural abstraction in programming languages - Procedures: lexical scoping, closure, procedures and values, procedures activation. High order programming: procedural abstraction, genericity, instantiation and embedding. Application examples: loop abstraction and folding. 5. Declarative programming techniques - Last call optimization, recursion and iteration, recursion on tuples, exception handling. Data type definition. Abstract data type. Abstract data type programming. 6. Declarative concurrency - Definition. Threads Streams and stream objects. Demand-driven execution. Triggers. Lazy functions. Principles of real-time programming and message-passing. 7. Stateful programming - State definition. The stateful programming model. State representation: cells and arrays. Stateful programming vs. declarative programming. 8. Object Oriented programming - General characteristics. Modelling tools; Class and Objects. Abstraction: inheritance, forwarding and Delegation. Visibility of properties and methods. OOP techniques. Examples. 9. Relational programming - General characteristics. Modelling tools. Choice and Fail. Solutions Space and Search strategies. Logic Programming. Examples. 10. Constraint programming. Contraint definition. Solution techinques and Search strategies. The constraint-cased computation model. Examples.

Development of the examination
LEARNING EVALUATION METHODS
The examination consists of an oral test, aimed at verifying the level of the conceptual knowledge of the programming languages characteristics, the main programming paradigms and the programming techniques acquired by the student during the course. In order to assess the ability to define algorithms by using the concepts learned, the test begins with the request to code a simple function, according to given specifications, in the programming language adopted in the course and by applying the programming techniques learned. A correct coding is a prerequisite to continue the examination.

LEARNING EVALUATION CRITERIA
The candidate must show an adequate knowledge of the theoretical aspects related to the programming languages and the tools used for the validation of the lexical and syntactic correctness of programs coded in these languages. He/she must also show an adequate knowledge of the main programming paradigms, their correlation and the associated programming techniques, by solving simple application problems. A proper use of the technical language will be also evaluated. The maximum mark will be achieved by demonstrating in-depth knowledge of the course topics and the ability to efficiently and effectively use the knowledge learned to solve the proposed problems.

LEARNING MEASUREMENT CRITERIA
The student's learning will be measured with a maximum of 30 points.

FINAL MARK ALLOCATION CRITERIA
During the examination at least three questions are asked to the student, one of which implies the coding of a simple function by using the programming language adopted in the course. The mark is given as the sum of the evaluations of the answers. The ‘laude’ is given to the students who have demonstrated a thorough understanding of the course topics.

Recommended reading
P.Van Roy, S.Haridi, “Concepts, Tecniques, and Models of Computer Programming”, MIT Press.

Courses
  • Ingegneria Informatica e dell'Automazione (Corso di Laurea Magistrale (DM 270/04))




Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427