
Programação em Lógica com Restrições
Código
8155
Unidade Orgânica
Faculdade de Ciências e Tecnologia
Departamento
Departamento de Informática
Créditos
6.0
Professor responsável
Francisco de Moura e Castro Ascensão de Azevedo, Pedro Manuel Corrêa Calvente Barahona
Horas semanais
5
Total de horas
68
Língua de ensino
Português
Objectivos
- Conceito de programação declarativa e de especificação executável de problemas
- Entender o uso de métodos de derivação em lógica como forma de programação.
- Familiarização com o uso de relações, unificação, de recursividade e não determinismo na resolução de problemas.
- Noções básicas de propagação de restrições para redução do espaço de pesquisa
- Desenvolvimento de programas na linguagem Prolog
- Desenvolvimento de programas de satisfação de restrições
- Capacidade de raciocínio abstracto e formal
- Cultivar o rigor científico
- Capacidade de modelação abstracta
Pré-requisitos
Os alunos deverão saber programar numa linguagem imperativa, e ter conhecimentos de base em lógica proposicional e de 1ª ordem. Deverão ainda ter conhecimentos básicos de pesquisa, sua complexidade e métodos para a tornar mais eficiente.
Conteúdo
| Introdução e motivação para a disciplina | ||||||
| Conceitos básicos de Programação em Lógica | ||||||
| Linguagem Prolog e seus construtores | ||||||
| Técnicas de Programação em Lógica | ||||||
| Programação com uso de não-determinismo | ||||||
| Estruturas incompletas | ||||||
| Meta-interpretadores | ||||||
| Análise sintática e DCGs | ||||||
| Técnicas de Programação em Lógica com restrições | ||||||
| Generalização de unificação (Boleanos, Racionais) | ||||||
| Modelação de problemas através de restrições sobre domínios finitos | ||||||
| Pesquisa e Propagação de Restrições |
Bibliografia
Método de ensino
Nas aulas teóricas são lecionados os conceitos básicos da programação em lógica com restrições, mostrando a sua fundamentação na lógica de predicados de 1ª ordem. A declaratividade do paradigma é ilustrada com pequenos exemplos, sendo estudadas as extensões com restrições sobre domínios finitos.
Nas aulas práticas são desenvolvidos programas com alguma complexidade para familiarizar os alunos com aspectos práticos de modelação de problemas, qualidade do código e eficiência de execução.
Método de avaliação
A avaliação é feita por trabalhos, testes e eventual exame oral.
A avaliação da disciplina é composta por 2 trabalhos práticos de grupo (que podem dar frequência à cadeira), 2 testes escritos individuais, e um exame oral individual (eventual).
- Trabalhos práticos
Cada grupo de, no máximo, 2 alunos deve realizar 2 trabalhos:
-
Resolução em Prolog de um problema dado;
-
Resolução em Prolog com Restrições de um outro problema dado.
A elaboração dos trabalhos será feita fora do horário das aulas.
A cada trabalho de cada grupo será atribuída uma nota única inteira de 0 a 20 valores (P1 e P2, para os 2 trabalhos).
Para cada aluno será atribuída uma nota individual da componente prática (ver Exame oral e Nota final).
- Frequência
Um aluno terá frequência à cadeira (sendo também admitido a possível exame de recurso) se e só se P1 >= 6 e P2 >= 6 e (P1+P2)/2 >= 7.5 (média simples, ao contrário do cálculo para a nota final.)
A atribuição de nota de frequência por edições anteriores da disciplina será vista caso a caso - para tal, deverá ser contactado o regente até ao final de setembro de 2012.
- Testes
Haverá 2 testes escritos individuais sem consulta com notas inteiras T1 e T2. A aprovação à disciplina exige uma nota mínima de 5 valores (numa escala de 0 a 20 valores) em cada teste, e uma média ponderada (ver pesos abaixo) arredondada às unidades de, pelo menos, 9.
- Exame Oral
Em função das notas do trabalho, dos testes (e/ou do exame de recurso), e do conhecimento dos docentes, alguns dos alunos serão chamados a fazer um exame oral individual. Para a escolha dos alunos que terão que fazer o exame oral serão tidos em conta, entre outros critérios, a diferença entre a nota teórica do aluno e as notas dos trabalhos do grupo, e a diferença entre as notas teóricas dos alunos que fazem parte do grupo, e até mesmo alguma aleatoriedade.
Caso um aluno tenha sido chamado a fazer exame oral, a nota individual da componente prática resulta da conjugação da nota do grupo com a informação recolhida desse exame. Um aluno chamado a fazer exame oral e que não compareça à prova tem zero na nota individual da componente prática.
- Nota Final
A nota final (NF) é a média ponderada das componentes prática e teórica, da seguinte forma:
NF = (0,4*T1 + 0,2*T2) + (0,25*P1 + 0,15*P2)
A parte teórica vale assim 60% da nota final, enquanto a prática vale 40% (note-se que a componente prática pode ser alterada por exame oral.)
Em caso de ida a exame escrito (recurso ou especial), a sua nota (unidades) corresponde à parte teórica (podendo ser feita melhoria).