|
Novidades e Avisos
| (02-10-01) |
Notas do Exame (Setembro):
NOTAS. |
| (03-09-01) |
Enúnciados dos Exame de Janeiro:
1ª Chamada
,
2ª Chamada |
| (20-02-01) |
Notas do Exame e Trabalhos Práticos:
NOTAS. |
| (19-01-01) |
Apresentação dos Trabalhos Práticos:
Data:
5 e 6 de Fevereiro
Os grupos devem inscrever-se na D. Rosa (DI)
A Apresentação dos trabalhos será feita em frente ao computador (a correr linux).
Todos os elementos do grupo têm de estar presentes
Os grupos devem trazer os trabalhos em disquete
(Cópias do exame da 1ª Chamada estão disponiveis na D. Rosa.) |
| (09-01-01) |
Entrega do Trabalho Prático nº 2:
A Apresentação do trabalho será feita em frente ao computador.
Data:
Fim de Janeiro (dia a anunciar brevemente)
Não é necessário enviar o trabalho por email |
| (15-12-00) |
Ficha Teórico-Prática nº 10:
ficha10.lhs. |
| (14-12-00) |
Aula Teórica: BNF em HASKELL
listas.ps. |
| (11-12-00) |
Trabalho Prático nº2:
tp2.lhs. |
| (09-12-00) |
Ficha Teórico-Prática nº 9:
ficha9.lhs. |
| (06-12-00) |
Trabalho Práticos Recebidos:
TPRec.html |
| (04-12-00) |
Ficha Teórico-Prática nº 8:
ficha8.lhs. |
| (24-11-00) |
Ficha Teórico-Prática nº 7:
ficha7.tex. |
| (09-11-00) |
Ficha Teórico-Prática nº 6:
ficha6.lhs. |
| (03-11-00) |
Ficha Teórico-Prática nº 5:
ficha5.lhs. |
| (02-11-00) |
Trabalho Prático nº1:
tp1.lhs. |
| (30-10-00) |
Ficha Teórico-Prática nº 4:
ficha4.lhs. |
| (19-10-00) |
Ficha Teórico-Prática nº 3:
ficha3.lhs.
Módulo de Expressões Regulares em C:
RegExp.c
(Isto é, Exp. Reg. em
120 linhas de código C
, em vez das
10 de Haskell
)
|
| (13-10-00) |
Ficha Teórico-Prática nº 2:
ficha2.lhs. |
| (06-10-00) |
Ficha Teórico-Prática nº 1:
ficha1.lhs. |
| (28-09-00) |
A página da disciplina está no "ar". |
Capitulo 1 Equipa Docente
Capitulo 2 Estrutura e Funcionamento
Exposição da matéria fundamental -- motivação, conceitos, definições, métodos e justificações -- a nível das aulas teóricas. Resolução de exercícios de consolidação, a nível das aulas teórico-práticas, no quadro e no computador. Realização, no computador, extra aulas de trabalhos concretos de aplicação, recorrendo à linguagem Haskell.
Capitulo 3 Objectivos
É objectivo deste curso levar os alunos a:
- Aprofundar e interiorizar os conceitos fundamentais e os métodos de programação em larga escala e a reutilização de programas, dando especial relevo ao
paradigma funcional.
- Aprender o conceito de
Autómato Finito
e a teoria associada, bem como a sua aplicação à simulação de
Sistemas de Controlo
e à especificação e reconhecimento de
Linguagens Regulares.
- Compreender os conceitos de
cálculo parcial ou especialização de programas
- Aprender o conceito de gramática e como descrever estruturas de linguagens através de gramáticas.
- Compreender o conceito: embeber linguagens de dominio especifico (eg, gramáticas) numa linguagem de dominio geral (eg, Haskell).
- Reforçar a aptidão dos alunos para desenvolver programas correctos e eficientes (quer no paradigma funcional quer em qualquer outro paradigma de programação).
Capitulo 4 Avaliação
A Avaliação tem uma componente teórica e uma componente prática, ambas obrigatórias.
De acordo com o regulamento actualmente em vigor na UM, a
nota teórica
será obtida através da realização de
1 prova individual escrita
. Essa prova tem as instâncias a seguir indicadas (um aluno só poderá fazer melhoria na época de recurso):
- Exame, realizado na 1ª chamada da época normal, no fim do 1º semestre
- Exame, realizado na 2ª chamada da época normal, no fim do 1º semestre
- Exame, realizado na época de recurso
A
componente prática
seré formada por 2 trabalhos para realização em grupo, sendo entregues acompanhados de um relatório sucinto e discutidos em frente ao computador: A nota prática será a média aritmética das classificações obtidas nos 2 trabalhos avaliados. A nota final será determinada de acordo com a seguinte fórmula:
NotaFinal = NotaTeorica * 0.50 + (NotaPratica - Delta / 2) * 0.50
sendo
Delta = | NT - NP |
Exige-se
8 valores
como nota mínima em cada parte.
Capitulo 5 Programa
- Programação baseada em Transições de Estado:
- Noções básicas
- Autómatos Finitos
- Autómatos não-deterministas
- Autómatos deterministas
- Cálculo Parcial aplicado a Autómatos Deterministas
- Conversão de ANDs em ADs
- Conversão de AFND am AFD através de cálculo parcial
- Autómatos reactivos
- Programação baseada em Gramáticas:
- Conceito e exemplos
- Estrutura concreta e abstracta das linguagens formais
- Desenvolvimento de
Parsers baseados em Combinadores
para Linguagens Formais.
- Programação baseada em multiplas travessias
- Conceitos e exemplos
- Programas Circulares
- Catamorfismos
- Deflorestação
- Programação com atributos
- "profiling" de programas
Capitulo 6 Sumários
Capitulo 7 Trabalhos Práticos
Bibliografia
- João Saraiva
Language Processing (with a Functional Flavour)
DI/UM
1ª
Edicao
2000
- L.S. Barbosa
Elementos da Teoria dos Autómatos
DI/UM
[PS]
1996
- João Saraiva
Especificação e Processamento de Linguagens
DI/UM
1ª
Edicao
[PS]
[HTML]
1995
- R. Floid and R. Beigel
The Language of Machines: An Introduction to Computability and Formal Languages
Computer Science Press
1994
- S.P.Jones, et al
Report on the Programming Language Haskell 98
[HTML]
[PS]
[PDF]
1999
- R. Bird
Introduction to Functional Programming using Haskell
Prentice Hall
1998
- S. Thompson
Haskell - The Craft of Functional Programming
Addison-Wesley
2ª
Edicao
1999
- N. Jones, C. Gomard and P. Sestoff
Partial Evaluation and Automatic Program Generation
Prentice Hall
1993
- E. Horowitz and S. Sahni
Fundamentos de Estruturas de Dados
Editora Campus
1984
- J. Carroll and D. Long
Theory of Finite Automata
Prentice Hall
1989
|