Métodos de Programação I - 1998/99
[ DI/UM ]

Sumários - 1998/99


Aula Teórica de 6.10.98 [Ref:3]:
Sumário: Apresentação da disciplina. Equipa docente. Programa da disciplina e seu enquadramento no plano de estudos. Regime de avaliação. Informação electrónica sobre a disciplina: URL: HTTP://WWW.DI.UMINHO.PTJNO/HTML/MPI.HTML. Bibliografia.

Aula Teórica de 8.10.98 [Ref:6]:
Sumário: Introdução à programação funcional -- sua motivação e antecendentes históricos.

Iniciação à teoria dos tipos de dados. Conceito de função. A função como contrato. Diagramas funcionais. Domínio e codomínio. Igualdade extensional. Composição de funções. Função identidade. Notação com ou sem variáveis.


Aula Teórica de 8.10.98 [Ref:7]:
Sumário: Apresentação da disciplina. Equipa docente. Programa da disciplina e seu enquadramento no plano de estudos. Regime de avaliação . Informação electrónica sobre a disciplina: URL: HTTP://WWW.DI.UMINHO.PTJNO/HTML/MPI.HTML. Bibliografia.

Aula Teórica de 12.10.98 [Ref:1]:
Sumário: Introdução à programação funcional -- sua motivação e antecendentes históricos.

Iniciação à teoria dos tipos de dados. Conceito de função. A função como contrato. Diagramas funcionais. Domínio e codomínio. Composição de funções. Função identidade. Notação com ou sem variáveis.


Aula Teórica de 13.10.98 [Ref:3]:
Sumário: Iniciação à teoria dos tipos de dados (cont.). Associatividade da composição. Polimorfismo da identidade. Funções constantes. Polimorfismo de uma função constante.

Expectro da preservação da informação: funções injectivas, sobrejectivas e bijectivas. Noções de abstracção e de isomorfismo entre domínios de dados.


Aula Teórica de 15.10.98 [Ref:6]:
Sumário: Iniciação à teoria dos tipos de dados (cont.). Elaboração estrutural do domínio e/ou codomínio de uma função. Construções básicas da teoria de conjuntos usadas na estruturação dos tipos de dados:

O produto A ×Bstruct»), suas projecções e a construção <f,g>. O coproduto A + Bunion»), suas injecções e a construção [f,g].

Propriedades de cancelamento-× e cancelamento-+. Lei da troca.


Aula Teórica de 15.10.98 [Ref:7]:
Sumário: Iniciação à teoria dos tipos de dados (cont.). Associatividade da composição. Polimorfismo da identidade. Funções constantes. Polimorfismo de uma função constante.

Expectro da preservação da informação: funções injectivas, sobrejectivas e bijectivas. Noções de abstracção e de isomorfismo entre domínios de dados.

Construções básicas da teoria de conjuntos usadas na estruturação dos tipos de dados:

O produto A ×Bstruct»), suas projecções e a construção <f,g>. Propriedades de cancelamento do produto. O coproduto A + B: analogia com («union»).


Aula Teórica de 19.10.98 [Ref:1]:
Sumário: As estruturas A + B e A ×B (cont.). As injecções em A + B e a construção [f,g].

Propriedades de cancelamento-× e cancelamento-+. Lei da troca.

As construções f ×g e f+g. Propriedade da absorção-×.


Aula Teórica de 20.10.98 [Ref:3]:
Sumário: As estruturas A ×B e A + B (cont.). As construções f ×g e f+g. Propriedades de absorção e suas derivadas. Propriedades de fusão e de reflexão.

Aula Teórica de 22.10.98 [Ref:6]:
Sumário: As estruturas A ×B e A + B (cont.): Propriedades functoriais. Predicados e guardas. Condicional de McCarthy.

Tipos elementares genéricos: 0 (Void), 1 (()), 2 (Bool) e Nat. O conceito de «apontador» 1 + A.


Aula Teórica de 22.10.98 [Ref:7]:
Sumário: As estruturas A ×B e A + B (cont.): Propriedades de absorção e suas derivadas. Propriedades de fusão e de reflexão.

Aula Teórica de 26.10.98 [Ref:1]:
Sumário: As estruturas A ×B e A + B (cont.): Propriedades functoriais. Predicados e guardas. Condicional de McCarthy.

Aula Teórica de 27.10.98 [Ref:3]:
Sumário: As estruturas A ×B e A + B (conclusão): Produtos e coprodutos n-ários ( n>=0). As funções ! : A ->1 e ? : 0 ->A.

Introdução aos tipos de dados recursivos: uma analogia com a programação imperativa.


Aula Teórica de 29.10.98 [Ref:6]:
Sumário: Sessão de apoio ao trabalho laboratorial em curso.

Aula Teórica de 29.10.98 [Ref:7]:
Sumário: Sessão de apoio ao trabalho laboratorial em curso.

Aula Teórica de 2.11.98 [Ref:1]:
Sumário: Introdução aos tipos de dados recursivos: uma analogia com a programação imperativa.

Aula Teórica de 3.11.98 [Ref:3]:
Sumário: Introdução aos tipos de dados recursivos (cont.): Declaração de tipos de dados em HASKELL . Sua relação com o coproduto. Tipos enumerados. Tipos de dados recursivos.

Aula Teórica de 5.11.98 [Ref:6]:
Sumário: Introdução aos tipos de dados recursivos (cont.): apresentação dos conceitos de catamorfismo e anamorfismo usando como tipo de dados exemplo listas de inteiros - data X = Nil | Cons(Int,X).

Aula Teórica de 5.11.98 [Ref:7]:
Sumário: Introdução aos tipos de dados recursivos (cont.): Declaração de tipos de dados em HASKELL . Sua relação com o coproduto. Tipos enumerados. Tipos de dados recursivos.

Aula Teórica de 9.11.98 [Ref:1]:
Sumário: Introdução aos tipos de dados recursivos (cont.): apresentação dos conceitos de catamorfismo e anamorfismo usando como tipo de dados exemplo listas de inteiros - data X = Nil | Cons(Int,X).

Aula Teórica de 10.11.98 [Ref:3]:
Sumário: Introdução aos tipos de dados recursivos (cont.): apresentação do conceito de hilomorfismo usando como tipo de dados exemplo listas de inteiros - data X = Nil | Cons(Int,X).

Aula Teórica de 12.11.98 [Ref:6]:
Sumário: Introdução aos tipos de dados recursivos (cont.): O factorial como hilomorfismo de padrão X.

Aula Teórica de 12.11.98 [Ref:7]:
Sumário: Introdução aos tipos de dados recursivos (cont.): apresentação do conceito de hilomorfismo usando como tipo de dados exemplo listas de inteiros - data X = Nil | Cons(Int,X).

Aula Teórica de 16.11.98 [Ref:1]:
Sumário: Introdução aos tipos de dados recursivos (cont.): O factorial como hilomorfismo de padrão X, para data X = Nil | Cons(Int,X).

Noção de estrutura de dados virtual e sua relação com a avaliação retradada.


Aula Teórica de 17.11.98 [Ref:3]:
Sumário: Introdução aos tipos de dados recursivos (cont.): Apresentação do algoritmo de ordenação por inserção simples como catamorfismo da estrutura data X = Nil | Cons(Int,X).

Aula Teórica de 19.11.98 [Ref:6]:
Sumário: Introdução à parametrização de tipos de dados recursivos e ao polimorfismo, tomando como exemplo data List a = Nil | Cons(a, List a).

Aula Teórica de 19.11.98 [Ref:7]:
Sumário: Apresentação do algoritmo de ordenação por inserção simples como catamorfismo da estrutura data X = Nil | Cons(Int,X).

Aula Teórica de 23.11.98 [Ref:1]:
Sumário: Introdução à parametrização de tipos de dados recursivos e ao polimorfismo, tomando como exemplo data List a = Nil | Cons(a, List a).

Definição de mapList: (a -> b) -> X a -> X b como um catamorfismo «célebre».


Aula Teórica de 24.11.98 [Ref:3]:
Sumário: Introdução à parametrização e ao polimorfismo (cont.): Cálculo de mapList: (a -> b) -> X a -> X b como um catamorfismo «célebre».

Aula Teórica de 26.11.98 [Ref:6]:
Sumário: Generalização: noção de tipo base de uma definição recursiva e sua aplicação à catalogação de tipos de dados recursivos.

Exemplo: catalogação de
(a) árvores binárias simples, ou listas bi-lineares: data BTree a = Empty | Node(a, (BTree a, BTree a));
(b) árvores binárias com folhas: LTree a = Leaf a | Split (LTree a, LTree a);
(c) árvores binárias com nós e folhas: LBTree a c = Unit a | Node(a, (LBTree a c, LBTree a c));


Aula Teórica de 26.11.98 [Ref:7]:
Sumário: Conclusão da aula anterior.

Aula Teórica de 30.11.98 [Ref:1]:
Sumário: Generalização: noção de tipo base de uma definição recursiva e sua aplicação à catalogação de tipos de dados recursivos.

Exemplo: catalogação de
(a) árvores binárias simples, ou listas bi-lineares: data BTree a = Empty | Node(a, (BTree a, BTree a));
(b) árvores binárias com folhas: LTree a = Leaf a | Split (LTree a, LTree a);
(c) árvores binárias com nós e folhas: LBTree a c = Unit a | Node(a, (LBTree a c, LBTree a c));


Aula Teórica de 3.12.98 [Ref:6]:
Sumário: Estudo da triologia cata-ana-hilo associada ao tipo BTree. Exemplos: os catamorfismos traces e map.

Aula Teórica de 3.12.98 [Ref:7]:
Sumário: Estudo da triologia cata-ana-hilo associada ao tipo BTree. Exemplos: os catamorfismos traces e map, e o hilomorfismo qSort ('quick sort').

Aula Teórica de 7.12.98 [Ref:1]:
Sumário: Estudo da triologia cata-ana-hilo associada ao tipo LTree. Exemplos: o catamorfismo flatten e os hilomorfismos dfac (duplo factorial ) e fib (série de Fibonacci ).

Aula Teórica de 10.12.98 [Ref:6]:
Sumário: Triologia cata-ana-hilo associada ao tipo BTree (conclusão): Exemplos: o catamorfismo map e o hilomorfismo qSort ('quick sort').

Aula Teórica de 10.12.98 [Ref:7]:
Sumário: Triologia cata-ana-hilo associada ao tipo LTree (conclusão): Exemplos: o hilomorfismo mSort ('merge sort') e o catamorfismo map.

Estudo da triologia cata-ana-hilo associada ao tipo FTree. O catamorfismo bmap.


Aula Teórica de 14.12.98 [Ref:1]:
Sumário: Noção de functor e de bi-functor, e sua realização em HASKELL , sob a forma das classes Functor e BiFunctor. Propriedades functoriais.

Aula Teórica de 15.12.98 [Ref:3]:
Sumário: Estudo da triologia cata-ana-hilo associada ao tipo LTree. Exemplos: os catamorfismos flatten e map; os hilomorfismos dfac (duplo factorial ), fib (série de Fibonacci ).

Aula Teórica de 17.12.98 [Ref:6]:
Sumário: Triologia cata-ana-hilo associada ao tipo LTree (conclusão): mSort ('merge sort').

Triologia cata-ana-hilo associada ao tipo FTree.

Noção de functor e de bi-functor, e sua realização em HASKELL , sob a forma das classes Functor e BiFunctor. Propriedades functoriais.


Aula Teórica de 17.12.98 [Ref:7]:
Sumário: Tipos de dados são functores : Formulação genérica da triologia cata-ana-hilo para tipos de dados recursivos da forma T a1...an =B(a1,...,an,Ta1...an) .

Aula Teórica de 4.01.99 [Ref:1]:
Sumário: Tipos de dados são functores (cont.): Noção de functor tipo (map) e sua formulação genérica como catamorfismo de um tipo de dados recursivo da forma T a1...an =B(a1,...,an,Ta1...an) .

Aula Teórica de 5.01.99 [Ref:3]:
Sumário: Tipos de dados são functores (cont.): Noção de functor tipo (map) e sua formulação genérica como catamorfismo de um tipo de dados recursivo da forma T a1...an =B(a1,...,an,Ta1...an) .

Aula Teórica de 7.01.99 [Ref:6]:
Sumário: Tipos de dados são functores (conclusão): Noção de functor polinomial. Introdução ao estudo da construção exponencial BA. Noção de espaço funcional.

Aula Teórica de 7.01.99 [Ref:7]:
Sumário: Tipos de dados são functores (conclusão): Noção de functor polinomial. Introdução ao estudo da construção exponencial BA. Noção de espaço funcional.

Aula Teórica de 11.01.99 [Ref:1]:
Sumário: Estudo da construção exponencial BA (conclusão): Noção de função transposta . O operador implícito ap. Os isomorfismos curry e uncurry e sua importância na programação funcional.

Aula Teórica de 12.01.99 [Ref:3]:
Sumário: Estudo da construção exponencial BA (conclusão): Noção de função transposta . O operador implícito ap. Os isomorfismos curry e uncurry e sua importância na programação funcional.

Aula Teórica de 14.01.99 [Ref:6]:
Sumário: Inferência de tipos polimórficos: apresentação ao Algorítmo W de Hindley-Damas-Milner.

Considerações finais. Encerramento da disciplina.


Aula Teórica de 14.01.99 [Ref:7]:
Sumário: Inferência de tipos polimórficos: apresentação ao Algorítmo W de Hindley-Damas-Milner.

Considerações finais. Encerramento da disciplina.


Voltar à página principal de MP-I .
Outras disciplinas leccionadas pelo DIUM

3/30/1999
Jose Nuno Oliveira