You need to activate javascript for this site.
Menu Conteúdo Rodapé
  1. Home
  2. Courses
  3. Mathematics and Applications
  4. Functional Programming

Functional Programming

Code 14786
Year 2
Semester S2
ECTS Credits 6
Workload PL(30H)/T(30H)
Scientific area Informatics
Entry requirements N/A
Learning outcomes The general learning objectives are as follows:

Understand the fundamentals of functional programming to solve problems of a computational nature.
Understand the differences between the imperative and functional programming paradigms.
Introduce the basic concepts of functional programming.
Develop programming skills using a functional language.
Study algorithms over data structures such as lists and trees.
Study search and sorting algorithms.
Studying algorithmic techniques such as, e.g., dynamic programming and backtracking
Syllabus Basic types, Input / Output, Control Structures and Functions, Recursion and Higher Order Functions.
Polymorphism, Algebraic data types: product types, enumerated, sum and structured.
Abstract datatypes and modules.
General notions of program analysis: computational complexity and functional correctness.
Sequential structures: vectors (resizable), hash tables, lists, stacks and queues.
Non-sequential structures: sets, dictionaries, trees, strings, heaps, balanced binary trees.
Sorting, indexing and searching.
Algorithmics: divide-and-conquer, greedy algorithms, by regression, dynamic programming, memoization.
Main Bibliography As referencias principais são:

Jean-Christophe Filliâtre, Sylvain Conchon, com tradução de Simão Melo de Sousa. “Aprender a programar com OCaml : algoritmos e estruturas de dados”. 1ra Edição, 2021.


Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. Developing Applications With Objective Caml.
Yaron Minsky, Anil Madhavapeddy, Jason Hickey. Real World OCaml, Functional Programming for the masses. 2nd Edition. O’Reilly.Versão online.
Robert Sedgewick, Kevin Wayne. Algorithms. Addison-Wesley Professional; 4th edition (April 3, 2011).
Jon Kleinberg, Éva Tardos. Algorithm Design. Pearson; 1st edition 2005.
Thomas H. Cormen, Charles Eric Leiserson, Ronald Rivest, Ronald L. Rivest E Clifford Stein. Introduction to Algorithms. MIT Press; 3rd edition (September 1, 2009).
Steven S. Skiena. The Algorithm Design Manual. Texts in Computer Science. Springer; 3rd edition (October 6, 2020).
Tim Roughgarden. Algorithms Illuminated. Soundlikeyourself Publishing; Illustrated ed.
Teaching Methodologies and Assessment Criteria In order to evaluate the acquired competencies, the Teaching-Learning activities will evaluate both the understanding of the theoretical concepts exposed and the ability to put them into practice.

The teaching team emphasizes that any type of fraud in any of the evaluation items of this course implies the automatic disapproval of the defaulting student, who may also be the subject of a disciplinary procedure.
Language Portuguese. Tutorial support is available in English.
Last updated on: 2022-03-31

The cookies used in this website do not collect personal information that helps to identify you. By continuing you agree to the cookie policy.