Go to:
Logótipo
You are in:: Start > CC1005

Functional Programming

Code: CC1005     Acronym: CC1005     Level: 100

Keywords
Classification Keyword
OFICIAL Computer Science

Instance: 2021/2022 - 2S Ícone do Moodle

Active? Yes
Web Page: http://www.dcc.fc.up.pt/~pbv/aulas/funcional
Responsible unit: Department of Computer Science
Course/CS Responsible: Bachelor in Computer Science

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L:B 1 Official Study Plan 3 - 6 56 162
L:CC 111 study plan from 2021/22 1 - 6 56 162
L:F 2 Official Study Plan 2 - 6 56 162
3
L:G 1 study plan from 2017/18 2 - 6 56 162
3
L:IACD 0 study plan from 2021/22 3 - 6 56 162
L:M 12 Official Study Plan 2 - 6 56 162
3
L:Q 1 study plan from 2016/17 3 - 6 56 162
Mais informaçõesLast updated on 2022-02-21.

Fields changed: Teaching methods and learning activities, Componentes de Avaliação e Ocupação, Modo de trabalho, Fórmula de cálculo da classificação final

Teaching language

Portuguese

Objectives

Introduction to the functional programming paradigm using the Haskell language.

Learning outcomes and competences

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. Use algebraic data types for representing data for elementary programming problems;
4. Decompose programming problems as the composition of simpler functions  using higher-order argument and lazy evaluation;
5. Prove elementary properties of programs using equational theory and induction.

Working method

Presencial

Program

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. Basic type classes for operator overloading. 


Higher-order functions. Programs that process files using the IO monad.
Examples of solving elementary programing contest using Haskell.

Defining new concrete data types. Case-studies: implementing sets and association tables using binary search trees. Representing binary relations and graphs; elementary algorithms on tress and graph structures. 

Proving properties about recursive programsusing equational theory and induction.

Mandatory literature

Hutton Graham 1968-; Programming in Haskell. ISBN: 9780521692694 pbk

Complementary Bibliography

Richard Bird; Introduction to functional programming using Haskell. ISBN: 978-0-13-484346-9 pbk
Richard Bird; Thinking functionally with Haskell, Cambridge University Press, 2015. ISBN: 978-1107452640

Teaching methods and learning activities

Lectures using oral exposition, slide projection and interactive demonstrations.
Practical classes on a computer labs.

Evaluation Type

Distributed evaluation with final exam

Assessment Components

designation Weight (%)
Exame 70,00
Trabalho laboratorial 10,00
Teste 20,00
Total: 100,00

Amount of time allocated to each course unit

designation Time (hours)
Estudo autónomo 110,00
Frequência das aulas 52,00
Total: 162,00

Eligibility for exams

Atendance of at least 66% of the practical classes taught.

Calculation formula of final grade

The final mark is given by a final exam together with a midterm test and a series of unsupervised programming exercises presented in lab classes. Exercises should be solved individually. The automatic system MOSS will be used to detect and disqualify plagarism.

Final mark = 70% * Exam + 20% Test + 10% Exercises

This formula is used for obtaining aproval in the first and second exam sittings.

Special assessment (TE, DA, ...)

Assement follows the same criteria described above as for ordinary students.

Students with worker status do not have to attend practical classes to be elegible for exam.

Classification improvement

Classification improvment is done by exam that alows improving the Exam component in the formula above (70%); an optional extra exercise allows improving the Test component (20%). The classification of the exercises cannot be improved.
Recommend this page Top
Copyright 1996-2025 © Faculdade de Ciências da Universidade do Porto  I Terms and Conditions  I Acessibility  I Index A-Z  I Guest Book
Page created on: 2025-06-14 at 23:47:09 | Acceptable Use Policy | Data Protection Policy | Complaint Portal