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 • Understand the fundamentals of functional programming for solving computational problems. • Understand the differences between the imperative and functional programming paradigms. • Understand the basic concepts of the functional paradigm using a functional language. • Develop functional programming skills through programs that use algebraic data types. • Develop functional programming skills using dynamic programming or backtracking techniques.
|
Syllabus |
• OCaml basics (bindings, conditionals, records, functions) • Recursive functions and recursive types • Benefits of immutability • Algebraic data types, pattern matching • Terminal recursion • Higher-order functions; closures • Lexical scope • Currying • Syntactic sugar • Equivalence and effects • Parametric polymorphism • Type inference • Abstract types and modules
|
Main Bibliography |
Jean-Christophe Filliâtre, Sylvain Conchon. Apprendre à programmer avec OCaml, Eyrolle, 2014. ISBN-13: 978-2212136784
Emmanuel Chailloux, Pascal Manoury, and Bruno Pagano. Developing Applications With Objective Caml. O'Reilly France, 2002. ISBN-13: 978-2841771219
Anil Madhavapeddy and Yaron Minsky. Real World OCaml: Functional Programming for the Masses. 2nd ed. Cambridge: Cambridge University Press, 2022. ISBN-13: 978-1009129220.
John Whitington. OCaml From the Very Beginning. Coherent Press, 2013. ISBN-13: 978-0957671102.
Michael R. Clarkson. OCaml Programming: Correct + Efficient + Beautiful. Self-Publishing, 2024.
|
Teaching Methodologies and Assessment Criteria |
In this field of knowledge, it is particularly important to combine theory with practice. Therefore, the teaching methodology tries to reflect this reality as best as possible. Although theoretical concepts are taught in the classroom, there is a strong practical component dedicated exclusively to ensuring that students are able to take advantage of the advances in this discipline (functional programming).
|
Language |
Portuguese. Tutorial support is available in English.
|