Faculdade de Ciências e Tecnologia

Programação Multiparadigma

Código

8285

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

Artur Miguel de Andrade Vieira Dias, Luís Manuel Marques da Costa Caires

Horas semanais

4

Total de horas

59

Língua de ensino

Português

Objectivos

Saber
1 - Compreender as características, motivações e oportunidades de aplicação dos paradigmas de programação dominantes.
2 - Compreender as vantagens de se ser fluente em diversos estilos de programação e em usá-los de forma integrada.
3 - Compreender os princípios gerais que orientam o crescimento duma linguagem multiparadigma.

Fazer
4 - Conseguir desenvolver programas complexos, explorando bem os ingredientes linguísticos disponíveis.
5 - Com sentido crítico, procurar soluções que se possam exprimir de forma simples e directa.
6 - Capacidade de usar os paradigmas de forma isolada ou integrada.
7 - Adquirir experiência no uso um sistema de programação multiparadigma particular: Scala.

Pré-requisitos

Experiência prévia com uma linguagem funcional, por exemplo OCaml, e uma linguagem orientada pelos objetos, por exemplo Java.

Conteúdo

A - Programação multiparadigma: Caracterização, motivação e exemplos. Princípios orientadores na adição de novos conceitos.
B - Programação funcional: Estratégias de avaliação. Avaliação lazy e estruturas de dados infinitas. Streams. Compreensões. Tipos de dados algébricos e pattern-matching. Continuações. Monadas.
C - Programação imperativa: Estado. Controlo. Iteradores.
D - Programação orientada pelos objetos: Classes. Traits. Mixins. Polimorfismo familiar.
E - Tipos: Tipos nominais. Tipos estruturais. Tipos compostos com refinamentos. Subtipos. Views. Polimorfismo F-restringido. Limites inferiores. Anotações de variância.
F - Programação para a WEB: Processamento de XML usando padrões baseados em expressões regulares.
G - Programação concurrente: Modelo dos Atores. Futuros. Computações paralelas. Canais síncronos e assíncronos. Paralelismo de dados.


Bibliografia

Método de ensino

Nas aulas teóricas, os conceitos fundamentais da cadeira são transmitidos, exemplificados e discutidos
    
Nas aulas práticas, os alunos resolvem pequenos problemas onde aplicam os conceitos e técnicas estudados.

Os três projetos da cadeira são realizados principalmente fora das aulas.

Método de avaliação

Elementos de avaliação

Os elementos de avaliação são os seguintes, e têm os pesos na nota final:

  • T1 - Teste 1 - 35%
  • T2 - Teste 2 - 35%
  • PP - Projetos práticos - 30%
  • ER - Exame de recurso - 70%

Cada um destes elementos de avaliação é cotado até 20 valores.
O valor de PP é a média aritmética de 3 projetos práticos. Não há nota mínima em qualquer deles. Os projetos são efectuados por grupos de um ou dois alunos. Poderão haver discussões de alguns projetos para alguns grupos.

Notas das componentes prática e teórica

A nota da componente prática é definida como:

  • PRAT = PP

A nota da componente teórica é definida de duas formas diferentes, consoante o momento em que a nota é obtida:

  • TEOR= (T1 + T2) / 2
  • TEOR = ER

Frequência

A nota de frequência é igual à nota da parte prática:

  • FREQ = PRAT

A frequência é um elemento indispensável para obter aprovação nesta cadeira. No caso de alunos ERASMUS, é possível fazer os projetos à distância.

 Nota final e Aprovação

A nota final calcula-se assim:

  • FINAL = 0.3 * FREQ + 0.7 * TEOR

A aprovação na cadeira é determinada pela seguinte condição:

  • Aprovação = FREQ >= 9.5 e TEOR >= 9.5

As notas intermédias são arredondadas para duas casas decimais.
A nota final é um número inteiro.

Validade da frequência obtida neste ano

A frequência obtida no ano letivo corrente será valida no próximo ano letivo, pelo menos.

Frequências dos anos anteriores

Todas as frequências obtida nos anos anteriores são válidas no ano letivo corrente. Não é possível melhorar a nota de frequência obtida no passado.

Fraude

Qualquer tipo de fraude em qualquer elemento de avaliação implica a impossibilidade de fazer a cadeira no ano lectivo corrente (mesmo que haja exames marcados). Isto aplica-se tanto a quem dá informação como a quem recebe informação.

Cursos