Benvindo a Cálculo de Programas

Bem vindo à página da edição de 2013/14 da disciplina de Cálculo de Programas. O meu nome é José Nuno Oliveira e sou o responsável por esta disciplina, que conta com uma equipa de docentes altamente qualificados na investigação e ensino de métodos que, como os que se leccionam nesta disciplina, estão na base da abordagem científica ao desenvolvimento de software. TFM09.jpg Todos fazemos parte do Laboratório HASLab (High-Assurance Software Laboratory), em que se vem consolidando know-how em métodos formais de programação desde há mais de 25 anos.

A palavra "programa" vem do grego "programma", uma derivação de "prographein" = "pro" (antes) + "graphein" (escrever). Isto sugere que alguém que programa deve pensar antes no que vai fazer.

Cada vez mais, a indústria pede às universidades que ensinem a programar a sério, isto é, de forma reflectida e capaz de evitar erros de programação. Para isso, é preciso introduzir a noção de cálculo em programação, isto é, uma disciplina que nos ajude a pensar os programas, raciocinar sobre eles e obter versões eficientes sem que a sua correcção fique comprometida.

A Universidade do Minho tem uma longa tradição neste tipo de ensino. Cálculo de Programas é a cadeira que, nas licenciaturas de Eng. Informática e Ciências da Computação, ensina tais competências. Mais do que tecnologia ensina-se método, que é afinal aquilo que a maioria dos programadores não tem de facto.

Citação

Quien sabe por Algebra, sabe scientificamente.
Pedro Nunes(1502-1578) in Libro de Algebra, 1567, fol 270r.

Resultados da Aprendizagem

  • Programação composicional: aprender a escrever programas complexos por composição de programas mais simples (princípio da composicionalidade).

  • Programação construtiva: aprender a escrever programas funcionais com recurso a combinadores algébricos.

  • Transformação de programas: recurso à algebra da programação para se obter eficiência sem sacrifício da correcção.

  • Arquitectura da programação: Análise, compreensão e catalogação de programas: recurso à factorização em pares "fold" + "unfold" (hilomorfismos) como forma de se perceber a arquitectura dos algoritmos e sua taxonomia.

  • Síntese de programas: cálculo de ciclos-for a partir de definições indutivas da matemática.

  • Programação funcional avançada: construir e raciocinar sobre programas funcionais com efeitos sob a forma de mónades.

Página principal

Entrar aqui.