Apresentação |
---|
Página institucional |
Regime de Avaliação |
Sumários | Calendário |
Material |
Bibliografia |
Equipa docente | Horário |
Alunos |
Atendimento |
Anos anteriores |
Bem vindo à página da edição de 2020/21 da unidade curricular de Cálculo de Programas. O principal objectivo desta disciplina é o ensino de métodos que estão na base da abordagem científica ao desenvolvimento de software.
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.
A indústria de software espera das universidades um ensino sistemático da programação, i.e. científico. Só assim haverá garantias de que não há erros de programação. Tal como noutros ramos da engenharia, 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 introduzir erros.
O Departamento de Informática da Universidade do Minho tem uma longa tradição neste tipo de ensino. Com mais de 20 anos de leccionação, Cálculo de Programas é uma das unidades curriculares que ensinam tais competências. Mais do que tecnologia ensina-se método, que é afinal aquilo que a maioria dos programadores acaba por não ter.
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.