Programa

Linguagens de Programação


Apresentação e Histórico de Linguagens - 2h
Programação Funcional - 8h
Valores, expressões, tipos básicos, funções, semântica via reescrita de termos, funções de alta ordem, tipos estruturados, considerações sobre prova e transformação de programas.
Tipos de dados - 4h
Tipos enumerados, polimorfismo, tipos recursivos e abstratos, classificação para sistemas de tipos.
Estado, controle e comandos - 8h
Estado e atribuição, consequências práticas e teóricas, fluxo de controle, estruturas sequencial, condicional e repetitiva, iteração versus recursão, não determinismo, semântica operacional e denotacional para comandos.
Abstração - 4h
Abstração, controle, funções, procedimentos, dados, ADTs, parametrização.
Módulos - 4h
Sistemas de módulos, módulos versus funções de alta ordem.
Técnicas de Modularização - 2h
De módulos e ADTs para orientação a objetos, decomposição funcional e orientada por dados, visão geral de orientação a objetos, vantagens, distribuir projetos.
Conceitos de Orientação a Objetos e Java - 4h
Objetos, classes, métodos, atributos, mensagens, criação e remoção de objetos, tipos primitivos, estruturas de controle, pacotes, interfaces, operadores especiais.
Ambiente de Desenvolvimento Java e Applets - 2h
Compilador, interpretador, browser, appletviewer, javamaker, applets.
Herança e `Dynamic Binding' - 2h
Classificação, herança simples e múltipla, polimorfismo, overriding, dynamic binding, impacto sobre sistema de tipos (conflitos e anomalias).
Alternativas de Projeto - 2h
Classes versus Módulos, Herança versus Parametrização, Valores versus Objetos.
Alternativas de Projeto - 2h
Herança versus Encapsulamento, Herança versus Clientela, Herança versus Subtipos (herança sintática versus herança comportamental, baseada em refinamento).
Alternativas de Projeto - 2h
Objetos e tipos (interfaces), classes abstratas, especialização de métodos, ativação de métodos múltipla versus ativação simples, anomalias.
Programação em Lógica - 2h
Principios básicos, programação relacional, comparação com programação funcional, linguagens: Prolog, Gödel, Eqlog.
Visão geral de Gödel - 2h
Predicados, relações, variáveis, termos, tipos, cláusulas, módulos, semântica operacional e denotacional, unificação e narrowing.
Aspectos avançados de Gödel - 2h
Constraint solving, controle e outras características não lógicas, características meta-lógicas.
Considerações Finais - 2h
Integração de Paradigmas e Seleção de Linguagens.

Paulo Borba (phmb@di.ufpe.br) (Transparência)