UNIVERSIDADE FEDERAL DE UBERLÂNDIA
  

Timbre

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. 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

 


logotipo

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.


logotipo

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.


QRCode Assinatura

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