Code |
14348
|
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.
|
Language |
Portuguese. Tutorial support is available in English.
|