|
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: -
|
|
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
- O que é Programação Lógica
- Histórico (cronologia), Prolog e Mercury
- Linguagens Declarativas x Linguagens Imperativas, o porquê da programação lógica
- Fundamentos de Programação Lógica
- Cláusulas de Horn
- Algoritmo de unificação e resolução SLD
- Fatos e Regras, sintaxe do Prolog
- Termos, fatos, regras e questões
- Programação declarativa e procedimental em Prolog
- 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
- Estilo e técnicas de Programação em Lógica
- Depuração de programas e passagem de parâmetros por unificação
- Recursividade
- Recursividade em exemplos, recursividade de cauda
- Grafos
- Estrutura e Gestão de Controle
- Estrutura de Controle e predicados para controle da resolução
- A negação em Programação Lógica
- Repetições, laços e manipulação de arquivos
- Novos Operadores: Definição e declaração de operadores
- Criação e Reconstrução de Termos
- Construção e Acesso a Componentes de Estruturas, Classificação de Termos
- Programação lógica por restrições
- Fundamentos de programação por restrições
- Modelagem e resolução através de um solver
- Fundamentos e conceitos de Inteligência Artificial, histórico, aplicações atuais
- Busca exaustiva e buscas heurísticas
- Processamento de linguagens naturais: tagging, sintaxe e representação do conhecimento
- Desenvolvimento de um compilador: tokenizer, parser e geração de código
- 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.
- 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:
- Os alunos deverão estudar os materiais de apoio definidos e indicados. Estes materiais serão apresentados nos mais variados formatos, livros, artigos, vídeos e MOOCs. Cada semana, no total de 9 (nove), contemplará 5 horas de atividades. As aulas ocorrerão de forma assíncrona, através de vídeos de autoria do professor, na plataforma Youtube.
- Os alunos receberão apoio do professor de forma individual, através do aplicativo WhatsApp. Haverá um grupo da disciplina no WhatsApp, caso seja necessário, será utilizado o software Microsoft Teams ou Google Meet para dúvidas de grupos de alunos.
- As atividades práticas ocorrerão através de desenvolvimento de projetos. Esses projetos demandam apenas o uso de computador e software livre.
Programa de atividades
1a semana
- O que é Programação Lógica
- Histórico (cronologia), Prolog e Mercury
- Linguagens Declarativas x Linguagens Imperativas, o porquê da programação lógica
- Fundamentos de Programação Lógica
- Cláusulas de Horn
- Algoritmo de unificação e resolução SLD
- Fatos e Regras, sintaxe do Prolog
- Termos, fatos, regras e questões
2a semana
- Programação declarativa e procedimental em Prolog
- 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
- Estilo e técnicas de Programação em Lógica
- Depuração de programas e passagem de parâmetros por unificação
3a semana
- Recursividade
- Recursividade em exemplos, recursividade de cauda
4a semana
- Grafos
- Estrutura e Gestão de Controle
- Estrutura de Controle e predicados para controle da resolução
- A negação em Programação Lógica
- Repetições, laços e manipulação de arquivos
5a semana
- Novos Operadores: Definição e declaração de operadores
- Criação e Reconstrução de Termos
- Construção e Acesso a Componentes de Estruturas, Classificação de Termos
6a semana
- Programação lógica por restrições
- Fundamentos de programação por restrições
- Modelagem e resolução através de um solver
7a semana
- Fundamentos e conceitos de Inteligência Artificial, histórico, aplicações atuais
- Busca exaustiva e buscas heurísticas
- Processamento de linguagens naturais: tagging, sintaxe e representação do conhecimento
8a semana
- Desenvolvimento de um compilador: tokenizer, parser e geração de código
- 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
- Frameworks de Inteligência Artificial na nuvem: conceitos atuais e desenvolvimento de aplicação.
AVALIAÇÃO
Sistema de Avaliação
- 5 (cinco) tarefas ou trabalhos de implementação, cada um de valor 20,0 pontos.
- As tarefas ou trabalhos serão entregues nas datas 31/10, 14/11, 28/11, 12/12 e 22/12.
BIBLIOGRAFIA
Básica
- BRATKO, L. Prolog programming for artificial intelligence. 4th ed. New York: Addsion-Wesley, 2012.
- RUSSELL, Stuart J.; NORVIG, P Artificial intelligence: a modern approach. 3rd ed. Noida: Dorling Kindersley, c2014.
- STERLING, L.; SHAPIRO, E. The art of PROLOG: advanced programming techniques. 2.ed. MIT Press, 1994.
Complementar
- ARARIBÓIA, G. Inteligência artificial: um curso prático. Rio de Janeiro: LTC, 1988.
- MARRIOTT, K.; STUCKEY, P. J. Programming with constraints: an introduction. Cambridge: MIT Press, 1998.
- O’KEEF, The craft of prolog. 2.ed. MIT Press, 1994.
- LE, Tu. Van. Techniques of prolog programming with implementation of logical negation and quantified goals. New York: John Wiley & Sons, 1993.
- 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: _________________________
| 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. |
Referência: Processo nº 23117.056272/2020-12 |
SEI nº 2289081 |