As classificações constantes desta página foram removidas no final do ano lectivo.
Trabalho prático
Orais do TP: terão lugar na sala DI 0.04 (nova numeração), ver horário. Para evitar barulho e confusão, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
Grupos de TP/1617
Os alunos devem comunicar os respectivos grupos de trabalho (de três alunos cada) enviando ao docente responsável pela disciplina uma mensagem contendo o assunto CP/1617: grupo TP = {11111,22222,33333} onde 11111, 22222 e 33333 são os respectivos números mecanográficos.
Grupos comunicados:
Registam-se para já os pedidos de mudança de turno enviados ao docente responsável por esta disciplina.
As trocas só serão efectivas após validação pela DC:
a82880 <-> a67715
a78203 <-> a57127
A75614 <-> A71369
A77312 <-> A79021
A77789 <-> A79093
A75064 <-> A73236
a70363 <-> a67703 seguida de a67645 <-> a70363
Trocas enviadas pela DC:
Pedro Manuel Barbosa Almeida;A74301;CP-TP2;CP-TP1
Rui Alves Dos Santos;A67656;CP-TP1;CP-TP2
Filipe Nunes;a78074;CP-TP1;CP-TP5
Hugo Oliveira;a78565;CP-TP5;CP-TP1
Paula Pereira;a77672;CP-TP5;CP-TP1
Ana Rodrigues;a78763;CP-TP1;CP-TP5
-- Página criada por JoseNunoOliveira - 06 Feb 2017
Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo a equipa docente vinculada a dar uma resposta em tempo útil.
Durante o período de aulas: de acordo com o horário seguinte, sujeito a marcação verbal ou por email, com um mínimo de uma semana de antecedência, junto do respectivo docente:
Q01 - Ao compilar o trabalho deparámo-nos com o erro
cp1617t.lhs:358:27:
Not in scope: ‘nothing’
O que devemos fazer?R: Essa função pertence a Cp.hs. Devem "refrescar" as bibliotecas que estão no material pedagógico, pois foram evoluindo à medida que a discplina avançou.
Q02 - Não consigo definir funções com o padrão (n+1). O que devo fazer?R: Há duas soluções: ou adiciona {-# OPTIONS_GHC -XNPlusKPatterns #-} no início do código Haskell em cp1617t.lhs, ou interpreta o ficheiro como essa opção passada como parâmetro,
ghci -XNPlusKPatterns cp1617t.lhs
Q03 - No Problema 2 escreve-se que o "wrapper deverá ser um catamorfismo". O catamorfismo não deveria ser o "worker" e não o "wrapper"?R: Sim! É uma gralha: nesse texto, onde está "wrapper" deve ler-se "worker" (ver correcção feita sobre o PDF).
Q04 - No Problema 2 é obrigatório usar a lei de recursividade múltipla?R: Se se recomenda usá-la é porque é a melhor alternativa. Não se esqueçam que têm de apresentar os cálculos justificativos de como chegaram à vossa solução.
Q05 - No Problema 2 é pedido para apresentarmos os cálculos. O que é preciso fazer no LaTeX para reproduzir o "layout" dos raciocínios que aparecem nas fichas e nos apontamentos?R: Fazem assim: (a) ao ficheiro cp1617t.sty acrescentam, em qualquer sítio, as linhas
Q06 - Não percebemos o funcionamento da função 'lsplitB_tree'. Como é que a decisão sobre quantos elementos ficam na raiz, e.g., é tomada? E depois como são inseridos os restantes elementos?R: A função lsplitB_tree está para B_tree assim como qsep está para BTree (ver BTree.hs). Neste caso, só é possível guardar um valor em cada nó da árvore gerada, enquanto que em B_tree se pode guardar mais do que um. Portanto, em vez de se gerar uma BTree de procura, pode gerar-se uma B_tree de procura, com várias sub-árvores em cada nó e obter um 'quicksort' mais interessante.
Dá-se de seguida um exemplo que pode ajudar: o anamorfismo com gene lsplitB_tree aplicado à lista [7,16,5,6,12,9,21,18] deverá dar a árvore intermédia que a seguir se representa:
Q07 - Há alguma maneira de testarmos se a nossa função 'mirrorB_tree' está bem implementada?R: Naturalmente que essa função deve ser inversa de si própria. Outra forma de a verificarem é fazerem o seguinte teste, quando o problema estiver acabado. Como sabem,
qSort = cataBTree inord . anaBTree qsep.
no módulo BTree.hs. Se no meio do algoritmo colocarem invBTree a lista de entrada virá ordenada por ordem inversa. Ora invBTree corresponde à vossa mirrorB_tree.
Assim, se ao adaptarem este teste ao vosso quicksort sobre B_tree a lista de entrada não aparecer por ordem inversa, então a vossa mirrorB_tree não está a funcionar bem.
Q08 - Há alguma convenção uma para os testes quickCheck?R: O enunciado é omisso quanto a este ponto. No entanto, dá jeito que as funções quickcheck tenham o prefixo prop_XXX (desde que quickCheck prop_XXX tipe correctamente).
Q9 - Na alínea 4(c) da ficha nº 6, fiz os diagramas de cada catamorfismo e chego às definições das funções com variáveis através da lei universal-cata e consigo perceber que realmente fazem a mesma coisa; mas não sei se era assim que era suposto resolver...R: Não: isso mostra, mas não prova! O que queremos provar é que f=g, sendo ambas catamorfismos. Logo podemos usar a lei-universal aplicada a f ou g, à nossa escolha, por exemplo
g = ([ i,i ])
<=> { Universal-cata }
g.in = [i, i] . (id + g)
<=> { função constante i, fusão-+ etc, isomorfismo in/out }
g= i .[ id , g] . out
<=> { função constante i }
g = i
Agora basta verificar se i = f, pelo mesmo processo.
Q10 - Na questão nrº 5 da ficha 9, no terceiro passo, eu passei 'out' para o outro lado da igualdade,
<=> { eq-+ ; simplificação (propriedades dos números naturais)}
(g n).zero = i1(g n) . (+n) . (*n) = i2.(*n)
O que resta é usar a 2ª lei do condicional (mais propriedades dos naturais) para resolver as duas igualdades - façam-no. Não se esqueçam de um detalhe: a função 'bang' ( ! : A -> 1) é a identidade quando A = 1. (Porquê)
Q11 - Pretendemos desenhar diagramas de catamorfismos como aparecem nos apontamentos e nas fichas. O que temos de fazer?R: A package LaTeX para fazerem isso carrega-se adicionando
\usepackage[all]{xy}
ao preâmbulo. Há um extenso manual sobre esta package fácil de encontrar.
Fica disponível a função \xymatrix que é usada a seguir para desenhar um dos diagramas da ficha 6:
Agora é só adaptar ao caso concreto que querem desenhar.
Q12 - Qual é o formato em que apenas uma chaveta abrange duas equações, para colocar por exemplo o passo de passagem da lei de recursividade múltipla?R: Acrescentem ao preâmbulo as linhas
%format (lcbr (x)(y)) = "\begin{lcbr}" x "\\" y "\end{lcbr}"
\newenvironment{lcbr}{\left\{\begin{array}{l}}{\end{array}\right.}
Exemplo: |lcbr (id= g.f)(f.g=id)| na ficha 4.
Q13 - A utilização da função succ sem a aplicar a nenhuma variável resulta, em alguns contextos, num erro de geração do PDF.R: Isso deve-se ao facto de \succ no ficheiro auxiliar cp1617t.sty (linha 58) estar definido com um parâmetro. Sugere-se a re-definição (local)
%format succ = "\mathsf{succ}"
Q14 - Ao escrever as justificações tenho erros em, por exemplo, \just<=>{ texto }. Qual é o problema?R: Isso deve-se a <=> ser código Haskell e não código LaTeX. Resolve-se o erro escrevendo \just{|<=>|}{ texto }.
Q15 - Em relação à FAQ 12, funciona mas diz que o ambiente já está definido...R: Têm razão - a linha
já existe em cp1617t.sty; logo não faz falta.
Q16 - Nas justificações do problema 2 temos expressões muito grandes que saem fora da página. Como podemos resolver isso?R: Sugiro que usem algo do género
%format (longcond (c)(t)(e)) =
"\begin{array}{ll}\multicolumn{2}{l}{" c -> "}\\& " t ",\\& " e "\end{array}"
que divide um condicional em três linhas. (O texto acima todo numa linha: está partido em duas para o html não cortar o que não pode mostrar.)
Q17 - Ao justificarmos a recursividade multipla há 2 equações que, quando nelas introduzimos variáveis, acabamos com 4 equações. O que se sugere na FAQ 12 só dá para duas, como resolver este caso?R: Sugerem-se dois lcbr dentro de um lcbr (2 * 2 = 4).
28 Ago - Época especial: as classificações estão afixadas em Avaliação / alunos.
23-Jul - Publicada em Avaliação / alunos a correcção do exame de recurso (PDF)
17-Jul - Época especial: o exame terá lugar no dia / horas 25-Jul-2017 / 09h-11h, na sala CP2-204.
10 Jul - Esclarecimentos sobre nota do recurso - encontra-se assinalado no sumários o período em que o docente responsável pela disciplina está disponível para dar esclarecimentos sobre a nota do recurso.
10 Jul - Notas finais propostas: estão afixadas em Avaliação / alunos.
10 Jul - Notas do exame de recurso: estão afixadas em Avaliação / alunos.
8 Jul - Notas do exame de recurso (actualização): deverão ser afixadas durante a manhã de segunda feira em Avaliação / alunos.
29 Jun - Publicados em Avaliação / alunos os nomes dos alunos admitidos ao exame de recurso.
27 Jun - Esclarecimentos sobre nota do TP - encontram-se assinalados no sumários os períodos em que os docentes estão disponíveis para dar esclarecimentos sobre a nota do TP. Cada aluno /grupo deve procurar o docente que os avaliou.
26 Jun - Acabam de ser afixadas em Avaliação / alunos as notas dos TPs.
24 Jun - Notas dos TPs: deverão ser afixadas em Avaliação / alunos na próxima 2.a-feira dia 26-Jun.
24 Jun - Notas do teste de 1-Jun: estão afixadas, bem como o enunciado com a correcção, em Avaliação / alunos. Serão brevemente anunciadas aqui as datas / horas para alunos que queiram ver o teste.
23 Jun - Notas do teste de 1-Jun: serão amanhã afixadas em Avaliação / alunos.
15 Jun - Orais do TP: recomenda-se aos alunos que não têm fotografia no portal académico que a insiram rapidamente, pois com tantos alunos é impossível à equipa docente lembrar-se de quem são, o que pode vir a prejudicar a sua avaliação.
14 Jun - Orais do TP: terão lugar na sala DI 0.11, ver horário. Para evitar esperas desnecessárias, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
12 Jun - Entrega do TP: está aberta a partir das 12h de hoje a submissão do trabalho no portal http://www.di.uminho.pt/cp até às 23h59m do dia 13-Jun.
03 Jun - Entrega do TP (nova data): até às 23h59m do dia 13-Jun. Oportunamente serão dadas informações sobre o processo de submissão. As orais terão lugar nas tardes dos dias 16-Jun e 19-Jun.
31 Mai - Teste de 1-Jun, 16h, Cantina - informam-se os alunos de que podem trazer consigo, para consulta, o formulário, desde que sem anotações manuscritas; qualquer violação desta regra implica a sua recolha imediata.
20 Mai - Avisa-se que haverá uma aula teórica suplementar para LCC na próxima 4ª feira, dia 24 de Maio, das 16h-18h, no anfiteatro A5 do CP1.
10 Mai - Trabalho prático: relembram-se os alunos que devem consultar regularmente as FAQs que vão aparecendo na secção de Atendimento.
08 Mai - Em cumprimento do Despacho RT-29/2017, avisa-se que não haverá aulas desta disciplina na próxima 6ª feira dia 12 de Maio.
06 Mai - Publicada no Material a ficha nr.12, a preparar para as aulas TP da semana de 08-Mai.
05 Mai - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
02 Mai - Trabalho prático: os alunos devem consultar regularmente as FAQs que aparecerem na secção de Atendimento.
01 Mai - Publicada no Material a ficha nr.11, a preparar para as aulas TP da semana de 02-Mai.
28 Abr - Trabalho prático: enunciado e material publicados em Material.
23 Abr - Publicada no Material a ficha nr.10, a preparar para as aulas TP da semana de 24-Abr.
17 Abr - Publicada no Material a ficha nr.9, a preparar para as aulas TP da semana de 18-Abr.
1 Abr - Publicada no Material a ficha nr.8, a preparar para as aulas TP da semana de 3-Abr.
31 Mar - Avisa-se que não haverá aula teórica na próxima 2ª feira dia 3 de Abril (docente em serviço em Lisboa).
31 Mar - Publicadas no Material várias bibliotecas em Haskell de apoio ao estudo de catamorfismos e seu papel na programação.
25 Mar - Publicada no Material a ficha nr.7, a preparar para as aulas TP da semana de 27-Mar.
18 Mar - Publicada no Material a ficha nr.6, a preparar para as aulas TP da semana de 20-Mar.
16 Mar - Os alunos que pretendam usufruir da nota do TP do ano passado (cf. Regime de Avaliação) devem enviar ao responsável pela disciplina uma mensagem até 24-Abril; aqueles que o já tiverem feito não precisam de re-enviar mensagem.
13 Mar - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
11 Mar - Publicada no Material a ficha nr.5, a preparar para as aulas TP da semana de 13-Mar.
04 Mar - Publicada no Material a ficha nr.4, a preparar para as aulas TP da semana de 6-Mar.
25 Fev - Publicada no Material a ficha nr.3, a preparar para as aulas TP da semana de 27-Fev.
25 Fev - Não haverá aulas na terça-feira, dia 28, devido à tolerância de ponto (Despacho RT-14/2017)
18 Fev - Publicada no Material a ficha nr.2, a preparar para as aulas TP da semana de 20-Fev.
14 Fev - Mudança de sala: a partir de 17-Fev (inclusive) a aula teórica de LCC passa para o anfiteatro A2.
10 Fev - Publicada no Material a ficha nr.1, a estudar para as aulas TP da semana de 13-Fev.
1 Fev - Início das aulas: 6 de Fevereiro.
Na primeira semana só haverá aulas teóricas.
1 Fev - Criada esta página de avisos.
J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho. Os capítulos deste livro (em preparação) essenciais para esta disciplina no corrente ano lectivo são o segundo ( 321K), o terceiro ( 344K) e o quarto ( 273K).
Bibliografia complementar
A. Cunha. Cálculo de Programas: notas teórico-práticas. Departamento de Informática, Universidade do Minho, 2005. (290k).
R. Bird and O. de Moor. Algebra of Programming. Series in Computer Science. Prentice-Hall International, 1997. C. A. R. Hoare, series editor. BGUM 510.5-B
O material para realização do TP desta disciplina consta de um enunciado (cp1617t.pdf) e de um zip (cp1617t.zip) contendo a respectiva fonte (ficheiro cp1617t.lhs) + outros ficheiros auxiliares. Pressupõe-se que estão instaladas as biliotecas de Haskell abaixo referidas.
Os alunos devem começar por ler cp1617t.pdf para avaliarem o trabalho que há para fazer. Devem ainda deixar para o fim o último problema, cuja matéria só na semana que vem começará a ser leccionada.
google.hs - ilustração da arquitectura map-reduce que foi mostrada nas aulas.
demos.hs - contendo material auxiliar para a visualização em HTML da estrutura de dados virtual (intermédia) dos hilomorfismos qSort, hanoi, mSort etc das bibliotecas BTree.hs e LTree.hs. Experimentar qSort_vtree [6,3,9,1,7,18] e hanoi_vtree (True, 7), por exemplo. Encontrar-se-á a visualização no ficheiro _.html da directoria corrente.
Exp.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados expressões com variáveis que é usada em demos.hs.
FTree.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados árvores binárias completas (informação nos nós e nas folhas).
LTree.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados árvores binárias de folhas - LTree a = Leaf a | Fork (LTree a, LTree a) e aplicações suas (e.g. Fibonacci, duplo factorial, `merge-sort', etc).
BTree.hs - biblioteca para o tipo de dados árvores binárias - data BTree a = Empty | Node(a, (BTree a, BTree a)), e aplicações suas (e.g. torres de Hanói, `quick-sort', etc).
List.hs - biblioteca geral para listas em Haskell, contendo combinadores (e.g. catamorfismos) e exemplos de utilização.
Nat.hs - biblioteca de naturais (combinador ciclo-for, etc).
cp1617f02q3.hs - 'kit' de apoio à resolução da questão 3 da ficha 2.
Cp.hs - contendo os combinadores de base do cálculo de programas, e.g. split, ><, -|- etc.
A nota final terá uma componente teórica (T) e uma componente prática (TP).
O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral e valerá 40% da nota final. A nota TP mínima é 10 valores.
Os restantes 60% (T) serão avaliados num teste (ou exame de recurso) sem consulta. A nota T mínima é 8 valores.
Os grupos TP serão de 3 alunos cada. As notas TP são individuais, conforme prestação de cada aluno no trabalho e defesa oral.
Congelamento de notas TP: para os alunos que assim o desejarem, consideram-se congeladas as notas dos seus trabalhos de CP do ano passado (e apenas desse ano), sendo nesse caso usada a respectiva fórmula de cálculo.
Melhorias: só se podem fazer à parte T, caso o aluno tenha esse direito; para alunos de anos anteriores, a fórmula de cálculo é a do ano em que a nota a melhorar foi obtida.
Regime de Faltas
Adopta-se o regime geral em vigor na universidade.
-- JoseNunoOliveira - 05 Feb 2017
TWiki's Education/CP1617 webThe Education/CP1617 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617Copyright 2020 by contributing authors2020-10-30T14:39:08ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebStatistics2020-10-30T14:39:08ZStatistics for Education/CP1617 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebHome2019-07-16T15:15:43ZBenvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Alunos2019-07-07T09:13:16ZAlunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Avisos2018-04-20T12:01:45Z28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebSideBar2018-02-01T11:48:17ZTópicos Apresentação Atendimento Avaliação / alunos Sumários Material Contacto Horário Docentes Regime de Avalia ... (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialPedagogicohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/MaterialPedagogico2017-08-28T08:35:23ZMaterial Pedagógico Fichas das aulas práticas Ficha 1 (revisões de PF) Ficha 2 Ficha 3 Ficha 4 Ficha 5 Ficha 6 Ficha ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/EquipaDocente2017-07-05T11:34:16ZEquipa docente Nuno Oliveira Pacheco Proença Neves página criada por JoseNunoOliveira 02 Feb 2017 (last changed by JoseNunoOliveira)JoseNunoOliveiraAtendimentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Atendimento2017-06-12T19:26:23ZHorário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ... (last changed by JoseNunoOliveira)JoseNunoOliveiraBibliografiahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Bibliografia2017-05-05T18:01:09ZBibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ... (last changed by JoseNunoOliveira)JoseNunoOliveiraRegimeAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/RegimeAvaliacao2017-03-16T21:18:55ZRegime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ... (last changed by JoseNunoOliveira)JoseNunoOliveiraHorarioSalasDocenteshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/HorarioSalasDocentes2017-02-16T18:09:05ZHorário e turnos Curso Turno Dia Hora Sala Docente MiEI T1 2a feira 16H00 17H00 CPI A4 J.N. Oliveira ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Calendario2017-02-03T15:29:18ZSumários da disciplina Actualização contínua no calendário: JoseNunoOliveira 03 Feb 2017 (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebPreferences2017-02-01T19:03:34ZEducation/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebCss2007-02-16T14:32:59Z.natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs { width:0px; height:0px; overflow:hidden; } .avisos { color: #444; font size ... (last changed by AlcinoCunha)AlcinoCunhaWebTopBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunha
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ...
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ...
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ...
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ...
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ...
Bem vindo à página da edição de 2016/17 da disciplina de Cálculo de Programas.
Eu chamo-me José Nuno Oliveira e sou o responsável por esta disciplina, que conta com uma
equipa
de docentes qualificados na investigação de métodos que, como os que se leccionam nesta disciplina, estão na base da abordagem científica ao desenvolvimento de software.
Todos fazemos parte do Laboratório HASLab (High-Assurance Software Laboratory) onde se encontra consolidado know-how em métodos formais de programação desde há mais de 30 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 de forma sistemática e reflectida, capaz de evitar ao máximo 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 introduzir erros.
A Universidade do Minho tem uma longa tradição neste tipo de ensino.
Prestes a completar 20 anos de leccionação,
Cálculo de Programas é uma das cadeiras que ensinam tais competências. Mais do que tecnologia ensina-se método, que é afinal aquilo que a maioria dos programadores não tem de facto.
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
Para ver todas as edições da disciplina entrar aqui.
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ...
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ...
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ...
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/CP1617 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
Related topics:WebChangesAlert, TWikiUsers, TWikiRegistration
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Natural Skin configuration
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/CP1617.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT = Cálculo de Programas
Set SITEMAPUSETO = Mestrado Integrado em Engenharia Informática e Ciências da Computação
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/CP1617 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617
The Education/CP1617 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/CP1617
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebHome
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)2019-07-16T15:15:43ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Alunos
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ... (last changed by JoseNunoOliveira)2019-07-07T09:13:16ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Avisos
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ... (last changed by JoseNunoOliveira)2018-04-20T12:01:45ZJoseNunoOliveiraWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebSideBar
Tópicos Apresentação Atendimento Avaliação / alunos Sumários Material Contacto Horário Docentes Regime de Avalia ... (last changed by JoseNunoOliveira)2018-02-01T11:48:17ZJoseNunoOliveiraMaterialPedagogico
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/MaterialPedagogico
Material Pedagógico Fichas das aulas práticas Ficha 1 (revisões de PF) Ficha 2 Ficha 3 Ficha 4 Ficha 5 Ficha 6 Ficha ... (last changed by JoseNunoOliveira)2017-08-28T08:35:23ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/EquipaDocente
Equipa docente Nuno Oliveira Pacheco Proença Neves página criada por JoseNunoOliveira 02 Feb 2017 (last changed by JoseNunoOliveira)2017-07-05T11:34:16ZJoseNunoOliveiraAtendimento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Atendimento
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ... (last changed by JoseNunoOliveira)2017-06-12T19:26:23ZJoseNunoOliveiraBibliografia
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Bibliografia
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ... (last changed by JoseNunoOliveira)2017-05-05T18:01:09ZJoseNunoOliveiraRegimeAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/RegimeAvaliacao
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ... (last changed by JoseNunoOliveira)2017-03-16T21:18:55ZJoseNunoOliveiraHorarioSalasDocentes
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/HorarioSalasDocentes
Horário e turnos Curso Turno Dia Hora Sala Docente MiEI T1 2a feira 16H00 17H00 CPI A4 J.N. Oliveira ... (last changed by JoseNunoOliveira)2017-02-16T18:09:05ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Calendario
Sumários da disciplina Actualização contínua no calendário: JoseNunoOliveira 03 Feb 2017 (last changed by JoseNunoOliveira)2017-02-03T15:29:18ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebPreferences
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2017-02-01T19:03:34ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebCss
.natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs { width:0px; height:0px; overflow:hidden; } .avisos { color: #444; font size ... (last changed by AlcinoCunha)2007-02-16T14:32:59ZAlcinoCunhaWebTopBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunha
As classificações constantes desta página foram removidas no final do ano lectivo.
Trabalho prático
Orais do TP: terão lugar na sala DI 0.04 (nova numeração), ver horário. Para evitar barulho e confusão, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
Grupos de TP/1617
Os alunos devem comunicar os respectivos grupos de trabalho (de três alunos cada) enviando ao docente responsável pela disciplina uma mensagem contendo o assunto CP/1617: grupo TP = {11111,22222,33333} onde 11111, 22222 e 33333 são os respectivos números mecanográficos.
Grupos comunicados:
Registam-se para já os pedidos de mudança de turno enviados ao docente responsável por esta disciplina.
As trocas só serão efectivas após validação pela DC:
a82880 <-> a67715
a78203 <-> a57127
A75614 <-> A71369
A77312 <-> A79021
A77789 <-> A79093
A75064 <-> A73236
a70363 <-> a67703 seguida de a67645 <-> a70363
Trocas enviadas pela DC:
Pedro Manuel Barbosa Almeida;A74301;CP-TP2;CP-TP1
Rui Alves Dos Santos;A67656;CP-TP1;CP-TP2
Filipe Nunes;a78074;CP-TP1;CP-TP5
Hugo Oliveira;a78565;CP-TP5;CP-TP1
Paula Pereira;a77672;CP-TP5;CP-TP1
Ana Rodrigues;a78763;CP-TP1;CP-TP5
-- Página criada por JoseNunoOliveira - 06 Feb 2017
Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo a equipa docente vinculada a dar uma resposta em tempo útil.
Durante o período de aulas: de acordo com o horário seguinte, sujeito a marcação verbal ou por email, com um mínimo de uma semana de antecedência, junto do respectivo docente:
Q01 - Ao compilar o trabalho deparámo-nos com o erro
cp1617t.lhs:358:27:
Not in scope: ‘nothing’
O que devemos fazer?R: Essa função pertence a Cp.hs. Devem "refrescar" as bibliotecas que estão no material pedagógico, pois foram evoluindo à medida que a discplina avançou.
Q02 - Não consigo definir funções com o padrão (n+1). O que devo fazer?R: Há duas soluções: ou adiciona {-# OPTIONS_GHC -XNPlusKPatterns #-} no início do código Haskell em cp1617t.lhs, ou interpreta o ficheiro como essa opção passada como parâmetro,
ghci -XNPlusKPatterns cp1617t.lhs
Q03 - No Problema 2 escreve-se que o "wrapper deverá ser um catamorfismo". O catamorfismo não deveria ser o "worker" e não o "wrapper"?R: Sim! É uma gralha: nesse texto, onde está "wrapper" deve ler-se "worker" (ver correcção feita sobre o PDF).
Q04 - No Problema 2 é obrigatório usar a lei de recursividade múltipla?R: Se se recomenda usá-la é porque é a melhor alternativa. Não se esqueçam que têm de apresentar os cálculos justificativos de como chegaram à vossa solução.
Q05 - No Problema 2 é pedido para apresentarmos os cálculos. O que é preciso fazer no LaTeX para reproduzir o "layout" dos raciocínios que aparecem nas fichas e nos apontamentos?R: Fazem assim: (a) ao ficheiro cp1617t.sty acrescentam, em qualquer sítio, as linhas
Q06 - Não percebemos o funcionamento da função 'lsplitB_tree'. Como é que a decisão sobre quantos elementos ficam na raiz, e.g., é tomada? E depois como são inseridos os restantes elementos?R: A função lsplitB_tree está para B_tree assim como qsep está para BTree (ver BTree.hs). Neste caso, só é possível guardar um valor em cada nó da árvore gerada, enquanto que em B_tree se pode guardar mais do que um. Portanto, em vez de se gerar uma BTree de procura, pode gerar-se uma B_tree de procura, com várias sub-árvores em cada nó e obter um 'quicksort' mais interessante.
Dá-se de seguida um exemplo que pode ajudar: o anamorfismo com gene lsplitB_tree aplicado à lista [7,16,5,6,12,9,21,18] deverá dar a árvore intermédia que a seguir se representa:
Q07 - Há alguma maneira de testarmos se a nossa função 'mirrorB_tree' está bem implementada?R: Naturalmente que essa função deve ser inversa de si própria. Outra forma de a verificarem é fazerem o seguinte teste, quando o problema estiver acabado. Como sabem,
qSort = cataBTree inord . anaBTree qsep.
no módulo BTree.hs. Se no meio do algoritmo colocarem invBTree a lista de entrada virá ordenada por ordem inversa. Ora invBTree corresponde à vossa mirrorB_tree.
Assim, se ao adaptarem este teste ao vosso quicksort sobre B_tree a lista de entrada não aparecer por ordem inversa, então a vossa mirrorB_tree não está a funcionar bem.
Q08 - Há alguma convenção uma para os testes quickCheck?R: O enunciado é omisso quanto a este ponto. No entanto, dá jeito que as funções quickcheck tenham o prefixo prop_XXX (desde que quickCheck prop_XXX tipe correctamente).
Q9 - Na alínea 4(c) da ficha nº 6, fiz os diagramas de cada catamorfismo e chego às definições das funções com variáveis através da lei universal-cata e consigo perceber que realmente fazem a mesma coisa; mas não sei se era assim que era suposto resolver...R: Não: isso mostra, mas não prova! O que queremos provar é que f=g, sendo ambas catamorfismos. Logo podemos usar a lei-universal aplicada a f ou g, à nossa escolha, por exemplo
g = ([ i,i ])
<=> { Universal-cata }
g.in = [i, i] . (id + g)
<=> { função constante i, fusão-+ etc, isomorfismo in/out }
g= i .[ id , g] . out
<=> { função constante i }
g = i
Agora basta verificar se i = f, pelo mesmo processo.
Q10 - Na questão nrº 5 da ficha 9, no terceiro passo, eu passei 'out' para o outro lado da igualdade,
<=> { eq-+ ; simplificação (propriedades dos números naturais)}
(g n).zero = i1(g n) . (+n) . (*n) = i2.(*n)
O que resta é usar a 2ª lei do condicional (mais propriedades dos naturais) para resolver as duas igualdades - façam-no. Não se esqueçam de um detalhe: a função 'bang' ( ! : A -> 1) é a identidade quando A = 1. (Porquê)
Q11 - Pretendemos desenhar diagramas de catamorfismos como aparecem nos apontamentos e nas fichas. O que temos de fazer?R: A package LaTeX para fazerem isso carrega-se adicionando
\usepackage[all]{xy}
ao preâmbulo. Há um extenso manual sobre esta package fácil de encontrar.
Fica disponível a função \xymatrix que é usada a seguir para desenhar um dos diagramas da ficha 6:
Agora é só adaptar ao caso concreto que querem desenhar.
Q12 - Qual é o formato em que apenas uma chaveta abrange duas equações, para colocar por exemplo o passo de passagem da lei de recursividade múltipla?R: Acrescentem ao preâmbulo as linhas
%format (lcbr (x)(y)) = "\begin{lcbr}" x "\\" y "\end{lcbr}"
\newenvironment{lcbr}{\left\{\begin{array}{l}}{\end{array}\right.}
Exemplo: |lcbr (id= g.f)(f.g=id)| na ficha 4.
Q13 - A utilização da função succ sem a aplicar a nenhuma variável resulta, em alguns contextos, num erro de geração do PDF.R: Isso deve-se ao facto de \succ no ficheiro auxiliar cp1617t.sty (linha 58) estar definido com um parâmetro. Sugere-se a re-definição (local)
%format succ = "\mathsf{succ}"
Q14 - Ao escrever as justificações tenho erros em, por exemplo, \just<=>{ texto }. Qual é o problema?R: Isso deve-se a <=> ser código Haskell e não código LaTeX. Resolve-se o erro escrevendo \just{|<=>|}{ texto }.
Q15 - Em relação à FAQ 12, funciona mas diz que o ambiente já está definido...R: Têm razão - a linha
já existe em cp1617t.sty; logo não faz falta.
Q16 - Nas justificações do problema 2 temos expressões muito grandes que saem fora da página. Como podemos resolver isso?R: Sugiro que usem algo do género
%format (longcond (c)(t)(e)) =
"\begin{array}{ll}\multicolumn{2}{l}{" c -> "}\\& " t ",\\& " e "\end{array}"
que divide um condicional em três linhas. (O texto acima todo numa linha: está partido em duas para o html não cortar o que não pode mostrar.)
Q17 - Ao justificarmos a recursividade multipla há 2 equações que, quando nelas introduzimos variáveis, acabamos com 4 equações. O que se sugere na FAQ 12 só dá para duas, como resolver este caso?R: Sugerem-se dois lcbr dentro de um lcbr (2 * 2 = 4).
28 Ago - Época especial: as classificações estão afixadas em Avaliação / alunos.
23-Jul - Publicada em Avaliação / alunos a correcção do exame de recurso (PDF)
17-Jul - Época especial: o exame terá lugar no dia / horas 25-Jul-2017 / 09h-11h, na sala CP2-204.
10 Jul - Esclarecimentos sobre nota do recurso - encontra-se assinalado no sumários o período em que o docente responsável pela disciplina está disponível para dar esclarecimentos sobre a nota do recurso.
10 Jul - Notas finais propostas: estão afixadas em Avaliação / alunos.
10 Jul - Notas do exame de recurso: estão afixadas em Avaliação / alunos.
8 Jul - Notas do exame de recurso (actualização): deverão ser afixadas durante a manhã de segunda feira em Avaliação / alunos.
29 Jun - Publicados em Avaliação / alunos os nomes dos alunos admitidos ao exame de recurso.
27 Jun - Esclarecimentos sobre nota do TP - encontram-se assinalados no sumários os períodos em que os docentes estão disponíveis para dar esclarecimentos sobre a nota do TP. Cada aluno /grupo deve procurar o docente que os avaliou.
26 Jun - Acabam de ser afixadas em Avaliação / alunos as notas dos TPs.
24 Jun - Notas dos TPs: deverão ser afixadas em Avaliação / alunos na próxima 2.a-feira dia 26-Jun.
24 Jun - Notas do teste de 1-Jun: estão afixadas, bem como o enunciado com a correcção, em Avaliação / alunos. Serão brevemente anunciadas aqui as datas / horas para alunos que queiram ver o teste.
23 Jun - Notas do teste de 1-Jun: serão amanhã afixadas em Avaliação / alunos.
15 Jun - Orais do TP: recomenda-se aos alunos que não têm fotografia no portal académico que a insiram rapidamente, pois com tantos alunos é impossível à equipa docente lembrar-se de quem são, o que pode vir a prejudicar a sua avaliação.
14 Jun - Orais do TP: terão lugar na sala DI 0.11, ver horário. Para evitar esperas desnecessárias, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
12 Jun - Entrega do TP: está aberta a partir das 12h de hoje a submissão do trabalho no portal http://www.di.uminho.pt/cp até às 23h59m do dia 13-Jun.
03 Jun - Entrega do TP (nova data): até às 23h59m do dia 13-Jun. Oportunamente serão dadas informações sobre o processo de submissão. As orais terão lugar nas tardes dos dias 16-Jun e 19-Jun.
31 Mai - Teste de 1-Jun, 16h, Cantina - informam-se os alunos de que podem trazer consigo, para consulta, o formulário, desde que sem anotações manuscritas; qualquer violação desta regra implica a sua recolha imediata.
20 Mai - Avisa-se que haverá uma aula teórica suplementar para LCC na próxima 4ª feira, dia 24 de Maio, das 16h-18h, no anfiteatro A5 do CP1.
10 Mai - Trabalho prático: relembram-se os alunos que devem consultar regularmente as FAQs que vão aparecendo na secção de Atendimento.
08 Mai - Em cumprimento do Despacho RT-29/2017, avisa-se que não haverá aulas desta disciplina na próxima 6ª feira dia 12 de Maio.
06 Mai - Publicada no Material a ficha nr.12, a preparar para as aulas TP da semana de 08-Mai.
05 Mai - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
02 Mai - Trabalho prático: os alunos devem consultar regularmente as FAQs que aparecerem na secção de Atendimento.
01 Mai - Publicada no Material a ficha nr.11, a preparar para as aulas TP da semana de 02-Mai.
28 Abr - Trabalho prático: enunciado e material publicados em Material.
23 Abr - Publicada no Material a ficha nr.10, a preparar para as aulas TP da semana de 24-Abr.
17 Abr - Publicada no Material a ficha nr.9, a preparar para as aulas TP da semana de 18-Abr.
1 Abr - Publicada no Material a ficha nr.8, a preparar para as aulas TP da semana de 3-Abr.
31 Mar - Avisa-se que não haverá aula teórica na próxima 2ª feira dia 3 de Abril (docente em serviço em Lisboa).
31 Mar - Publicadas no Material várias bibliotecas em Haskell de apoio ao estudo de catamorfismos e seu papel na programação.
25 Mar - Publicada no Material a ficha nr.7, a preparar para as aulas TP da semana de 27-Mar.
18 Mar - Publicada no Material a ficha nr.6, a preparar para as aulas TP da semana de 20-Mar.
16 Mar - Os alunos que pretendam usufruir da nota do TP do ano passado (cf. Regime de Avaliação) devem enviar ao responsável pela disciplina uma mensagem até 24-Abril; aqueles que o já tiverem feito não precisam de re-enviar mensagem.
13 Mar - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
11 Mar - Publicada no Material a ficha nr.5, a preparar para as aulas TP da semana de 13-Mar.
04 Mar - Publicada no Material a ficha nr.4, a preparar para as aulas TP da semana de 6-Mar.
25 Fev - Publicada no Material a ficha nr.3, a preparar para as aulas TP da semana de 27-Fev.
25 Fev - Não haverá aulas na terça-feira, dia 28, devido à tolerância de ponto (Despacho RT-14/2017)
18 Fev - Publicada no Material a ficha nr.2, a preparar para as aulas TP da semana de 20-Fev.
14 Fev - Mudança de sala: a partir de 17-Fev (inclusive) a aula teórica de LCC passa para o anfiteatro A2.
10 Fev - Publicada no Material a ficha nr.1, a estudar para as aulas TP da semana de 13-Fev.
1 Fev - Início das aulas: 6 de Fevereiro.
Na primeira semana só haverá aulas teóricas.
1 Fev - Criada esta página de avisos.
J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho. Os capítulos deste livro (em preparação) essenciais para esta disciplina no corrente ano lectivo são o segundo ( 321K), o terceiro ( 344K) e o quarto ( 273K).
Bibliografia complementar
A. Cunha. Cálculo de Programas: notas teórico-práticas. Departamento de Informática, Universidade do Minho, 2005. (290k).
R. Bird and O. de Moor. Algebra of Programming. Series in Computer Science. Prentice-Hall International, 1997. C. A. R. Hoare, series editor. BGUM 510.5-B
O material para realização do TP desta disciplina consta de um enunciado (cp1617t.pdf) e de um zip (cp1617t.zip) contendo a respectiva fonte (ficheiro cp1617t.lhs) + outros ficheiros auxiliares. Pressupõe-se que estão instaladas as biliotecas de Haskell abaixo referidas.
Os alunos devem começar por ler cp1617t.pdf para avaliarem o trabalho que há para fazer. Devem ainda deixar para o fim o último problema, cuja matéria só na semana que vem começará a ser leccionada.
google.hs - ilustração da arquitectura map-reduce que foi mostrada nas aulas.
demos.hs - contendo material auxiliar para a visualização em HTML da estrutura de dados virtual (intermédia) dos hilomorfismos qSort, hanoi, mSort etc das bibliotecas BTree.hs e LTree.hs. Experimentar qSort_vtree [6,3,9,1,7,18] e hanoi_vtree (True, 7), por exemplo. Encontrar-se-á a visualização no ficheiro _.html da directoria corrente.
Exp.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados expressões com variáveis que é usada em demos.hs.
FTree.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados árvores binárias completas (informação nos nós e nas folhas).
LTree.hs - biblioteca contendo os cata/ana/hilomorfismos do tipo de dados árvores binárias de folhas - LTree a = Leaf a | Fork (LTree a, LTree a) e aplicações suas (e.g. Fibonacci, duplo factorial, `merge-sort', etc).
BTree.hs - biblioteca para o tipo de dados árvores binárias - data BTree a = Empty | Node(a, (BTree a, BTree a)), e aplicações suas (e.g. torres de Hanói, `quick-sort', etc).
List.hs - biblioteca geral para listas em Haskell, contendo combinadores (e.g. catamorfismos) e exemplos de utilização.
Nat.hs - biblioteca de naturais (combinador ciclo-for, etc).
cp1617f02q3.hs - 'kit' de apoio à resolução da questão 3 da ficha 2.
Cp.hs - contendo os combinadores de base do cálculo de programas, e.g. split, ><, -|- etc.
A nota final terá uma componente teórica (T) e uma componente prática (TP).
O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral e valerá 40% da nota final. A nota TP mínima é 10 valores.
Os restantes 60% (T) serão avaliados num teste (ou exame de recurso) sem consulta. A nota T mínima é 8 valores.
Os grupos TP serão de 3 alunos cada. As notas TP são individuais, conforme prestação de cada aluno no trabalho e defesa oral.
Congelamento de notas TP: para os alunos que assim o desejarem, consideram-se congeladas as notas dos seus trabalhos de CP do ano passado (e apenas desse ano), sendo nesse caso usada a respectiva fórmula de cálculo.
Melhorias: só se podem fazer à parte T, caso o aluno tenha esse direito; para alunos de anos anteriores, a fórmula de cálculo é a do ano em que a nota a melhorar foi obtida.
Regime de Faltas
Adopta-se o regime geral em vigor na universidade.
-- JoseNunoOliveira - 05 Feb 2017
TWiki's Education/CP1617 webThe Education/CP1617 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617Copyright 2020 by contributing authors2020-10-30T14:39:08ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebStatistics2020-10-30T14:39:08ZStatistics for Education/CP1617 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebHome2019-07-16T15:15:43ZBenvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Alunos2019-07-07T09:13:16ZAlunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ... (last changed by JoseNunoOliveira)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Avisos2018-04-20T12:01:45Z28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebSideBar2018-02-01T11:48:17ZTópicos Apresentação Atendimento Avaliação / alunos Sumários Material Contacto Horário Docentes Regime de Avalia ... (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialPedagogicohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/MaterialPedagogico2017-08-28T08:35:23ZMaterial Pedagógico Fichas das aulas práticas Ficha 1 (revisões de PF) Ficha 2 Ficha 3 Ficha 4 Ficha 5 Ficha 6 Ficha ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/EquipaDocente2017-07-05T11:34:16ZEquipa docente Nuno Oliveira Pacheco Proença Neves página criada por JoseNunoOliveira 02 Feb 2017 (last changed by JoseNunoOliveira)JoseNunoOliveiraAtendimentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Atendimento2017-06-12T19:26:23ZHorário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ... (last changed by JoseNunoOliveira)JoseNunoOliveiraBibliografiahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Bibliografia2017-05-05T18:01:09ZBibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ... (last changed by JoseNunoOliveira)JoseNunoOliveiraRegimeAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/RegimeAvaliacao2017-03-16T21:18:55ZRegime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ... (last changed by JoseNunoOliveira)JoseNunoOliveiraHorarioSalasDocenteshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/HorarioSalasDocentes2017-02-16T18:09:05ZHorário e turnos Curso Turno Dia Hora Sala Docente MiEI T1 2a feira 16H00 17H00 CPI A4 J.N. Oliveira ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Calendario2017-02-03T15:29:18ZSumários da disciplina Actualização contínua no calendário: JoseNunoOliveira 03 Feb 2017 (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebPreferences2017-02-01T19:03:34ZEducation/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebCss2007-02-16T14:32:59Z.natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs { width:0px; height:0px; overflow:hidden; } .avisos { color: #444; font size ... (last changed by AlcinoCunha)AlcinoCunhaWebTopBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunha
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ...
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ...
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ...
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ...
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ...
Bem vindo à página da edição de 2016/17 da disciplina de Cálculo de Programas.
Eu chamo-me José Nuno Oliveira e sou o responsável por esta disciplina, que conta com uma
equipa
de docentes qualificados na investigação de métodos que, como os que se leccionam nesta disciplina, estão na base da abordagem científica ao desenvolvimento de software.
Todos fazemos parte do Laboratório HASLab (High-Assurance Software Laboratory) onde se encontra consolidado know-how em métodos formais de programação desde há mais de 30 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 de forma sistemática e reflectida, capaz de evitar ao máximo 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 introduzir erros.
A Universidade do Minho tem uma longa tradição neste tipo de ensino.
Prestes a completar 20 anos de leccionação,
Cálculo de Programas é uma das cadeiras que ensinam tais competências. Mais do que tecnologia ensina-se método, que é afinal aquilo que a maioria dos programadores não tem de facto.
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
Para ver todas as edições da disciplina entrar aqui.
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ...
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ...
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ...
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/CP1617 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
Related topics:WebChangesAlert, TWikiUsers, TWikiRegistration
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Natural Skin configuration
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/CP1617.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT = Cálculo de Programas
Set SITEMAPUSETO = Mestrado Integrado em Engenharia Informática e Ciências da Computação
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/CP1617 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617
The Education/CP1617 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/CP1617
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebHome
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2016/17 da disciplina de de Programas. Eu chamo me Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)2019-07-16T15:15:43ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Alunos
Alunos As classificações constantes desta página foram removidas no final do ano lectivo. Trabalho prático Orais do TP: terão lugar na sala DI 0.04 (nova numeraç ... (last changed by JoseNunoOliveira)2019-07-07T09:13:16ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Avisos
28 Ago Época especial : as classificações estão afixadas em Avaliação / alunos. 23 Jul Publicada em Avaliação / alunos a correcção do exame de recurso (PDF ... (last changed by JoseNunoOliveira)2018-04-20T12:01:45ZJoseNunoOliveiraWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebSideBar
Tópicos Apresentação Atendimento Avaliação / alunos Sumários Material Contacto Horário Docentes Regime de Avalia ... (last changed by JoseNunoOliveira)2018-02-01T11:48:17ZJoseNunoOliveiraMaterialPedagogico
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/MaterialPedagogico
Material Pedagógico Fichas das aulas práticas Ficha 1 (revisões de PF) Ficha 2 Ficha 3 Ficha 4 Ficha 5 Ficha 6 Ficha ... (last changed by JoseNunoOliveira)2017-08-28T08:35:23ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/EquipaDocente
Equipa docente Nuno Oliveira Pacheco Proença Neves página criada por JoseNunoOliveira 02 Feb 2017 (last changed by JoseNunoOliveira)2017-07-05T11:34:16ZJoseNunoOliveiraAtendimento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Atendimento
Horário de Atendimento Em qualquer altura: via correio electrónico pressionando aqui. Qualquer outro meio de contacto será considerado informal, não se sentindo ... (last changed by JoseNunoOliveira)2017-06-12T19:26:23ZJoseNunoOliveiraBibliografia
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Bibliografia
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ... (last changed by JoseNunoOliveira)2017-05-05T18:01:09ZJoseNunoOliveiraRegimeAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/RegimeAvaliacao
Regime de Avaliação A nota final terá uma componente teórica (T) e uma componente prática (TP). O trabalho de grupo (TP) é obrigatório, será avaliado em prova oral ... (last changed by JoseNunoOliveira)2017-03-16T21:18:55ZJoseNunoOliveiraHorarioSalasDocentes
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/HorarioSalasDocentes
Horário e turnos Curso Turno Dia Hora Sala Docente MiEI T1 2a feira 16H00 17H00 CPI A4 J.N. Oliveira ... (last changed by JoseNunoOliveira)2017-02-16T18:09:05ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/Calendario
Sumários da disciplina Actualização contínua no calendário: JoseNunoOliveira 03 Feb 2017 (last changed by JoseNunoOliveira)2017-02-03T15:29:18ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebPreferences
Education/CP1617 Web Preferences The following settings are web preferences of the Education/CP1617 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2017-02-01T19:03:34ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebCss
.natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs { width:0px; height:0px; overflow:hidden; } .avisos { color: #444; font size ... (last changed by AlcinoCunha)2007-02-16T14:32:59ZAlcinoCunhaWebTopBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1617/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunha
28 Ago - Época especial: as classificações estão afixadas em Avaliação / alunos.
23-Jul - Publicada em Avaliação / alunos a correcção do exame de recurso (PDF)
17-Jul - Época especial: o exame terá lugar no dia / horas 25-Jul-2017 / 09h-11h, na sala CP2-204.
10 Jul - Esclarecimentos sobre nota do recurso - encontra-se assinalado no sumários o período em que o docente responsável pela disciplina está disponível para dar esclarecimentos sobre a nota do recurso.
10 Jul - Notas finais propostas: estão afixadas em Avaliação / alunos.
10 Jul - Notas do exame de recurso: estão afixadas em Avaliação / alunos.
8 Jul - Notas do exame de recurso (actualização): deverão ser afixadas durante a manhã de segunda feira em Avaliação / alunos.
29 Jun - Publicados em Avaliação / alunos os nomes dos alunos admitidos ao exame de recurso.
27 Jun - Esclarecimentos sobre nota do TP - encontram-se assinalados no sumários os períodos em que os docentes estão disponíveis para dar esclarecimentos sobre a nota do TP. Cada aluno /grupo deve procurar o docente que os avaliou.
26 Jun - Acabam de ser afixadas em Avaliação / alunos as notas dos TPs.
24 Jun - Notas dos TPs: deverão ser afixadas em Avaliação / alunos na próxima 2.a-feira dia 26-Jun.
24 Jun - Notas do teste de 1-Jun: estão afixadas, bem como o enunciado com a correcção, em Avaliação / alunos. Serão brevemente anunciadas aqui as datas / horas para alunos que queiram ver o teste.
23 Jun - Notas do teste de 1-Jun: serão amanhã afixadas em Avaliação / alunos.
15 Jun - Orais do TP: recomenda-se aos alunos que não têm fotografia no portal académico que a insiram rapidamente, pois com tantos alunos é impossível à equipa docente lembrar-se de quem são, o que pode vir a prejudicar a sua avaliação.
14 Jun - Orais do TP: terão lugar na sala DI 0.11, ver horário. Para evitar esperas desnecessárias, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
12 Jun - Entrega do TP: está aberta a partir das 12h de hoje a submissão do trabalho no portal http://www.di.uminho.pt/cp até às 23h59m do dia 13-Jun.
03 Jun - Entrega do TP (nova data): até às 23h59m do dia 13-Jun. Oportunamente serão dadas informações sobre o processo de submissão. As orais terão lugar nas tardes dos dias 16-Jun e 19-Jun.
31 Mai - Teste de 1-Jun, 16h, Cantina - informam-se os alunos de que podem trazer consigo, para consulta, o formulário, desde que sem anotações manuscritas; qualquer violação desta regra implica a sua recolha imediata.
20 Mai - Avisa-se que haverá uma aula teórica suplementar para LCC na próxima 4ª feira, dia 24 de Maio, das 16h-18h, no anfiteatro A5 do CP1.
10 Mai - Trabalho prático: relembram-se os alunos que devem consultar regularmente as FAQs que vão aparecendo na secção de Atendimento.
08 Mai - Em cumprimento do Despacho RT-29/2017, avisa-se que não haverá aulas desta disciplina na próxima 6ª feira dia 12 de Maio.
06 Mai - Publicada no Material a ficha nr.12, a preparar para as aulas TP da semana de 08-Mai.
05 Mai - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
02 Mai - Trabalho prático: os alunos devem consultar regularmente as FAQs que aparecerem na secção de Atendimento.
01 Mai - Publicada no Material a ficha nr.11, a preparar para as aulas TP da semana de 02-Mai.
28 Abr - Trabalho prático: enunciado e material publicados em Material.
23 Abr - Publicada no Material a ficha nr.10, a preparar para as aulas TP da semana de 24-Abr.
17 Abr - Publicada no Material a ficha nr.9, a preparar para as aulas TP da semana de 18-Abr.
1 Abr - Publicada no Material a ficha nr.8, a preparar para as aulas TP da semana de 3-Abr.
31 Mar - Avisa-se que não haverá aula teórica na próxima 2ª feira dia 3 de Abril (docente em serviço em Lisboa).
31 Mar - Publicadas no Material várias bibliotecas em Haskell de apoio ao estudo de catamorfismos e seu papel na programação.
25 Mar - Publicada no Material a ficha nr.7, a preparar para as aulas TP da semana de 27-Mar.
18 Mar - Publicada no Material a ficha nr.6, a preparar para as aulas TP da semana de 20-Mar.
16 Mar - Os alunos que pretendam usufruir da nota do TP do ano passado (cf. Regime de Avaliação) devem enviar ao responsável pela disciplina uma mensagem até 24-Abril; aqueles que o já tiverem feito não precisam de re-enviar mensagem.
13 Mar - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
11 Mar - Publicada no Material a ficha nr.5, a preparar para as aulas TP da semana de 13-Mar.
04 Mar - Publicada no Material a ficha nr.4, a preparar para as aulas TP da semana de 6-Mar.
25 Fev - Publicada no Material a ficha nr.3, a preparar para as aulas TP da semana de 27-Fev.
25 Fev - Não haverá aulas na terça-feira, dia 28, devido à tolerância de ponto (Despacho RT-14/2017)
18 Fev - Publicada no Material a ficha nr.2, a preparar para as aulas TP da semana de 20-Fev.
14 Fev - Mudança de sala: a partir de 17-Fev (inclusive) a aula teórica de LCC passa para o anfiteatro A2.
10 Fev - Publicada no Material a ficha nr.1, a estudar para as aulas TP da semana de 13-Fev.
1 Fev - Início das aulas: 6 de Fevereiro.
Na primeira semana só haverá aulas teóricas.
1 Fev - Criada esta página de avisos.
28 Ago - Época especial: as classificações estão afixadas em Avaliação / alunos.
23-Jul - Publicada em Avaliação / alunos a correcção do exame de recurso (PDF)
17-Jul - Época especial: o exame terá lugar no dia / horas 25-Jul-2017 / 09h-11h, na sala CP2-204.
10 Jul - Esclarecimentos sobre nota do recurso - encontra-se assinalado no sumários o período em que o docente responsável pela disciplina está disponível para dar esclarecimentos sobre a nota do recurso.
10 Jul - Notas finais propostas: estão afixadas em Avaliação / alunos.
10 Jul - Notas do exame de recurso: estão afixadas em Avaliação / alunos.
8 Jul - Notas do exame de recurso (actualização): deverão ser afixadas durante a manhã de segunda feira em Avaliação / alunos.
29 Jun - Publicados em Avaliação / alunos os nomes dos alunos admitidos ao exame de recurso.
27 Jun - Esclarecimentos sobre nota do TP - encontram-se assinalados no sumários os períodos em que os docentes estão disponíveis para dar esclarecimentos sobre a nota do TP. Cada aluno /grupo deve procurar o docente que os avaliou.
26 Jun - Acabam de ser afixadas em Avaliação / alunos as notas dos TPs.
24 Jun - Notas dos TPs: deverão ser afixadas em Avaliação / alunos na próxima 2.a-feira dia 26-Jun.
24 Jun - Notas do teste de 1-Jun: estão afixadas, bem como o enunciado com a correcção, em Avaliação / alunos. Serão brevemente anunciadas aqui as datas / horas para alunos que queiram ver o teste.
23 Jun - Notas do teste de 1-Jun: serão amanhã afixadas em Avaliação / alunos.
15 Jun - Orais do TP: recomenda-se aos alunos que não têm fotografia no portal académico que a insiram rapidamente, pois com tantos alunos é impossível à equipa docente lembrar-se de quem são, o que pode vir a prejudicar a sua avaliação.
14 Jun - Orais do TP: terão lugar na sala DI 0.11, ver horário. Para evitar esperas desnecessárias, os alunos só deverão chegar à sala quando se aproximar o seu "slot" de apresentação.
12 Jun - Entrega do TP: está aberta a partir das 12h de hoje a submissão do trabalho no portal http://www.di.uminho.pt/cp até às 23h59m do dia 13-Jun.
03 Jun - Entrega do TP (nova data): até às 23h59m do dia 13-Jun. Oportunamente serão dadas informações sobre o processo de submissão. As orais terão lugar nas tardes dos dias 16-Jun e 19-Jun.
31 Mai - Teste de 1-Jun, 16h, Cantina - informam-se os alunos de que podem trazer consigo, para consulta, o formulário, desde que sem anotações manuscritas; qualquer violação desta regra implica a sua recolha imediata.
20 Mai - Avisa-se que haverá uma aula teórica suplementar para LCC na próxima 4ª feira, dia 24 de Maio, das 16h-18h, no anfiteatro A5 do CP1.
10 Mai - Trabalho prático: relembram-se os alunos que devem consultar regularmente as FAQs que vão aparecendo na secção de Atendimento.
08 Mai - Em cumprimento do Despacho RT-29/2017, avisa-se que não haverá aulas desta disciplina na próxima 6ª feira dia 12 de Maio.
06 Mai - Publicada no Material a ficha nr.12, a preparar para as aulas TP da semana de 08-Mai.
05 Mai - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
02 Mai - Trabalho prático: os alunos devem consultar regularmente as FAQs que aparecerem na secção de Atendimento.
01 Mai - Publicada no Material a ficha nr.11, a preparar para as aulas TP da semana de 02-Mai.
28 Abr - Trabalho prático: enunciado e material publicados em Material.
23 Abr - Publicada no Material a ficha nr.10, a preparar para as aulas TP da semana de 24-Abr.
17 Abr - Publicada no Material a ficha nr.9, a preparar para as aulas TP da semana de 18-Abr.
1 Abr - Publicada no Material a ficha nr.8, a preparar para as aulas TP da semana de 3-Abr.
31 Mar - Avisa-se que não haverá aula teórica na próxima 2ª feira dia 3 de Abril (docente em serviço em Lisboa).
31 Mar - Publicadas no Material várias bibliotecas em Haskell de apoio ao estudo de catamorfismos e seu papel na programação.
25 Mar - Publicada no Material a ficha nr.7, a preparar para as aulas TP da semana de 27-Mar.
18 Mar - Publicada no Material a ficha nr.6, a preparar para as aulas TP da semana de 20-Mar.
16 Mar - Os alunos que pretendam usufruir da nota do TP do ano passado (cf. Regime de Avaliação) devem enviar ao responsável pela disciplina uma mensagem até 24-Abril; aqueles que o já tiverem feito não precisam de re-enviar mensagem.
13 Mar - Publicado na Bibliografia mais um capítulo (344K) dos apontamentos.
11 Mar - Publicada no Material a ficha nr.5, a preparar para as aulas TP da semana de 13-Mar.
04 Mar - Publicada no Material a ficha nr.4, a preparar para as aulas TP da semana de 6-Mar.
25 Fev - Publicada no Material a ficha nr.3, a preparar para as aulas TP da semana de 27-Fev.
25 Fev - Não haverá aulas na terça-feira, dia 28, devido à tolerância de ponto (Despacho RT-14/2017)
18 Fev - Publicada no Material a ficha nr.2, a preparar para as aulas TP da semana de 20-Fev.
14 Fev - Mudança de sala: a partir de 17-Fev (inclusive) a aula teórica de LCC passa para o anfiteatro A2.
10 Fev - Publicada no Material a ficha nr.1, a estudar para as aulas TP da semana de 13-Fev.
1 Fev - Início das aulas: 6 de Fevereiro.
Na primeira semana só haverá aulas teóricas.
1 Fev - Criada esta página de avisos.