Code: | CC1005 | Acronym: | CC1005 | Level: | 100 |
Keywords | |
---|---|
Classification | Keyword |
OFICIAL | Computer Science |
Active? | Yes |
Responsible unit: | Department of Computer Science |
Course/CS Responsible: | Bachelor in Computer Science |
Acronym | No. of Students | Study Plan | Curricular Years | Credits UCN | Credits ECTS | Contact hours | Total Time |
---|---|---|---|---|---|---|---|
L:CC | 61 | Plano de estudos a partir de 2014 | 1 | - | 6 | 56 | 162 |
MI:ERS | 136 | Plano Oficial desde ano letivo 2014 | 1 | - | 6 | 56 | 162 |
Introduction to functional programming using the Haskell language.
After this course the student should be able to: 1. define functions using equations and patterns; 2. implement simple recursive algorithms over lists and trees; 3. define new algebraic data types for encoding data; 4. compose programming problems using higher-order functions and lazy evaluation; 5. prove elementary properties of programs using equational theory and induction.
Expressions, values and basic types. Defining simple functions; function types. Step by step evaluation using substitution. Compound types: lists and tuples. Some list functions of the standard prelude. Comprehension notation for lists. Recursive definitions. Parametric polymorphism. Higher-order functions. Writting interactive programs using the I/O monad. Defining new concrete data types. Case-study: binary search trees. Abstract types: stacks, queues, sets. Specification using equations and implementation using modules. Type classes and operator overloading. Reasoning about programs using equational theory and induction.
Lectures using whiteboard and overhead projection. Practical classes on computer labs.
designation | Weight (%) |
---|---|
Exame | 50,00 |
Teste | 50,00 |
Total: | 100,00 |
Student mark is given as the average of two written tests. The extra exam may replace the mark of the worst test.
Two written tests.
N/A