UNIVERSIDADE FEDERAL DE UBERLÂNDIA
Coordenação do Curso de Graduação em Engenharia de Computação

Av. João Naves de Ávila, 2121 - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902
Telefone: -
  

Timbre

Plano de Ensino

IDENTIFICAÇÃO

Componente Curricular:

PROGRAMAÇÃO LÓGICA E INTELIGÊNCIA ARTIFICIAL

Unidade Ofertante:

FEELT

Código:

FEELT31407

Período/Série:

4o

Turma:

C

Carga Horária:

Natureza:

Teórica:

30

Prática:

15

Total:

45

Obrigatória:

(x)

Optativa:

( )

Professor(A):

Marcelo Rodrigues de Sousa

Ano/Semestre:

2020 - 2a etapa AARE

Observações:

 

 

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.

JUSTIFICATIVA

Programação lógica é um paradigma de programação baseado no cálculo de predicados, através da construção de relações entre objetos, sendo a computação realizada através de um mecanismo de inferência lógico. Trata-se de um dos quatro paradigmas de computação que devem ser aprendidos por todo alunos do curso de Engenharia de Computação.

OBJETIVO

Objetivo Geral:

Conhecimento do paradigma lógico de programação e algoritmos de inteligência artificial clássica.

Objetivos Específicos:

• 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.(O programa, organizado em unidades e sub-unidades ou eixos temáticos, deverá explicitar os conteúdos propostos de modo a se conhecer toda a matéria a ser desenvolvida na disciplina.)

PROGRAMA

  1. O que é Programação Lógica
  2. Histórico (cronologia), Prolog e Mercury
  3. Linguagens Declarativas x Linguagens Imperativas, o porquê da programação lógica
  4. Fundamentos de Programação Lógica
  5. Cláusulas de Horn
  6. Algoritmo de unificação e resolução SLD
  7. Fatos e Regras, sintaxe do Prolog
  8. Termos, fatos, regras e questões
  9.  Programação declarativa e procedimental em Prolog
  10. 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
  11. Estilo e técnicas de Programação em Lógica
  12. Depuração de programas e passagem de parâmetros por unificação
  13. Recursividade
  14. Recursividade em exemplos, recursividade de cauda
  15. Grafos
  16. Estrutura e Gestão de Controle
  17. Estrutura de Controle e predicados para controle da resolução
  18. A negação em Programação Lógica
  19. Repetições, laços e manipulação de arquivos
  20. Novos Operadores: Definição e declaração de operadores
  21. Criação e Reconstrução de Termos
  22. Construção e Acesso a Componentes de Estruturas, Classificação de Termos
  23. Programação lógica por restrições
  24. Fundamentos de programação por restrições
  25. Modelagem e resolução através de um solver
  26.  Fundamentos e conceitos de Inteligência Artificial, histórico, aplicações atuais
  27.  Busca exaustiva e buscas heurísticas
  28.  Processamento de linguagens naturais: tagging, sintaxe e representação do conhecimento
  29.  Desenvolvimento de um compilador: tokenizer, parser e geração de código
  30.  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.
  31. Frameworks de Inteligência Artificial na nuvem: conceitos atuais e desenvolvimento de aplicação.

METODOLOGIA

O curso será desenvolvido através de atividades exclusivamente assíncronas:

Programa de atividades 

1a semana

  1. O que é Programação Lógica
  2. Histórico (cronologia), Prolog e Mercury
  3. Linguagens Declarativas x Linguagens Imperativas, o porquê da programação lógica
  4. Fundamentos de Programação Lógica
  5. Cláusulas de Horn
  6. Algoritmo de unificação e resolução SLD
  7. Fatos e Regras, sintaxe do Prolog
  8. Termos, fatos, regras e questões

2a semana

  1.  Programação declarativa e procedimental em Prolog
  2. 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
  3. Estilo e técnicas de Programação em Lógica
  4. Depuração de programas e passagem de parâmetros por unificação

3a semana

  1. Recursividade
  2. Recursividade em exemplos, recursividade de cauda

4a semana

  1. Grafos
  2. Estrutura e Gestão de Controle
  3. Estrutura de Controle e predicados para controle da resolução
  4. A negação em Programação Lógica
  5. Repetições, laços e manipulação de arquivos

5a semana

  1. Novos Operadores: Definição e declaração de operadores
  2. Criação e Reconstrução de Termos
  3. Construção e Acesso a Componentes de Estruturas, Classificação de Termos

6a semana

  1. Programação lógica por restrições
  2. Fundamentos de programação por restrições
  3. Modelagem e resolução através de um solver

7a semana

  1.  Fundamentos e conceitos de Inteligência Artificial, histórico, aplicações atuais
  2.  Busca exaustiva e buscas heurísticas
  3.  Processamento de linguagens naturais: tagging, sintaxe e representação do conhecimento

8a semana

  1.  Desenvolvimento de um compilador: tokenizer, parser e geração de código
  2.  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.

9a semana

  1. Frameworks de Inteligência Artificial na nuvem: conceitos atuais e desenvolvimento de aplicação.

AVALIAÇÃO

Sistema de Avaliação

BIBLIOGRAFIA

Básica

  1. BRATKO, L. Prolog programming for artificial intelligence. 4th ed. New York: Addsion-Wesley, 2012.
  2. RUSSELL, Stuart J.; NORVIG, P Artificial intelligence: a modern approach. 3rd ed. Noida: Dorling Kindersley, c2014.
  3. STERLING, L.; SHAPIRO, E. The art of PROLOG: advanced programming techniques. 2.ed. MIT   Press, 1994.

Complementar

  1. ARARIBÓIA, G. Inteligência artificial: um curso prático. Rio de Janeiro: LTC, 1988.
  2. MARRIOTT, K.; STUCKEY, P. J. Programming with constraints: an introduction. Cambridge: MIT Press, 1998.
  3. O’KEEF, The craft of prolog. 2.ed. MIT Press, 1994.
  4. LE, Tu. Van. Techniques of prolog programming with implementation of logical negation and quantified goals. New York: John Wiley & Sons, 1993.
  5. WINSTON, Patrick Henry. Inteligencia artificial. Rio de Janeiro: LTC, 1988.

 

APROVAÇÃO

Aprovado em reunião do Colegiado realizada em: ____/____/______

Coordenação do Curso de Graduação: _________________________

 


logotipo

Documento assinado eletronicamente por Marcelo Rodrigues de Sousa, Professor(a) do Magistério Superior, em 29/09/2020, às 14:19, 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 2289081 e o código CRC 5F5E7DFB.




Referência: Processo nº 23117.056272/2020-12 SEI nº 2289081