Índice: Programa | Bibliografia | Avaliação

Versão oficial da ficha de disciplina »

Apresentação

Sigla: PP
Ano:
Semestre:
Créditos: 7,5 ECTS
Horas/Semana: 3h teóricas
Nº de Turmas: 1 teórica
Aulas Teóricas: João Correia Lopes (JCL)

Língua de Ensino

Português

Objectivos

Dotar os alunos de uma visão global dos vários paradigmas de programação com ênfase nos conceitos, implementação e adequação às classes de problemas, levando-os a perceber os compromissos no desenho de linguagens e as vantagens e desvantagens na utilização das linguagens mais usadas em programação.

Ao completar esta disciplina, o aluno deve ser capaz de:

  1. Distinguir o papel das linguagens de programação de mais alto nível
  2. Distinguir os vários paradigmas de programação
  3. Descrever os problemas associados à implementação de linguagens de programação
  4. Enumerar as inovações associadas à linguagem LISP
  5. Descrever características e problemas da linguagem imperativa Algol 60: sistema de tipos rico e estruturado, anomalias em "Pass-by-name", goto e gestão de memória, princípio da ortogonalidade (atribuição em variáveis procedure)
  6. Descrever características e limitações da linguagem imperativa Pascal: Limites de array fazem parte do tipo
  7. Descrever características e limitações da linguagem imperativa C: arrays vs. apontadores
  8. Descrever características do ML: garbage collection, funções de ordem elevada, funções parciais, funções curried, padrões, células referência
  9. Descrever a utilização de tipos em linguagens de programação
  10. Descrever o algoritmo de inferência de tipos do ML
  11. Descrever implementações de polimorfismo
  12. Descrever as necessidades de gestão de memória colocadas pela chamada a funções e passagem de parâmetros nas suas variadas formas
  13. Descrever os conceitos principais relacionados com o controlo de execução de programas
  14. Descrever o propósito e a semântica de excepções em ML e em C++
  15. Descrever o suporte para a modularidade de programas
  16. Descrever o suporte para a abstracção em programas
  17. Descrever os conceitos principais do paradigma de Orientação por Objectos
  18. Descrever as características principais da linguagem de programação Simula.
  19. Descrever as características principais da linguagem de programação Smalltalk
  20. Descrever características da linguagem de programação C++: eficiência
  21. Descrever características da linguagem de programação Java: segurança
  22. Descrever algumas características da linguagem de programação Prolog
  23. Enumerar vantagens da programação usando concorrência

Programa

  1. O papel das linguagens de programação
  2. Funções, recursão, listas e o LISP
  3. Compiladores, sintaxe e cálculo-lambda
  4. A família Algol e o ML
  5. Sistemas de tipos e inferência de tipos
  6. Âmbito, funções e gestão de memória
  7. Abstracção de dados e modularidade
  8. Conceitos em linguagens orientadas por objectos, o Simula e o Smalltalk
  9. Objectos e eficiência em tempo de execução em C++
  10. Portabilidade e segurança em Java
  11. O paradigma de programação em lógica e o Prolog
  12. Concorrência e distribuiução

Bibliografia Principal

Bibliografia Complementar

Métodos de Ensino

Aulas de exposição teórica e discussão de tópicos relevantes e apresentação de trabalhos, do tipo ensaio, a serem realizados por cada estudante.

Software

Modo de Avaliação

Avaliação distribuída com exame final.

Componentes de Avaliação

A avaliação inclui um exame e um trabalho prático, realizado ao longo do semestre, com as componentes indicadas.

DescriçãoTipoTempo (horas)Data de Conclusão
Aulas da disciplina (estimativa)Aulas39
T1: Tipos e verificação de tiposTrabalho242010/03/18
T2: Gestão de memóriaTrabalho242010/03/25
T3: Objectos e eficiência em execução em C++Trabalho242010/04/29
T4: Portabilidade e segurança em JavaTrabalho242010/05/13
T5: Programação em Lógica e PrologTrabalho242010/05/20
 Estudo1
 Total160

Cálculo da Classificação Final

A nota final será calculada usando a fórmula: Nota = 50% Trabalho + 50% Exame, sendo:
Trabalho = T1 + T2 + T3 + T4 + T5

Obtenção de Frequência

A disciplina tem uma componente de avaliação distribuída, em que são avaliadas componentes do trabalho prático, a entregar antes das datas limite. Serão admitidos a exame os alunos que obtenham 50% na avaliação distribuída. A aprovação na disciplina está condicionada à obtenção de 50% no exame.

Provas e Trabalhos Especiais

Não há provas nem trabalhos especiais.

Avaliação Especial (TE, DA, ...)

A avaliação distribuída, realizada durante o semestre de funcionamento da disciplina, é exigida a todos os alunos, independentemente do regime de inscrição.

Melhoria de Classificação Final/Distribuída

A nota de exame pode ser melhorada em época de recurso. O trabalho prático pode ser repetido na edição seguinte da disciplina.

Topo