Objectivos

A disciplina ensina princípios, técnicas e ferramentas envolvidos na construção e validação de sistemas de software de alta tecnologia, de forma aplicada às plataformas de suporte à execução standard de indústria (Java, .NET, C, C#).

O foco é em técnicas de de programação concorrente, usando objectos e componentes, e ferramentas de validação e detecção de erros em software.

As competências transmitidas nesta cadeira são indispensáveis aos alunos com vocação para actividades de desenvolvimento e liderança de desenvolvimento de software de alta tecnologia.

Docentes

Luis Caires (Regente)

Topicos abordados

  • Linguagens de assercoes para especificar boas propriedades dos programas e validar os mesmos em tempo de compilacao, garantindo nao só a ausencia de erros mais comuns como "null pointer exception"s ou "index out of bounds", mas até a correccao total de partes criticas do codigo
  • Programação concorrente segura e correcta em linguagens baseadas em objectos (Java);
  • Técnicas de validação rigorosa usando ferramentas como ESC/Java2, Spec# e Java Modeling Language;
  • Técnicas de detecção de erros em tempo de compilação com base em análise estática e/ou model-checking do código fonte, e suas ferramentas de suporte.

Teasers

ESC/Java2

Spec#

Concurrent Programming in Java

Compiler Research: The Next 50 Years

Lambda the ULTIMATE (programming languages weblog)