Programação Funcional
(cod.14348 & 14786)

Departamento de Informática
Universidade da Beira Interior





To appreciate programming as an intellectual activity... you must read and write computer programs, many of them. It doesn’t matter much what the programs are about or what applications they serve. What does matter is how well they perform and how smoothly they fit with other programs in the creation of still greater programs. The programmer must seek both perfection of part and adequacy of collection. [Alan J. Perlis]





Esta página no formato pdf

1 Programação funcional, programação OCaml

Para quê aprender à programação funcional? qual é o papel de uma unidade curricular como esta? Porque

o programador moderno, exímio e acutilante, domina a programação funcional (tipificada).

Uma reflexão interna mais detalhada poderá ser encontrada na aula 0 desta UC, ou na página do mini-curso “Introdução à Programação Funcional, em OCaml”.

Junta-se as referências externas seguintes

Why OCaml at JaneStreet?, Why functional programming matters? OCaml for the masses, OCaml at Cornell, OCaml for the Skeptical, OCaml, from its site, Real World OCaml - prologue, Why did Facebook pick OCaml?, OCaml at Princeton, OCaml at Stanford, OCaml at Cambridge, OCaml at Harvard, OCaml at MIT.

2 Novidades

Contents

3 Docentes

Como colocar uma dúvida à equipa docente da Unidade Curricular?

  1. Tirar proveito do Grupo Teams da UC e colocar a dúvida no canal adequado - método preferido!
  2. Comparecer nas aulas e colocá-la directamente ao docente.
  3. Comparecer no horário de atendimento do regente e colocá-la directamente.
  4. enviar um email ao regente (desousaUUU@UUUdi.ubi.pt, (retire os UUU - medida anti-spam) ) com o assunto "PF: XXXX" em que XXX é o título da dúvida em questão. Qualquer outro formato no assunto arrisca condenar o email ao esquecimento.

4 Objectivos

Os objectivos gerais de aprendizagem são os seguintes:

No final da UC, o aluno deverá ser capaz de (objectivos específicos de aprendizagem):

5 Programa

6 Critérios de Avaliação

6.1 Actividades de Ensino-Aprendizagem e Metodologias Pedagógicas

Por fim a avaliar as competências adquiridas, as actividades de Ensino-Aprendizagem avaliarão tanto a compreensão dos conceitos teóricos expostos como a capacidade em por estes em prática.

Assim, a avaliação será constituída por uma componente teórica e por uma componente prática.

Fraudes

A equipa docente realça que qualquer tipo de fraude em qualquer dos itens desta disciplina implica a reprovação automática do aluno faltoso, podendo ainda vir a ser este alvo de processo disciplinar.

Consulte, para esse efeito o

código de integridade em vigor na UBI.

 ‍

Listamos a seguir as diferentes componentes da avaliação.

6.2 Componente Prática

6.3 Componente Teórica

A avaliação da componente teórica consiste numa frequência (ver secção 7 para conhecer a data prevista da frequência).

Da avaliação desta prova resulta a Nota da Componente Teórica (NCT, 20 valores).

6.4 Concessão de Frequência e Avaliação Contínua

O parâmetro de "Frequência" atribuído no final desta unidade curricular traduz, no contexto da avaliação contínua, a "aquisição de conhecimento mínima" do estudante ao longo do processo de ensino-aprendizagem no final das actividades de contacto.

Considera-se que o estudante demonstrou ter adquirido um grau de conhecimento mínimo (durante o processo de aprendizagem ao longo das actividades lectivas) quando este entregou com sucesso pelo menos um dos exercícios da avaliação prática (i.e. submissão com “Accepted” validada pela equipa docente) É assim concedido Frequência ao aluno nesta situação.

Avaliação contínua qualitativa

No caso de “Frequência”, a avaliação quantitativa, designada aqui de Nota da Avaliação Contínua (NAC), é determinada da seguinte forma:

NAC=
componente prática (NCP) × 0.8 +   componente teórica (NCT) × 1.2
2
Qualquer manifestação de fraude implica a não admissão imediata a exame!

6.5 Avaliação por Exame

A nota da prova escrita do exame substituirá a nota da componente teórica da Avaliação Contínua. Em consequência, a Nota da Avaliação por Exame segue o mesmo cálculo que a Nota da Avaliação Contínua.

Da mesma forma, as avaliações acima de 16 serão alvo de uma defesa de nota.

7 Datas Importantes

8 Horário

Tipo de aulaHorárioSala Docente
Teórica Terça-Feira das 11h00 às 13h00 6.01 S. Melo de Sousa
Prática Quarta-Feira das 9h00 às 11h006.13 T. Roxo
Prática Quinta-Feira das 9h00 às 11h006.13 T. Roxo
Prática Quinta-Feira das 14h00 às 16h006.13 V. Lopes
Prática Quinta-Feira das 16h00 às 18h00 6.13 V. Lopes
Prática Sexta-Feira das 9h00 às 11h006.13 A. Pedro
Prática Sexta-Feira das 11h00 às 13h00 6.13 A. Pedro

9 Atendimento

Preferencialmente Teams. Em alternativa, por email ou

HorárioDocente
segunda-feira das 14h00 às 16h00 S. Melo de Sousa

10 Material Pedagógico e Funcionamento da Disciplina

Os Apontamentos serão atempadamente disponibilizados nas aulas e por meios electrónicos. É esperado e assumido que o aluno tenha lido os acetatos referentes ao capítulo em curso antes das aulas teóricas.

Teóricas

Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.  ‍  (visto aqui)


(legenda : link com problemas = aula por disponibilizar)

Contextualização da UC

 ‍

Aula inaugural : Aula 0.

Programação Funcional e OCaml : Aula 1.


Introdução à programação funcional em OCaml

 ‍

OCaml : Aula 2.

OCaml : Aula 3.

OCaml : Aula 4.


Introdução à análise de algoritmos: complexidade algorítmica e correcção funcional

 ‍

Complexidade algorítmica : Aula 5.

Pre/pos condições, invariantes e programação por contratos : Aula 6.


Base de algoritmos e de estruturas de dados

 ‍

Estruturas de dados sequenciais : Aula 7.

Estruturas de dados não sequenciais (parte 1) : Aula 8.

Estruturas de dados não sequenciais (parte 2): Aula 9.

Ordenação, indexação e pesquisa : Aula 10.

Algoritmos gulosos, por retrocesso : Aula 11.

Programação dinâmica, memoização : Aula 12.

Práticas

Utilizaremos a plataforma Learn-OCaml configurada localmente para esta Unidade Curricular

consultar o site (link)

 ‍

Para efeitos de consulta, deixamos aqui a versão html das fichas presentes na plataforma learn-ocaml, com a anotação dos exercícios por resolver):

(*) - resolver todos os exercicios. (**) - resolver por nível:

Trabalhos Práticos

o Problema A

o Problema B

o Problema C

11 Resultados da avaliação

Por definir

12 Bibliografia

As referencias principais são:

Utilizaremos ocasionalmente as referências:



Enviar comentários e dúvidas para (retire os UUU) : desousaUUU@UUUdi.ubi.pt


This document was translated from LATEX by HEVEA.