|
UNIVERSIDADE FEDERAL DE UBERLÂNDIA |
|
Ficha de Componente Curricular
CÓDIGO:
|
COMPONENTE CURRICULAR: PROGRAMAÇÃO LÓGICA E INTELIGÊNCIA ARTIFICIAL |
|
UNIDADE ACADÊMICA OFERTANTE: FACULDADE DE ENGENHARIA ELÉTRICA |
SIGLA: FEELT |
|
CH TOTAL TEÓRICA: 30 horas |
CH TOTAL PRÁTICA: 15 horas |
CH TOTAL: 45 horas |
OBJETIVOS
• Compreender as vantagens e inconveniências do paradigma lógico relativamente ao demais paradigmas de programação.
• Reconhecer as categorias de problemas em que a programação em lógica é particularmente adequada.
• Representar problemas de forma declarativa, utilizando unificação, recursividade, determinismo e não-determinismo na resolução de problemas.
• Projetar e implementar programas e aplicativos, (seja em desktops, nuvem ou dispositivos móveis) utilizando o paradigma lógico, bem com suas principais linguagens, diferenciações e aplicabilidade.
• Modelar problemas e implementar aplicativos computacionais, utilizando-se das diversas técnicas de inteligência artificial apresentadas.
Ementa
O paradigma lógico (declarativo), histórico da programação lógica, linguagens do paradigma lógico (Prolog, Mercury), cláusulas de Horn, unificação e resolução, fatos e regras, recursividade, controle de fluxo (determinismo, não-determinismo, backtracking), estrutura e operadores, predicados de 2a ordem, programação lógica baseada em restrições. Conceitos básicos e fundamentais de Inteligência Artificial e programação simbólica; busca; casamento de padrões (pattern matching). Aplicações da Inteligência Artificial na engenharia de computação. Frameworks de Inteligência Artificial na nuvem.
PROGRAMA
1. O que é Programação Lógica
a. Histórico (cronologia), Prolog e Mercury
b. Linguagens Declarativas x Linguagens Imperativas, o porquê da programação lógica
2. Fundamentos de Programação Lógica
a. Cláusulas de Horn
b. Algoritmo de unificação e resolução SLD
3. Fatos e Regras, sintaxe do Prolog
a. Termos, fatos, regras e questões
4. Programação declarativa e procedimental em Prolog
a. Listas: definição, representação e unificação de listas, operações básicas recursivas com listas, unificação de listas, conjuntos como lista, ordenação. Estrutura de dados e banco de dados
5. Estilo e técnicas de Programação em Lógica
a. Depuração de programas e passagem de parâmetros por unificação
6. Recursividade
a. Recursividade em exemplos, recursividade de cauda
b. Grafos
7. Estrutura e Gestão de Controle
a. Estrutura de Controle e predicados para controle da resolução
b. A negação em Programação Lógica
c. Repetições, laços e manipulação de arquivos
8. Novos Operadores: Definição e declaração de operadores
9. Criação e Reconstrução de Termos
a. Construção e Acesso a Componentes de Estruturas, Classificação de Termos
10. Programação lógica por restrições
a. Fundamentos de programação por restrições
b. Modelagem e resolução através de um solver
11. Fundamentos e conceitos de Inteligência Artificial, histórico, aplicações atuais
12. Busca exaustiva e buscas heurísticas
13. Processamento de linguagens naturais: tagging, sintaxe e representação do conhecimento
14. Desenvolvimento de um compilador: tokenizer, parser e geração de código
15. Sistemas inteligentes baseados em conhecimento: representação do conhecimento baseada em regras, técnicas de inferência, resolução de conflitos, tratamentos de incertezas, redes bayesianas.
16. Frameworks de Inteligência Artificial na nuvem: conceitos atuais e desenvolvimento de aplicação.
BIBLIOGRAFIA BÁSICA
1. BRATKO, L. Prolog programming for artificial intelligence. 4th ed. Harlow; New York: Addison-Wesley, 2012.
2. RUSSELL, S.; NORVIG, P. Inteligência artificial. Rio de Janeiro: Campus, 2013.
3. STERLING, L.; SHAPIRO, E. The art of PROLOG: advanced programming techniques. 2nd ed. Cambridge: MIT Press, 1994.
BIBLIOGRAFIA COMPLEMENTAR
1. ARARIBÓIA, G. Inteligência artificial: um curso prático. Rio de Janeiro: LTC, 1988.
2. LE, Tu Van. Techniques of prolog programming with implementation of logical negation and quantified goals. New York: J. Wiley, 1993.
3. MARRIOTT, K.; STUCKEY, P. J. Programming with constraints: an introduction. Cambridge: MIT Press, 1998.
4. O'KEEFE, R. A. The Craft of Prolog 2. ed. MIT Press, 1994.
5. Winston, P. H. Artificial intelligence. 3rd ed. Reading: Addison-Wesley, 1992.
aprovação
Prof. Dr. Carlos Eduardo Tavares Coordenador do Curso de Graduação em Eng. Elétrica |
Prof. Dr. Sérgio Ferreira de Paula Silva Diretor da Faculdade de Eng. Elétrica |
| Documento assinado eletronicamente por Carlos Eduardo Tavares, Coordenador(a), em 04/06/2019, às 13:56, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015. |
| Documento assinado eletronicamente por Sergio Ferreira de Paula Silva, Diretor(a), em 05/06/2019, às 15:59, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015. |
| A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 1174725 e o código CRC 31DB8B7D. |
Referência: Processo nº 23117.025407/2019-56 | SEI nº 1174725 |