Paradigmas de Programação
Informações Gerais
 

Programa

Objectivos
 
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 teóricas e teórico-práticas: quatro faltas permitidas
Aulas práticas: 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
Cada prova cotada para 8 valores
Datas: 13 de Novembro e 30 de Janeiro, 14:30, Sala 6.26
Trabalho de grupo (enunciado)
 
Dois alunos por grupo
Cotado para 4.0 valores
Desenvolvido ao longo do semestre
Data de apresentação: 24 de Janeiro
Exames
 
Provas escritas com a duração de 120 minutos
Cotadas para 20 valores
Datas: Datas: 11 de Fevereiro às 09:30 (1ª Chamada) e 18 de Fevereiro às 09:30 (2ª Chamada)
 

Grupos de trabalho

Ruby
 
Daniel Rodrigues (m1219) e Miguel Gaspar (m1485)
Objective-C
 
Ricardo Carreira (m1231) e Gil Melfe (m1214)
Python
 
Francisco Catarino (a16553) e Ricardo Dias (a16717)
JavaScript
 
Manuel Lourenço (m????) e Nuno Guimarães (m1235)
Eiffel
 
Ricardo Santos (m1544) e André Passos (m1468)
CLOS
 
David Farreira (m1924) e Vitor Oliveira (m1290)
 

Bibliografia

Linguagens de Programação
 
Handbook of Programming Languages (Volumes I, II, III e IV)
Peter H. Salus, Series Editor in Chief
Macmillan Technical Publishing
ISBN 1-57870-008-6, 1-57870-009-6, 1-57870-010-6 e 1-57870-011-6
 
Programação em Lógica
 
Introdução à Programação em Lógica
Delfim F. M. Torres
Ed. Universidade de Aveiro, 2000
 
Programming in Prolog
W. F. Clocksin, C. S. Mellish
Springer-Verlag
ISBN 3-540-17539-3 (I-3.3-162/3)
 
Prolog Programming: A Tutorial Introduction
C. McDonald
Blackwell Scientific Publications Ltd
ISBN 0-632-01246-3 (I-3.3-179)
 
Prolog: The Standard - Reference Manual
P. Deransart, A. Ed-Dbali, L. Cervoni
Springer
ISBN 3-540-59304-7 (I-3.3-268)
 
Design Patterns
 
Design Patterns - Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides
Addison-Wesley Professional Computing Series
ISBN 0-201-63361-2
 

Internet

Programação em Lógica
 
First-order logic - Wikipedia
First-Order Logic
Resolution Theorem Proving
Resolution (logic) - Wikipedia
Normal Forms
Conjunctive normal form - Wikipedia
Skolem normal form - Wikipedia
Prenex normal form - Wikipedia
 
Prolog tutorials
Prolog Programming: a do-it-yourself course for beginners
Logtalk links to Prolog resources
 
Design Patterns
 
Tutorials about Patterns
Design Patterns Tutorial
An Introduction to Design Patterns (PowerPoint)
Introduction to Patterns and Frameworks (PDF)
 

Recursos

Arquivo com elementos de estudo (normas, tutoriais, provas, problemas, livros, ...)
 
recursos.zip (Última actualização: 1 de Outubro de 2007)
 

Software

(instalado nos computadores da Sala 6.19)
 
 

Horários

Aulas teóricas
 
Terça-feira: 16h-18h, Sala 6.26
Aulas práticas
 
Quinta-feira: 14h-16h, Sala 6.19
Atendimento dos alunos
 
Terça-feira: 14-16h, Gabinete 4.3