Métodos de Programação III
Matemática e Ciências da Computação

Engenharia de Sistemas e Informática

2000/2001
Equipa Docente
Estrutura e Funcionamento
Objectivos
Avaliação
Programa
Sumários
Trabalhos Práticos
Bibliografia

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


Pagina mantida por:

João Saraiva

jas@di.uminho.pt
Page produced by a Tool generated by LRC from the XML document pagina_mpiii.xml

Last Change on Tue Oct 2 16:11:04 2001