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
Concurrent Programming in Java
Compiler Research: The Next 50 Years
Lambda the ULTIMATE (programming languages weblog)