FUNCTIONAL PROGRAMMING
- Overview
- Assessment methods
- Learning objectives
- Contents
- Bibliography
- Delivery method
- Teaching methods
- Contacts/Info
Prerequisites: "Programmazione". The student is expected to have a
good knowledge of the fundamentals of imperative and object oriented
programming languages. Moreover, the student is expected to have a
good knowledge of discrete mathematics and basic data structures
provided in the courses of "Algebra e geometria" and "Algoritmi e
strutture dati".
The exam will consist of an written examination testing student's
knowledge and understanding of the theoretical aspects of functional
programming languages (3 questions, 15 points) and of the student's
capabilities to apply functional programming to solve small
programming problems (3 problems, 15 points).
The course provides an introduction to functional programming and the
related programming techniques. The primary goal is to provide students
with the necessary knowledge to understand and to develop programs in
the functional programming languages using Scala as case study. The
course is thus formed by lessons that illustrate the fundamentals of
functional programming and the related programming techniques and
programming exercises using the Scala programming language.
At the end of the course, the student:
- knows the main elements that form a functional programming language
(syntax, semantics, programming techniques);
- knows the basic data structures and abstractions used in functional
programming and their implementation in Scala;
- applies the acquired knowledge to the resolution of simple problems,
deploying the capabilities provided by a functional programming language.
Applying knowledge and understanding
At the end of the course the student can apply the programming
language in order to solve problems, proposing the most suitable
abstractions for the formalization of the problem in an
functional programming language.
Knowledge and understanding capabilities
At the end of the course the student has the necessary capabilities to
autonomously learn a programming language e to understand the problems
inherent to the development of new software.
Communication capabilities
At the end of the course the student can properly communicate with the
right terminology the features of a functional programming language
and the structure of the implemented applications.
The knowledge and the understanding capabilities will be acquired in
parallel during the course which will treat the following topics:
Fundamentals concepts of imperative, object-oriented and functional
programming languages. (4h)
Fundamentals functional programming languages: recursion and
tail-recursion, substitution model, evaluation strategies
(call-by-name and call-by-value). (6h)
Higher-order functions and currying. (6h)
Functional programming and objects. Type hierarchy, type parameters,
polymorphism and constraints. Implementation in Scala. (8h)
The decomposition problem and pattern matching. (6h)
Mutable and immutable data structures. List, Vector, Trees, Maps. (8h)
Map, reduce and filter. (6h)
Correctness. (4h)
Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala. Third edition. 2016
Lecture notes, available on the e-learning site.
48 hours of lectures, 102 hours of study.
Office hours: by appointment via email.
Professors
Borrowers
-
Degree course in: COMPUTER SCIENCE