
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
- Martin Odersky, Lex Spoon, and Bill Venners, "Programming in Scala", Artima, 2011.
- Peter van Roy, Seif Haridi, "Concepts, Techniques, and Models of Computer Programming", The MIP Press, 2004.
- Martin Odersky, "Scala by Example", Programming Methods Laboratory, EPFL, 2014.
- Martin Odersky, "The Scala Language Specification", version 2.9, Programming Methods Laboratory, EPFL, 2014.
- Artur Miguel Dias, "Folhas da cadeira, incluindo lista de exercícios", 2014.
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.
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.