Dar uma visão de conjunto dos diferentes paradigmas de programação e das suas linguagens mais representativas.
Dar uma perspectiva histórica da criação e evolução dos paradigmas e linguagens de programação.
Alargar o leque de conhecimentos sobre a programação orientada a objectos.
Introduzir o paradigma da programação em lógica.
Programa
Paradigmas de programação: imperativo, lógico, funcional e orientada a objectos. Linguagens orientadas a objectos derivadas de linguagens imperativas, lógicas e funcionais. Perspectiva histórica.
Tópicos avançados de programação orientada a objectos. Métricas de desenvolvimento: coesão, acoplamento, suficiência, completude e operações primitivas. Hierarquias de protótipos versus hierarquias de classes. Sistemas Reflexivos. Mecanismos de herança: herança pública, protegida e privada; herança múltipla e instanciação múltipla. Reutilização de código por herança, por composição de objectos e por composição de componentes. Design Patterns.
Programação em Lógica. Lógica proposicional, lógica predicativa de primeira ordem e princípio da resolução. Representação de conhecimento e mecanismos de inferência. A linguagem de programação Prolog. Técnicas de programação e depuração de programas.
Avaliação
Presenças
Aulas: quatro faltas permitidas
Alunos com o estatuto de trabalhor-estudante isentos do regime de presenças
Frequências
Duas provas escritas com a duração de 90 minutos cada