|
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. STERLING, L., SHAPIRO, E. The Art of PROLOG: Advanced Programming Techniques. 2.ed. MIT Press, 1994.
2. BRATKO, L. Prolog Programming for Artificial Intelligence. Addsion-Wesley, 4a edição, 2012.
3. RUSSEL, S.; NORVIG, P. Inteligência Artificial, 3a Edição, Editora Elsevier Brasil, 2014.
BIBLIOGRAFIA COMPLEMENTAR
1. T. Van Le. Techniques of Prolog Programming with Implementation of Logical Negation and Quantified Goals. John Wiley & Sons, 1993.
2. O’KEEF, The Craft of Prolog. 2.ed. MIT Press, 1994.
3. ARARIBÓIA, G. Inteligência Artificial- Um Curso Prático. Rio de Janeiro : LTC, 1988.
4. MARRIOTT, K.; STUCKEY, P. J. Programming with Constraints: an Introduction, MIT Press, 1999
5. Winston, Patrick Henry. Artificial Intelligence, 3rd ed. Addison-Wesley, 1992.
aprovação
Prof. Dr. Antônio Cláudio Paschoarelli Veiga Coordenador do Curso de Graduação em Engenharia Eletrônica e de Telecomunicações |
Prof. Dr. Sérgio Ferreira de Paula Silva Diretor da Faculdade de Engenharia Elétrica |
Documento assinado eletronicamente por Antonio Claudio Paschoarelli Veiga, Coordenador(a), em 22/03/2019, às 09:18, 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 25/03/2019, às 07:06, 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 1103251 e o código CRC 1024A2E2. |
Referência: Processo nº 23117.015883/2019-69 | SEI nº 1103251 |