Guia de Cursos

Queres conhecer a oferta de cursos da NOVA, nas áreas das licenciaturas, mestrados e doutoramentos?
No nosso Guia de Cursos encontras informação útil sobre Faculdades, Institutos e Escolas.
Podes ainda aceder a informações complementares necessárias a uma completa integração.

saber mais Guia de Cursos

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

Objectivos

Saber

  • Entender as características, motivações e oportunidades de aplicação de alguns dos paradigmas de programação dominantes.
  • Compreender as vantagens de se ser fluente em diversos estilos de programação e em usá-los de forma integrada.
  • Enriquecer os processos mentais aplicáveis ao desenvolvimento de software.

Fazer

  • Conseguir desenvolver programas complexos, usando com razoabilidade os ingredientes linguísticos disponíveis.
  • Com sentido crítico, procurar soluções que se possam exprimir de forma simples e directa, mas sem nunca esquecer a questão da eficiência.
  • Consoante as restrições existentes, ter capacidade para usar paradigmas de programação de forma isolada ou de forma combinada.
  • Adquirir experiência no uso um sistema de programação multiparadigma particular - Scala.

Soft-Skills

  • Criatividade e imaginação.
  • Atitude de exigência e qualidade.
  • Capacidade de gestão do tempo e cumprimento de prazos.
  • Capacidade para seleccionar instrumentos apropriados a um problema.

Conteúdo

  1. Programação multi-paradigma
    1. Caracterização e exemplos.
    2. Introdução à linguagem Scala. Sua integração com os sistemas Java e .NET.
  2. Programação funcional
    1. Estratégias de avaliação. Avaliação lazy e estruturas de dados infinitas. Streams.
    2. Tipos de dados algébricos e pattern-matching.
    3. Funções de ordem superior e técnicas baseadas em continuações.
    4. Técnicas de programação declarativa.
    5. Programação baseada em geradores e filtros.
  3. Programação imperativa
    1. Estado. Controlo. Iteradores.
  4. Programação orientada pelos objectos
    1. Revisão das motivações e dos conceitos essenciais. Subtipos.
    2. Uso de hierarquias de classes vs. uso de tipos de dados algébricos.
  5. Programação genérica
    1. Polimorfismo F-restringido. Limites inferiores. Anotações de variância (co- e contra-).
    2. Inferência de tipos local.
  6. Programação para a WEB
    1. Processamento de XML usando padrões com expressões regulares. Serviços WEB.
  7. Componentes
    1. Abstracções para a criação de componentes reutilizáveis.
    2. Tipos-membro abstractos. Selftypes explícitos. Composição de mixins. JavaBeans.
  8. Concorrência
    1. Abstracções de concorrência.
    2. Uso dessas abstracções. Sua implementação com base em threads e monitores.
    3. Semáforos. Variáveis sincronizadas. Futuros. Computações paralelas.
    4. Produtores e consumidores. Canais síncronos e assíncronos. Actores e mailboxes.
  9. Extensibilidade
    1. Sublinguagens para domínios específicos definidas sobre uma linguagem hospedeira.

Bibliografia

Método de ensino

Nas aulas teóricas são transmitidos, exemplificados e discutidos os conceitos fundamentais da cadeira.

Nas aulas práticas os alunos resolvem pequenos problemas onde aplicam os conceitos estudados na cadeira.

Os trabalhos 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 - 27.5%
  • T2- Teste 2 - 27.5%
  • P1- Projeto prático 1 - 15%
  • P2- Projeto prático 2 - 15%
  • P3- Projeto prático 3 - 15%
  • ER - Exame de recurso - 55%

Cada um destes elementos de avaliação é cotado até 20 valores.
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 = (P1 + P2 + P3) / 3

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

Nota final e Aprovação

A nota final calcula-se assim:

  • FINAL = 0.45 * FREQ + 0.55 * 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.

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