|
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
BRATKO, L. Prolog programming for artificial intelligence. 4th ed. Harlow; New York: Addison-Wesley, 2012.
RUSSELL, S.; NORVIG, P. Inteligência artificial. Rio de Janeiro: Campus, 2013.
STERLING, L.; SHAPIRO, E. The art of PROLOG: advanced programming techniques. 2nd ed. Cambridge: MIT Press, 1994.
BIBLIOGRAFIA COMPLEMENTAR
ARARIBÓIA, G. Inteligência artificial: um curso prático. Rio de Janeiro: LTC, 1988.
LE, Tu Van. Techniques of prolog programming with implementation of logical negation and quantified goals. New York: J. Wiley, 1993.
MARRIOTT, K.; STUCKEY, P. J. Programming with constraints: an introduction. Cambridge: MIT Press, 1998.
O'KEEFE, R. A. The Craft of Prolog 2. ed. MIT Press, 1994.
Winston, P. H. Artificial intelligence. 3rd ed. Reading: Addison-Wesley, 1992.
aprovação
Prof. Dr. Augusto Wohlgemuth Fleury Veloso da Silveira Coordenador do Curso de Graduação em Engenharia Elétrica |
Prof. Dr. Sérgio Ferreira de Paula Silva Diretor da Faculdade de Engenharia Elétrica |
| Documento assinado eletronicamente por Augusto Wohlgemuth Fleury Veloso da Silveira, Coordenador(a), em 03/05/2023, às 15:28, 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 04/05/2023, às 15:22, 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 4460839 e o código CRC 3DA8BC48. |
Referência: Processo nº 23117.080333/2022-16 | SEI nº 4460839 |