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

 


logotipo

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.


logotipo

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.


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 1103251 e o código CRC 1024A2E2.




Referência: Processo nº 23117.015883/2019-69 SEI nº 1103251