De acordo com a informação enviada pela Direcção de Curso (listagem ordenada por número de aluno):
Nr
Curso
Turno TP
43499
LCC
TP1
43538
LCC
TP2
43548
LCC
TP2
47423
LCC
TP1
48410
LCC
TP1
50190
LCC
TP2
51060
LCC
TP1
51141
LCC
TP2
51152
LCC
TP1
52815
LCC
TP2
52822
LCC
TP1
52829
LCC
TP2
52834
LCC
TP1
52839
LCC
TP2
52841
LCC
TP2
52846
LCC
TP1
53971
LCC
TP1
54065
LCC
TP2
54080
LCC
TP2
55842
LCC
TP1
55846
LCC
TP1
55864
LCC
TP2
55873
LCC
TP1
55878
LCC
TP2
55894
LCC
TP2
55895
LCC
TP2
57153
LCC
TP1
58882
LCC
TP1
58884
LCC
TP2
58886
LCC
TP1
58887
LCC
TP1
58891
LCC
TP2
58892
LCC
TP1
58901
LCC
TP2
58902
LCC
TP2
58904
LCC
TP2
58912
LCC
TP2
60067
LCC
TP1
60072
LCC
TP2
60407
LCC
TP1
62121
LCC
TP2
62122
LCC
TP1
62123
LCC
TP1
62128
LCC
TP2
62131
LCC
TP1
62134
LCC
TP1
62142
LCC
TP2
62143
LCC
TP2
62147
LCC
TP2
62154
LCC
TP1
62157
LCC
TP2
62161
LCC
TP1
62847
LCC
TP1
63045
LCC
TP1
63374
LCC
TP1
63379
LCC
TP1
63389
LCC
TP1
63390
LCC
TP2
63391
LCC
TP1
65430
LCC
TP1
65431
LCC
TP1
65439
LCC
TP1
65445
LCC
TP2
65447
LCC
TP1
65449
LCC
TP1
66695
LCC
TP1
66696
LCC
TP1
66699
LCC
TP1
Turnos TP (LEI)
Apresenta-se em baixo a proposta elaborada em conjunto pela equipa docente e pela direcção de curso de LEI para constituição de base dos turnos TP de LEI nesta disciplina.
Os alunos poderão mudar de turno por troca. Para isso deverá ser enviada uma mensagem para o docente responsável contendo, obrigatoriamente, o assunto CP/1213: mudança de turno e o texto a88888 <-> a99999, em que os "dummies" 88888 e 99999 indicam de forma inequívoca os números dos alunos que trocam entre si.
Só se aceitarão como pedidos de troca mensagens que sejam enviadas a partir do endereço institucional de um dos alunos, com cópia para o endereço institucional do outro aluno envolvido na troca.
O prazo limite para se atenderem pedidos de troca é segunda feira, dia 18-Fev, inclusive.
A listagem da constituição dos turnos que se segue está ordenada por número de aluno:
24 Set - Notas do exame da época especial : estão publicadas em Alunos.
08 Set - Exame da época especial (LCC+LEI): 12-Set, 09h00, Sala CP2-304.
30 Ago - Exame da época especial (LCC+LEI): Sala a anunciar, 12-Set de manhã.
23 Jul - Classificações finais (à data da época de recurso): estão publicadas em Alunos.
21 Jul - Classificações à data da época de recurso: disponíveis em Alunos. Quem tiver nota negativa igual ou superior a 8 valores poderá submeter-se a exame oral. As orais terão lugar 3ª-feira, dia 23-Jul, das 14h às 17h, na sala DI 0.02.
20 Jul - Classificações (época de recurso): serão publicadas em Alunos antes de 22-Jul.
06 Jul - Os alunos deverão continuar a estar atentos à secção de FAQs do Material Pedagógico.
29 Jun - Classificações à data da época normal: estão publicadas em Alunos.
15 Jun - Algumas dúvidas frequentes encontram-se respondidas na secção de FAQs do Material Pedagógico.
11 Jun - Mini-teste de 22-Mai: no Material Pedagógico encontra-se o enunciado agora com correcção.
11 Jun - A aula suplementar do turmo LEI-TP3 (14-Jun) será às 10h-12h (sala DIUM 1.08) e não às 14h-16h como inicialmente previsto.
10 Jun - Classificações do mini-teste: estão publicadas em Alunos.
06 Jun - Aulas de substituição (LCC-TP2) e de dúvidas (LEI TP1,TP4,TP5): ver Sumários.
06 Jun - Chama-se a atenção dos alunos para o preenchimento na intranet dos inquéritos pedagógicos até 3-Jul 2013.
04 Jun - Aula de substituição (LEI-TP3): terá lugar na sala DIUM 1.08 no dia 7-Jun, 09h-11h.
03 Jun - Aula de substituição (LCC-T1): terá lugar no anfiteatro DIUM A.2 dia 5-Jun, 16h-18h.
02 Jun - Publicada no Material Pedagógico a ficha nr.12, destinada às aulas práticas da última semana de aulas.
30 Mai - Devido a um imprevisto, terão que ser canceladas duas aulas de amanhã, 31-Maio, a saber: LEI-TP3 [CPII - C2/205] e LCC-T1 [CPII - C2/202]. Oportunamente se fará uma proposta para a sua reposição.
26 Mai - Publicada no Material Pedagógico a ficha nr.11, destinada às aulas práticas desta semana.
09 Mai - Turnos LEI-TP4 e LEI-TP5 - pf ver em Sumários as aulas de substituição das que não houve no passado dia 7-Mai (atenção às salas, também).
06 Mai - Miniteste do dia 22-Maio: a matéria a avaliar vai até à Ficha nr.9 inclusivé. Ver hora e salas nos Sumários.
04 Mai - Publicada no Material Pedagógico a ficha nr.10, destinada às aulas práticas da semana que começa a 6-Mai.
27 Abr - Publicada no Material Pedagógico a ficha nr.9, destinada às aulas práticas da semana que começa a 29-Abr.
23 Abr - De novo devido a uma reunião na instituição, o docente do turno LEI/TP2 é forçado a adiar para 8-Maio, às 14h, no anfiteatro DI-A2, a aula suplementar inicialmente prevista para amanhã - ver Sumários.
20 Abr - Publicada no Material Pedagógico a ficha nr.8, destinada às aulas práticas da semana que começa a 22-Abr.
17 Abr - Devido a uma reunião do Conselho Científico da Escola de Engenharia, a que o docente do turno LEI/TP2 pertence, só poderá dar-se início à aula de substituição desta tarde às 17h, no mesmo anfiteatro.
14 Abr - Publicada no Material Pedagógico a ficha nr.7, destinada às aulas práticas da semana que começa a 15-Abr.
13 Abr - Turno LCC/TP1: atenção ao novo calendário das aulas de substituição, conforme se indica nos Sumários.
13 Abr - Notícia: School of Haskell Goes Public06 Abr - Publicada no Material Pedagógico a ficha nr.6, destinada às aulas práticas da semana que começa a 8-Abr.
04 Abr - Aulas dos turnos LCC/TP1 e LEI/TP2: devido a um imprevisto e a uma missão no estrangeiro as aulas desta e da próxima semana não terão lugar, sendo substituídas conforme se indica nos Sumários.
04 Abr - Alunos incontactáveis - ver Alunos.
27 Mar - Publicada no Material Pedagógico a ficha nr.5, destinada às aulas práticas da semana que começa a 2-Abr.
20 Mar - Aulas de compensação (turnos LCC/TP1 e LEI/TP2): Tal como foi sendo anunciado nos Sumários, as aulas em falta na semana passada serão compensadas esta tarde, nos horários aí anunciados.
15 Mar - Publicada no Material Pedagógico a ficha nr.4, destinada às aulas práticas da semana que começa a 18-Mar.
08 Mar - Publicada no Material Pedagógico a ficha nr.3, destinada às aulas práticas da semana que começa a 11-Mar.
03 Mar - Publicada no Material Pedagógico a ficha nr.2, destinada às aulas práticas da semana que começa a 04-Mar.
22 Fev - Publicada no Material Pedagógico a ficha nr.1, destinada às aulas práticas da semana que começa a 25-Fev.
14 Fev - Datas das avaliações: ver Sumários8 Fev - Turnos TP (LEI): ver Alunos7 Fev - Fotografias: os alunos que não têm fotografia no portal académico devem tratar de a disponibilizar o mais rapidamente possível. A falta de fotografia pode comprometer a componente de avaliação contínua desta disciplina.
6 Fev - Horário e turnos - ver Horário.
6 Fev - As aulas terão início a 18-Fev-2013.
6 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 são o segundo (920K), o terceiro (530K) e o quarto (258K ).
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
Formato PDF : a disponibilizar oportunamente
Formato ICS : a disponibilizar oportunamente
Actualização contínua no calendário:
-- JoseNunoOliveira - 06 Feb 2013
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 junto do respectivo docente:
Essa marcação deve ser feita com um mínimo de uma semana de antecedência.
Atendimento electrónico (FAQs)
Q1 - Estou com dúvidas no exercício na última questão do teste de 2010/11: não tenho ideia de como pegar!R: Não é de admirar: este ano não demos esta matéria, que corresponde à secção 4.10 do capítulo sobe mónades. Mas não é difícil e, para quem estiver interessado, há também estes slides: Monadification made easier.
Q2 - Estou sem conseguir resolver a questão 8 do teste do ano passado: definir um anamorfismo de naturais como um catamorfismo de listas. Tentei usar a lei universal-ana(44) mas fiquei bloqueado a meio.R: Sim, universal-ana (naturais) é bom começo (expandindo out = [nil,cons]º ):
f = [( (id+p2). [nil,cons]º )]
== { universal-ana (naturais); álgebra in dos naturais é [0,succ] }
f = in. (id + f ) . (id+p2). [nil,cons]º
== { passando isomorfismo [nil,cons]º para o outro lado, "trocando o sinal" }
f . [nil,cons] = in. (id + f ) . (id+p2)
== { ... }
Aqui começa a preparação das coisas para termos f como catamorfismo de listas: fica como exercício.
A dificuldade desta questão é que começa com um anamorfismo de naturais (F f = id + f) e termina com um catamorfismo de listas (F f = id + id x f). A mudança de F dá-se a partir do ponto em que se parou acima. Como sempre, as propriedades naturais não se devem ignorar (neste caso a do p2).
Q3 - Na questão 7 do exame de recurso do ano passado não percebo a primeira parte: instanciar com a função fac a função lms.R: O que se pretende é resolver a equação
fac = lms p g h i j
em ordem às variáveis p, g, h, i, j - o que é a mesma coisa que encontrar essas funções na equação
fac = p -> g, h.<i,fac.j>
Partimos da definição de fac sem variáveis (onde 1 representa a função constante 1, (const 1)):
fac.in = [1,mul.<succ,fac>]
== { passagem de in para o outro lado (isomorfismo) ; out dos naturais }
fac = [1,mul.<succ,fac>].((=0) -> i1.!,i2.pred)
== { lei do condicional que facilmente se identifica }
fac = (=0) -> [1,mul.<succ,fac>].i1.!, [1,mul.<succ,fac>].i2.pred
Sugestão: corram esta versão no interpretador de Haskell.
Q4 - Tenho dificuldades ao provar a igualdade f.g=id na questão 6b da Ficha 2.R: Ver resolução do miniteste, onde se faz essa prova para o caso dual, com injecções e eithers em lugar
de projecções e splits: o argumento é em tudo semelhante.
Q5 - Tenho dificuldades a resolver a questão 6 da Ficha 3.R: O diagrama representa a equação
[x,y] = [k,g].(id+id >< f)
que se quer resolver em ordem a x e y. Por absorção (etc), o lado direito fica [k,g.(id >< f)] ; pela igualdade de eithers tem-se, de imediato,
x = k
y = g.(id >< f)
Quanto aos pontos de interrogação, comecemos pelo tipo genérico da seta vertical, que é a soma de uma identidade com um produto:
A + (B >< C) <-- id + (id >< f) -- A + (B >< D)
(repetimos A e B por estarem ligados a identidades). Como nada sabemos sobre k e g, ter-se-á
E <--- [k,g] --- A + (B >< C)
Logo, os pontos de interrogação são os tipos genéricos (paramétricos) A + (B >< D) (em cima); E (em baixo, à esquerda) e A + (B >< C) (à direita).
Q6 - Na questão 2a da Ficha 5, o isomorfismo pretendido parte de uma soma para um produto, logo posso usar tanto um split como um either. Qual devo escolher?R: Pela lei da troca, as suas soluções são idênticas. (Se se pretender depois escrever a função em Haskell,
a conversão é mais simples se se optar pelo combinador either). Detalha-se a seguir essa versão: designemos o isomorfismo por iso, que vamos decompor em iso = [f,g], com tipos, f : A >< B -> A >< (B+1) e g : A -> A >< (B+1). Tanto f como g vão para produtos e como tal serão splits. Começando por g = <g1,g2>, g1 = id e g2 tem tipo A -> B+1. Como nada sabemos sobre B, g2 terá que dar o seu resultado em 1, injectando-o à direita: g2 = i2.!. Um processo semelhante decomporá f em id >< i1. Juntando tudo:
iso = [(id >< i1),<id,i2.!>]
Q7 - No exercício 7 (parte 2 do teste de 2010/2011) tentei chegar da função escrita em Haskell à versão point-free mas não consegui.R: Escolheu a versão mais complicada, já que no sentido inverso é mais simples: faça absorção-cata no lado direito para obter
hwmny p = ([ g ])
(aqui o objectivo é calcular o gene g do catamorfismo). Depois, dessa equação, deriva hwmny p usando a lei universal-cata
e introduzindo variáveis no fim. Importante: como o tipo em causa é LTree, in = [Leaf, Fork] e o functor de base a usar na lei de
absorção-cata é B(f,g) = f + g >< g - ver baseLTree no ficheiro LTree.hs.
Q8 - Não percebo bem o que se pretende na questão 4 da Ficha nº 5.R: A questão resume-se a tentar calcular o tipo polimórfico do combinador comb f g,
para qualquer f e g à entrada. Temos que comb f g = <f,[g,f]>. Sejam então dadas f : A->B e g : C -> D. Ter-se-á de imediato: [g,f] : (C + A) -> B, já que B=D na construção do either.
Agora derive-se o tipo do split<f,[g,f]>. Para isso é preciso que f e [g,f] tenham o mesmo tipo de entrada, isto é, terá que verificar-se:
A = C + A
Ora esta equação define A como um tipo recursivo: mas, se substituirmos A por
C+A e assim sucessivamente, teremos A = C + (C + (C + ...)),
isto é, A é um tipo infinito: é esta, assim, a explicação para a mensagem de erro
que o interpretador de Haskell dá: "cannot construct the infinite type: a = Either c a".
Q9 - Na questão 5(a) da Ficha nº 5 eu escrevi Maybe A isomorfo a A + 1 e na 5(b) escrevi 1+1 isomorfo a Bool, mas não sei prosseguir com nenhum dos exercícios.R: Para acabar os exercícios tem que se lembrar da estrutura dos tipos Maybe e
Bool em Haskell: data Maybe a = Just a | Nothing e data Bool = False | True.
Repare nos tipos: Just :: a -> Maybe a e const Nothing :: () -> Maybe a,
const True :: () -> Bool e
const False :: () -> Bool.
Usando estas funções constantes é fácil definir os isomorfismos pedidos sob a forma de eithers.
Q10 - Na questão 4 da Ficha nº6 eu substitui as três ocorrências de exp pela sua definição mas não sei prosseguir...R: Sabendo-se que exp f = curry (f.ap), é conveniente olharmos para as leis da exponenciação primeiro
antes de fazermos substituições: para a lei fusão-exp (31) ser útil, basta começar por expandir apenas exp f:
(exp f) . (exp g) = exp(f.g)
== { definição de *exp f*}
(curry (f.ap)) . (exp g) = exp(f.g)
== { fusão-exp }
curry(f.ap.((exp g)><id)) = exp(f.g)
== { definição de *exp g*}
curry(f.ap.((curry (g.ap))><id)) = exp(f.g)
== { cancelamento-exp }
curry(f.(g.ap)) = exp(f.g)
== { composição é associativa ; definição de exp }
exp(f.g) = exp(f.g)
Q11 - Tentei resolver o exercicio 6 do exame de 2012 mas não chego ao resultado que era pretendido. De tri f = (| in . B(id,T f) |) inferi, por cancelamento-cata, (tri f) . in = in . B(id,T f) . F(tri f). Sabendo que B(id,T f) = id + id >< T f e F (tri f) = id + id >< tri f (listas) chego a [tri f . nil, tri f . cons] = [nil, cons . (T f x tri f) ] de onde não consigo chegar ao código Haskell dado.R: O engano está no cálculo da composição
B(id,T f) . F (tri f)
que deverá dar
id + id >< (T f . (tri f))
e não
id + (T f) >< (tri f)
Resolvido este engano, deverá ser imdediato.
Q12 - No exercicio 5 da ficha 12, em que join = (| [id, Fork] |), pede-se para demonstrar as leis da multiplicação e unidade do monáde LTree, sendo u -> Leaf e mu -> join. Usando universal-cata e decompondo, chega-se a join . Leaf = id, que prova a lei mu.u = id. Mas não consigo chegar a mu.mu = mu . (T mu).R: Deverá usar absorção-cata à direita seguida de fusão-cata à esquerda (tudo em LTree):
join.join = join. (LTree join)
== { definição de join }
join.join = (| [id, Fork] |). (LTree join)
== { absorção-cata: T f = LTree f ; B(f,g) = f + g >< g }
Q13 - Na página 78 do capítulo 3, onde se faz a demostração da composição de (|g|) . [(h)], diz-se que é uma função que vai de B para C. No entanto, o diagrama leva-me a crer que se trata de uma função de C para B. Está-me a escapar alguma coisa?R: Não está a escapar nada: é de facto uma gralha, que foi agora corrigida no original (LaTeX).
Q14 - Não estou a conseguir resolver o exercício 8 da ficha 4, nomeadamente na prova de map f . nil = nil. Quais são as leis a aplicar para chegar à solução?R: Terá que ser a equação (7), já que nada sabemos (na pergunta) sobre map. E, de facto, a equação (8) corresponde ao lado esquerdo de (7) com
k=id e f=id. Se fizermos a substituição, teremos o seguinte lado direito:
id·[nil,cons]=[nil,cons]·(id+id×id)
que é evidentemente verdadeira. Para verificarmos a (9), basta em (7) fazermos a substituição de k por map f no lado direito e seleccionarmos o caso nil:
(map f)·[nil,cons]=[nil,cons]·(id+f × (map f))
Por fusão-+ no lado esquerdo e absorção-+ no direito obtemos, após eq-+, duas
equações, das quais uma delas é (9). Finalmente, (10) corresponde à outra equação que resta, após introduzirmos variáveis.
Q15 - No exercício 5 da ficha 9, após a remoção das variáveis, introdução de in, cancelamento-+ e absorção-+, não estou a conseguir obter o resultado f1.in = ... (id + id x <f1, f2>) e g1.in = ... (id + id x <f1,f2>) para depois aplicar a lei de Fokkinga.R: Após remoção de variáveis, as equações dadas convertem em
f1.nil=nil
f1.cons=cons.(id x f2)
e
f2.nil=nil
f2.cons=p2.(id x f1)
Onde está f1 ou f2 teremos que ter um termo que envolva <f1,f2>, o que não é difícil usando as leis de cancelamento-x:
f1.nil=nil
f1.cons=cons.(id x p2.<f1,f2>)
e
f2.nil=nil
f2.cons=p2.(id x p1.<f1,f2>)
Juntando cada par de equações num só, fazendo in=[nil,cons], ter-se-á:
f1.in=[nil,cons.(id x p2.<f1,f2>)]
e
f2.in=[nil,p2.(id x p1.<f1,f2>)]
Falta agora factorizar a chamada recursiva id + id x <f1,f2> em ambas as equações:
f1.in=[nil,cons.(id x p2)].(id + id x <f1,f2>)]
e
f2.in=[nil,p2.(id x p1).(id + id x <f1,f2>)]
Agora já pode ser aplicada a lei da recursividade múltipla (acabar).
Q16 - No exercício 2 da ficha 10, no anamorfismo suffixes consegui desenhar o diagrama mas não estou a conseguir descobrir o gene da função g para proceder ao cálculo da versão em Haskell.R: Uma vez mais, pegue-se na definição do gene
g []=i1 []
g (h : t ) = i2 (h : t , t )
e retirem-se as variáveis:
g.nil=i1.nil
g.cons=i2.<cons,p2>
já que <cons,p2>(h,t) = (cons(h,t),p2(h,t)) = (h:t,t).
Daqui procede-se da mesma maneira, juntando essas equações por Eq-+:
g.in=[i1.nil,i2.<cons,p2>]
== { isomorfismos in e out }
g=[i1.nil,i2.<cons,p2>].out
Q16 - No exercício 6 do teste deste ano eu faço f = g, universal-cata, cancelamento-cata, absorção-+, const k . f = const k e obtenho o resultado [const k, const k] = [const k, f]. O que estou a fazer de errado?R: Nada, só falta acabar: por cancelamento-+ obtém const k = const k (trivialmente verdadeiro) e
const k=f. Isto é: a igualdade f=g é equivalente a f=const k. Por transitividade da equivalência obtém também g=const k, logo as duas funções são iguais à função constante k.
Q17 - No exercício 4 do mesmo teste podemos partir de qualquer propriedade da exponenciação (cancelamento por exemplo)? Ou partimos da igualdade curry f a b = f (a,b)?R: A direcção do raciocínio fica à sua escolha - veja detalhes acima, na nota What is the meaning of curry / uncurry?Q18 - Tenho visto em testes de anos anteriores mais para o final uma questão do tipo: "Defina a função .... (...) como resultado da "monadificação" da função: (...) Eu tentei preparar-me para teste resolvendo todas as fichas que demos nas aulas mas não encontrei nenhuma pergunta na ficha de monades com semelhança a esta. Como tal sempre que chego aquela pergunta fico sem perceber como "pegar". Saírá algo parecido com isto no teste? Será que poderia dizer como se resolve?R: Essa matéria não foi dada este ano, logo não sairá nenhuma pergunta desse género.
Q19 - O functor F p1 é igual a id + (p1><p1) e o F p2 = id + (p2 >< p2) ?R: É isso se estiver a trabalhar com LTrees, pois B(f,g) = f + g><g para essa estrutura e F f = B(id,f). Para outras estruturas terá que ver seu functor de base B(f,g) e calcular o respectivo F f.
Q20 - *LTree p1 = (| in . (p1 + id) |)*, da pergunta 9 do teste resolvido do ano passado, foi deduzido ou trata-se de matéria teórica que devemos saber?R:LTree p1 = (| in . (p1 + id) |) é um caso particular de functor de tipo, deduzido a partir da sua definição no formulário T f = (| in.B(f,id) |). Como se viu na FAQ anterior, B(f,id) = f + id><id para este tipo de árvores (T = LTree). Como id><id=id, o cálculo é imediato.
Q21 - No mini-teste deste ano, na questão 6, como é que mostro que max . const(0,0) = const 0?R: Não esquecer as propriedades naturais da função constante, entre elas esta: f.(const k) = const (f k).
Assim, max . const(0,0) = const(max(0,0)) = const 0.
Q22 - Nas justificações dos passos numa prova analítica, quando introduzimos variáveis, a justificação tanto pode ser "igualdade extensional", bem como "introdução de variáveis"? Ou há uma justificação que seja mais correcta que a outra?R: As duas estão bem: a introdução de variáveis é equivalente à igualdade extensional.
Q23 - Ao tentar resolver a questão 8 do este de recurso do ano passado, não consigo entender bem o que é pedido.R: É dado um anamorfismo g = [( i2. <id,id> )] e pretende-se mostrar, usando as leis dos anas, que
map f. g = g . f
Ora o anamorfismo é de listas, o que quer dizer que sabemos que: B(f,g)=id+f><g, F f = B(id,f) = id + id><f e map f = T f. Estamos então em condições de usar a lei de absorção-ana,
map f . [( i2. <id,id> )] = B(f,id) ....
e acabar de resolver o exercício.
Q24 - Quando queremos identificar um isomorfismo recorrendo a diagramas, depois de construir os tipos das duas testemunhas, para provar o isomorfismo basta escrever, por exemplo, (A x A)+(B x A) ~= (A+B) x A no fim e fica provado?R: Não fica. O diagrama apenas revela os tipos (polimórficos) das duas funções. Para o isomorfismo ficar provado precisamos de mostrar que as duas funções, compostas por qualquer ordem, dão a identidade.
Q25 - No recurso do ano passado, na questão 5, quando chegamos ao passo pair p = for (<succ.p1,k p>) (<1,0>) como é que introduzimos aqui as varíaveis (x,y)? É para introduzir dentro de cada argumento do for?R: Não! O for já está definido ao nível da variável. O que se pretende no exercício é obter loop e mostrar que, após introdução de variáveis (apenas em loop), essa função é a dada no exame.
Q26 - (a preencher)R: (a preencher)
google.hs - exemplo 'ad hoc' de estratégia map-reduce (à la Google) implementada directamente por combinadores estudados nesta disciplina.
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.
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. duplo factorial, `merge-sort', Fibonacci etc).
BTree.hs - biblioteca contendo os cata/ana/hilomorfismos do 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 a respectiva bateria de combinadores ana+cata+hilo e exemplos de utilização, que incluem os dados nas aulas.
Nat.hs - biblioteca de naturais (combinador ciclo-for, etc).
Cp.hs - contendo os combinadores de base do cálculo de programas, e.g. split, ><, -|- etc.
Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores.
Teste (4 questões, sem consulta) sobre a parte da matéria não coberta pelo miniteste: 8 valores (apenas para alunos com nota mínima no miniteste).
Exame de recurso: segundo o regime geral em vigor na universidade.
Alternativa 2:
Teste (10 questões, sem consulta) sobre toda a matéria: 20 valores.
Exame de recurso: segundo o regime geral em vigor na universidade.
A Alternativa 1 fica escolhida automaticamente mediante entrega do miniteste para correcção. Não é permitida a posterior mudança de alternativa de avaliação.
Regime de Faltas
Adopta-se o regime geral em vigor na universidade.
-- jno - 12 Feb 2013
TWiki's Education/CP1213 webThe Education/CP1213 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213Copyright 2020 by contributing authors2020-10-30T14:39:05ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebStatistics2020-10-30T14:39:05ZStatistics for Education/CP1213 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestMaterialPedagogicohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/MaterialPedagogico2015-07-06T13:44:32ZMaterial 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)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Avisos2014-05-10T18:54:05Z24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ... (last changed by JoseNunoOliveira)JoseNunoOliveiraHorarioAtendimentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioAtendimento2013-10-24T15:51:55ZHorá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)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Alunos2013-09-26T13:19:35ZNotas da época especial (0 20 val): 38176 10 ; 40610 R ; 43131 F ; 51216 F ; 51751 10 ; 51769 R ; 51770 F ; 51785 R ; 51790 F ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebHome2013-07-21T16:02:09ZBenvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebSideBar2013-06-29T17:15:35ZTópicos Apresentação Alunos Docentes Regime de Avaliação Atendimento pública Contacto Sumários Horário Material ... (last changed by JoseNunoOliveira)JoseNunoOliveiraBibliografiahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Bibliografia2013-05-13T14:39:18ZBibliografia 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)JoseNunoOliveiraHorarioSalasDocenteshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioSalasDocentes2013-02-27T11:07:48ZHorário e turnos Curso Turno Dia Hora Sala Docente LEI T1 2ª feira 14h 16h ... (last changed by JoseNunoOliveira)JoseNunoOliveiraRegimeAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/RegimeAvaliacao2013-02-12T11:18:31ZRegime de Avaliação Alternativa 1: Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores. Teste (4 questões, sem consulta ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/EquipaDocente2013-02-07T13:01:57ZDocentes Docente Código Aulas Licenciaturas Soares Barbosa 406023 TP LEI Nuno Oliveira 406006 T, TP LCC, LEI Pacheco ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Calendario2013-02-07T12:48:31ZSumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebPreferences2013-02-04T14:15:24ZEducation/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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/CP1213/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunha
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ...
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 ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ...
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ...
Bem vindo à página da edição de 2012/13 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.
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
Arquitectura da programação: 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.
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.
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ...
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 ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ...
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 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/CP1213 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/CP1213.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 = Licenciaturas 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/CP1213 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/CP1213
The Education/CP1213 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/CP1213
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213
/twiki/pub/Main/LocalLogos/um_eengP.jpgMaterialPedagogico
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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)2015-07-06T13:44:32ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Avisos
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ... (last changed by JoseNunoOliveira)2014-05-10T18:54:05ZJoseNunoOliveiraHorarioAtendimento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioAtendimento
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)2013-10-24T15:51:55ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Alunos
Notas da época especial (0 20 val): 38176 10 ; 40610 R ; 43131 F ; 51216 F ; 51751 10 ; 51769 R ; 51770 F ; 51785 R ; 51790 F ... (last changed by JoseNunoOliveira)2013-09-26T13:19:35ZJoseNunoOliveiraWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebHome
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)2013-07-21T16:02:09ZJoseNunoOliveiraWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebSideBar
Tópicos Apresentação Alunos Docentes Regime de Avaliação Atendimento pública Contacto Sumários Horário Material ... (last changed by JoseNunoOliveira)2013-06-29T17:15:35ZJoseNunoOliveiraBibliografia
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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)2013-05-13T14:39:18ZJoseNunoOliveiraHorarioSalasDocentes
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioSalasDocentes
Horário e turnos Curso Turno Dia Hora Sala Docente LEI T1 2ª feira 14h 16h ... (last changed by JoseNunoOliveira)2013-02-27T11:07:48ZJoseNunoOliveiraRegimeAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/RegimeAvaliacao
Regime de Avaliação Alternativa 1: Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores. Teste (4 questões, sem consulta ... (last changed by JoseNunoOliveira)2013-02-12T11:18:31ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/EquipaDocente
Docentes Docente Código Aulas Licenciaturas Soares Barbosa 406023 TP LEI Nuno Oliveira 406006 T, TP LCC, LEI Pacheco ... (last changed by JoseNunoOliveira)2013-02-07T13:01:57ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Calendario
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ... (last changed by JoseNunoOliveira)2013-02-07T12:48:31ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebPreferences
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2013-02-04T14:15:24ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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/CP1213/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunha
De acordo com a informação enviada pela Direcção de Curso (listagem ordenada por número de aluno):
Nr
Curso
Turno TP
43499
LCC
TP1
43538
LCC
TP2
43548
LCC
TP2
47423
LCC
TP1
48410
LCC
TP1
50190
LCC
TP2
51060
LCC
TP1
51141
LCC
TP2
51152
LCC
TP1
52815
LCC
TP2
52822
LCC
TP1
52829
LCC
TP2
52834
LCC
TP1
52839
LCC
TP2
52841
LCC
TP2
52846
LCC
TP1
53971
LCC
TP1
54065
LCC
TP2
54080
LCC
TP2
55842
LCC
TP1
55846
LCC
TP1
55864
LCC
TP2
55873
LCC
TP1
55878
LCC
TP2
55894
LCC
TP2
55895
LCC
TP2
57153
LCC
TP1
58882
LCC
TP1
58884
LCC
TP2
58886
LCC
TP1
58887
LCC
TP1
58891
LCC
TP2
58892
LCC
TP1
58901
LCC
TP2
58902
LCC
TP2
58904
LCC
TP2
58912
LCC
TP2
60067
LCC
TP1
60072
LCC
TP2
60407
LCC
TP1
62121
LCC
TP2
62122
LCC
TP1
62123
LCC
TP1
62128
LCC
TP2
62131
LCC
TP1
62134
LCC
TP1
62142
LCC
TP2
62143
LCC
TP2
62147
LCC
TP2
62154
LCC
TP1
62157
LCC
TP2
62161
LCC
TP1
62847
LCC
TP1
63045
LCC
TP1
63374
LCC
TP1
63379
LCC
TP1
63389
LCC
TP1
63390
LCC
TP2
63391
LCC
TP1
65430
LCC
TP1
65431
LCC
TP1
65439
LCC
TP1
65445
LCC
TP2
65447
LCC
TP1
65449
LCC
TP1
66695
LCC
TP1
66696
LCC
TP1
66699
LCC
TP1
Turnos TP (LEI)
Apresenta-se em baixo a proposta elaborada em conjunto pela equipa docente e pela direcção de curso de LEI para constituição de base dos turnos TP de LEI nesta disciplina.
Os alunos poderão mudar de turno por troca. Para isso deverá ser enviada uma mensagem para o docente responsável contendo, obrigatoriamente, o assunto CP/1213: mudança de turno e o texto a88888 <-> a99999, em que os "dummies" 88888 e 99999 indicam de forma inequívoca os números dos alunos que trocam entre si.
Só se aceitarão como pedidos de troca mensagens que sejam enviadas a partir do endereço institucional de um dos alunos, com cópia para o endereço institucional do outro aluno envolvido na troca.
O prazo limite para se atenderem pedidos de troca é segunda feira, dia 18-Fev, inclusive.
A listagem da constituição dos turnos que se segue está ordenada por número de aluno:
24 Set - Notas do exame da época especial : estão publicadas em Alunos.
08 Set - Exame da época especial (LCC+LEI): 12-Set, 09h00, Sala CP2-304.
30 Ago - Exame da época especial (LCC+LEI): Sala a anunciar, 12-Set de manhã.
23 Jul - Classificações finais (à data da época de recurso): estão publicadas em Alunos.
21 Jul - Classificações à data da época de recurso: disponíveis em Alunos. Quem tiver nota negativa igual ou superior a 8 valores poderá submeter-se a exame oral. As orais terão lugar 3ª-feira, dia 23-Jul, das 14h às 17h, na sala DI 0.02.
20 Jul - Classificações (época de recurso): serão publicadas em Alunos antes de 22-Jul.
06 Jul - Os alunos deverão continuar a estar atentos à secção de FAQs do Material Pedagógico.
29 Jun - Classificações à data da época normal: estão publicadas em Alunos.
15 Jun - Algumas dúvidas frequentes encontram-se respondidas na secção de FAQs do Material Pedagógico.
11 Jun - Mini-teste de 22-Mai: no Material Pedagógico encontra-se o enunciado agora com correcção.
11 Jun - A aula suplementar do turmo LEI-TP3 (14-Jun) será às 10h-12h (sala DIUM 1.08) e não às 14h-16h como inicialmente previsto.
10 Jun - Classificações do mini-teste: estão publicadas em Alunos.
06 Jun - Aulas de substituição (LCC-TP2) e de dúvidas (LEI TP1,TP4,TP5): ver Sumários.
06 Jun - Chama-se a atenção dos alunos para o preenchimento na intranet dos inquéritos pedagógicos até 3-Jul 2013.
04 Jun - Aula de substituição (LEI-TP3): terá lugar na sala DIUM 1.08 no dia 7-Jun, 09h-11h.
03 Jun - Aula de substituição (LCC-T1): terá lugar no anfiteatro DIUM A.2 dia 5-Jun, 16h-18h.
02 Jun - Publicada no Material Pedagógico a ficha nr.12, destinada às aulas práticas da última semana de aulas.
30 Mai - Devido a um imprevisto, terão que ser canceladas duas aulas de amanhã, 31-Maio, a saber: LEI-TP3 [CPII - C2/205] e LCC-T1 [CPII - C2/202]. Oportunamente se fará uma proposta para a sua reposição.
26 Mai - Publicada no Material Pedagógico a ficha nr.11, destinada às aulas práticas desta semana.
09 Mai - Turnos LEI-TP4 e LEI-TP5 - pf ver em Sumários as aulas de substituição das que não houve no passado dia 7-Mai (atenção às salas, também).
06 Mai - Miniteste do dia 22-Maio: a matéria a avaliar vai até à Ficha nr.9 inclusivé. Ver hora e salas nos Sumários.
04 Mai - Publicada no Material Pedagógico a ficha nr.10, destinada às aulas práticas da semana que começa a 6-Mai.
27 Abr - Publicada no Material Pedagógico a ficha nr.9, destinada às aulas práticas da semana que começa a 29-Abr.
23 Abr - De novo devido a uma reunião na instituição, o docente do turno LEI/TP2 é forçado a adiar para 8-Maio, às 14h, no anfiteatro DI-A2, a aula suplementar inicialmente prevista para amanhã - ver Sumários.
20 Abr - Publicada no Material Pedagógico a ficha nr.8, destinada às aulas práticas da semana que começa a 22-Abr.
17 Abr - Devido a uma reunião do Conselho Científico da Escola de Engenharia, a que o docente do turno LEI/TP2 pertence, só poderá dar-se início à aula de substituição desta tarde às 17h, no mesmo anfiteatro.
14 Abr - Publicada no Material Pedagógico a ficha nr.7, destinada às aulas práticas da semana que começa a 15-Abr.
13 Abr - Turno LCC/TP1: atenção ao novo calendário das aulas de substituição, conforme se indica nos Sumários.
13 Abr - Notícia: School of Haskell Goes Public06 Abr - Publicada no Material Pedagógico a ficha nr.6, destinada às aulas práticas da semana que começa a 8-Abr.
04 Abr - Aulas dos turnos LCC/TP1 e LEI/TP2: devido a um imprevisto e a uma missão no estrangeiro as aulas desta e da próxima semana não terão lugar, sendo substituídas conforme se indica nos Sumários.
04 Abr - Alunos incontactáveis - ver Alunos.
27 Mar - Publicada no Material Pedagógico a ficha nr.5, destinada às aulas práticas da semana que começa a 2-Abr.
20 Mar - Aulas de compensação (turnos LCC/TP1 e LEI/TP2): Tal como foi sendo anunciado nos Sumários, as aulas em falta na semana passada serão compensadas esta tarde, nos horários aí anunciados.
15 Mar - Publicada no Material Pedagógico a ficha nr.4, destinada às aulas práticas da semana que começa a 18-Mar.
08 Mar - Publicada no Material Pedagógico a ficha nr.3, destinada às aulas práticas da semana que começa a 11-Mar.
03 Mar - Publicada no Material Pedagógico a ficha nr.2, destinada às aulas práticas da semana que começa a 04-Mar.
22 Fev - Publicada no Material Pedagógico a ficha nr.1, destinada às aulas práticas da semana que começa a 25-Fev.
14 Fev - Datas das avaliações: ver Sumários8 Fev - Turnos TP (LEI): ver Alunos7 Fev - Fotografias: os alunos que não têm fotografia no portal académico devem tratar de a disponibilizar o mais rapidamente possível. A falta de fotografia pode comprometer a componente de avaliação contínua desta disciplina.
6 Fev - Horário e turnos - ver Horário.
6 Fev - As aulas terão início a 18-Fev-2013.
6 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 são o segundo (920K), o terceiro (530K) e o quarto (258K ).
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
Formato PDF : a disponibilizar oportunamente
Formato ICS : a disponibilizar oportunamente
Actualização contínua no calendário:
-- JoseNunoOliveira - 06 Feb 2013
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 junto do respectivo docente:
Essa marcação deve ser feita com um mínimo de uma semana de antecedência.
Atendimento electrónico (FAQs)
Q1 - Estou com dúvidas no exercício na última questão do teste de 2010/11: não tenho ideia de como pegar!R: Não é de admirar: este ano não demos esta matéria, que corresponde à secção 4.10 do capítulo sobe mónades. Mas não é difícil e, para quem estiver interessado, há também estes slides: Monadification made easier.
Q2 - Estou sem conseguir resolver a questão 8 do teste do ano passado: definir um anamorfismo de naturais como um catamorfismo de listas. Tentei usar a lei universal-ana(44) mas fiquei bloqueado a meio.R: Sim, universal-ana (naturais) é bom começo (expandindo out = [nil,cons]º ):
f = [( (id+p2). [nil,cons]º )]
== { universal-ana (naturais); álgebra in dos naturais é [0,succ] }
f = in. (id + f ) . (id+p2). [nil,cons]º
== { passando isomorfismo [nil,cons]º para o outro lado, "trocando o sinal" }
f . [nil,cons] = in. (id + f ) . (id+p2)
== { ... }
Aqui começa a preparação das coisas para termos f como catamorfismo de listas: fica como exercício.
A dificuldade desta questão é que começa com um anamorfismo de naturais (F f = id + f) e termina com um catamorfismo de listas (F f = id + id x f). A mudança de F dá-se a partir do ponto em que se parou acima. Como sempre, as propriedades naturais não se devem ignorar (neste caso a do p2).
Q3 - Na questão 7 do exame de recurso do ano passado não percebo a primeira parte: instanciar com a função fac a função lms.R: O que se pretende é resolver a equação
fac = lms p g h i j
em ordem às variáveis p, g, h, i, j - o que é a mesma coisa que encontrar essas funções na equação
fac = p -> g, h.<i,fac.j>
Partimos da definição de fac sem variáveis (onde 1 representa a função constante 1, (const 1)):
fac.in = [1,mul.<succ,fac>]
== { passagem de in para o outro lado (isomorfismo) ; out dos naturais }
fac = [1,mul.<succ,fac>].((=0) -> i1.!,i2.pred)
== { lei do condicional que facilmente se identifica }
fac = (=0) -> [1,mul.<succ,fac>].i1.!, [1,mul.<succ,fac>].i2.pred
Sugestão: corram esta versão no interpretador de Haskell.
Q4 - Tenho dificuldades ao provar a igualdade f.g=id na questão 6b da Ficha 2.R: Ver resolução do miniteste, onde se faz essa prova para o caso dual, com injecções e eithers em lugar
de projecções e splits: o argumento é em tudo semelhante.
Q5 - Tenho dificuldades a resolver a questão 6 da Ficha 3.R: O diagrama representa a equação
[x,y] = [k,g].(id+id >< f)
que se quer resolver em ordem a x e y. Por absorção (etc), o lado direito fica [k,g.(id >< f)] ; pela igualdade de eithers tem-se, de imediato,
x = k
y = g.(id >< f)
Quanto aos pontos de interrogação, comecemos pelo tipo genérico da seta vertical, que é a soma de uma identidade com um produto:
A + (B >< C) <-- id + (id >< f) -- A + (B >< D)
(repetimos A e B por estarem ligados a identidades). Como nada sabemos sobre k e g, ter-se-á
E <--- [k,g] --- A + (B >< C)
Logo, os pontos de interrogação são os tipos genéricos (paramétricos) A + (B >< D) (em cima); E (em baixo, à esquerda) e A + (B >< C) (à direita).
Q6 - Na questão 2a da Ficha 5, o isomorfismo pretendido parte de uma soma para um produto, logo posso usar tanto um split como um either. Qual devo escolher?R: Pela lei da troca, as suas soluções são idênticas. (Se se pretender depois escrever a função em Haskell,
a conversão é mais simples se se optar pelo combinador either). Detalha-se a seguir essa versão: designemos o isomorfismo por iso, que vamos decompor em iso = [f,g], com tipos, f : A >< B -> A >< (B+1) e g : A -> A >< (B+1). Tanto f como g vão para produtos e como tal serão splits. Começando por g = <g1,g2>, g1 = id e g2 tem tipo A -> B+1. Como nada sabemos sobre B, g2 terá que dar o seu resultado em 1, injectando-o à direita: g2 = i2.!. Um processo semelhante decomporá f em id >< i1. Juntando tudo:
iso = [(id >< i1),<id,i2.!>]
Q7 - No exercício 7 (parte 2 do teste de 2010/2011) tentei chegar da função escrita em Haskell à versão point-free mas não consegui.R: Escolheu a versão mais complicada, já que no sentido inverso é mais simples: faça absorção-cata no lado direito para obter
hwmny p = ([ g ])
(aqui o objectivo é calcular o gene g do catamorfismo). Depois, dessa equação, deriva hwmny p usando a lei universal-cata
e introduzindo variáveis no fim. Importante: como o tipo em causa é LTree, in = [Leaf, Fork] e o functor de base a usar na lei de
absorção-cata é B(f,g) = f + g >< g - ver baseLTree no ficheiro LTree.hs.
Q8 - Não percebo bem o que se pretende na questão 4 da Ficha nº 5.R: A questão resume-se a tentar calcular o tipo polimórfico do combinador comb f g,
para qualquer f e g à entrada. Temos que comb f g = <f,[g,f]>. Sejam então dadas f : A->B e g : C -> D. Ter-se-á de imediato: [g,f] : (C + A) -> B, já que B=D na construção do either.
Agora derive-se o tipo do split<f,[g,f]>. Para isso é preciso que f e [g,f] tenham o mesmo tipo de entrada, isto é, terá que verificar-se:
A = C + A
Ora esta equação define A como um tipo recursivo: mas, se substituirmos A por
C+A e assim sucessivamente, teremos A = C + (C + (C + ...)),
isto é, A é um tipo infinito: é esta, assim, a explicação para a mensagem de erro
que o interpretador de Haskell dá: "cannot construct the infinite type: a = Either c a".
Q9 - Na questão 5(a) da Ficha nº 5 eu escrevi Maybe A isomorfo a A + 1 e na 5(b) escrevi 1+1 isomorfo a Bool, mas não sei prosseguir com nenhum dos exercícios.R: Para acabar os exercícios tem que se lembrar da estrutura dos tipos Maybe e
Bool em Haskell: data Maybe a = Just a | Nothing e data Bool = False | True.
Repare nos tipos: Just :: a -> Maybe a e const Nothing :: () -> Maybe a,
const True :: () -> Bool e
const False :: () -> Bool.
Usando estas funções constantes é fácil definir os isomorfismos pedidos sob a forma de eithers.
Q10 - Na questão 4 da Ficha nº6 eu substitui as três ocorrências de exp pela sua definição mas não sei prosseguir...R: Sabendo-se que exp f = curry (f.ap), é conveniente olharmos para as leis da exponenciação primeiro
antes de fazermos substituições: para a lei fusão-exp (31) ser útil, basta começar por expandir apenas exp f:
(exp f) . (exp g) = exp(f.g)
== { definição de *exp f*}
(curry (f.ap)) . (exp g) = exp(f.g)
== { fusão-exp }
curry(f.ap.((exp g)><id)) = exp(f.g)
== { definição de *exp g*}
curry(f.ap.((curry (g.ap))><id)) = exp(f.g)
== { cancelamento-exp }
curry(f.(g.ap)) = exp(f.g)
== { composição é associativa ; definição de exp }
exp(f.g) = exp(f.g)
Q11 - Tentei resolver o exercicio 6 do exame de 2012 mas não chego ao resultado que era pretendido. De tri f = (| in . B(id,T f) |) inferi, por cancelamento-cata, (tri f) . in = in . B(id,T f) . F(tri f). Sabendo que B(id,T f) = id + id >< T f e F (tri f) = id + id >< tri f (listas) chego a [tri f . nil, tri f . cons] = [nil, cons . (T f x tri f) ] de onde não consigo chegar ao código Haskell dado.R: O engano está no cálculo da composição
B(id,T f) . F (tri f)
que deverá dar
id + id >< (T f . (tri f))
e não
id + (T f) >< (tri f)
Resolvido este engano, deverá ser imdediato.
Q12 - No exercicio 5 da ficha 12, em que join = (| [id, Fork] |), pede-se para demonstrar as leis da multiplicação e unidade do monáde LTree, sendo u -> Leaf e mu -> join. Usando universal-cata e decompondo, chega-se a join . Leaf = id, que prova a lei mu.u = id. Mas não consigo chegar a mu.mu = mu . (T mu).R: Deverá usar absorção-cata à direita seguida de fusão-cata à esquerda (tudo em LTree):
join.join = join. (LTree join)
== { definição de join }
join.join = (| [id, Fork] |). (LTree join)
== { absorção-cata: T f = LTree f ; B(f,g) = f + g >< g }
Q13 - Na página 78 do capítulo 3, onde se faz a demostração da composição de (|g|) . [(h)], diz-se que é uma função que vai de B para C. No entanto, o diagrama leva-me a crer que se trata de uma função de C para B. Está-me a escapar alguma coisa?R: Não está a escapar nada: é de facto uma gralha, que foi agora corrigida no original (LaTeX).
Q14 - Não estou a conseguir resolver o exercício 8 da ficha 4, nomeadamente na prova de map f . nil = nil. Quais são as leis a aplicar para chegar à solução?R: Terá que ser a equação (7), já que nada sabemos (na pergunta) sobre map. E, de facto, a equação (8) corresponde ao lado esquerdo de (7) com
k=id e f=id. Se fizermos a substituição, teremos o seguinte lado direito:
id·[nil,cons]=[nil,cons]·(id+id×id)
que é evidentemente verdadeira. Para verificarmos a (9), basta em (7) fazermos a substituição de k por map f no lado direito e seleccionarmos o caso nil:
(map f)·[nil,cons]=[nil,cons]·(id+f × (map f))
Por fusão-+ no lado esquerdo e absorção-+ no direito obtemos, após eq-+, duas
equações, das quais uma delas é (9). Finalmente, (10) corresponde à outra equação que resta, após introduzirmos variáveis.
Q15 - No exercício 5 da ficha 9, após a remoção das variáveis, introdução de in, cancelamento-+ e absorção-+, não estou a conseguir obter o resultado f1.in = ... (id + id x <f1, f2>) e g1.in = ... (id + id x <f1,f2>) para depois aplicar a lei de Fokkinga.R: Após remoção de variáveis, as equações dadas convertem em
f1.nil=nil
f1.cons=cons.(id x f2)
e
f2.nil=nil
f2.cons=p2.(id x f1)
Onde está f1 ou f2 teremos que ter um termo que envolva <f1,f2>, o que não é difícil usando as leis de cancelamento-x:
f1.nil=nil
f1.cons=cons.(id x p2.<f1,f2>)
e
f2.nil=nil
f2.cons=p2.(id x p1.<f1,f2>)
Juntando cada par de equações num só, fazendo in=[nil,cons], ter-se-á:
f1.in=[nil,cons.(id x p2.<f1,f2>)]
e
f2.in=[nil,p2.(id x p1.<f1,f2>)]
Falta agora factorizar a chamada recursiva id + id x <f1,f2> em ambas as equações:
f1.in=[nil,cons.(id x p2)].(id + id x <f1,f2>)]
e
f2.in=[nil,p2.(id x p1).(id + id x <f1,f2>)]
Agora já pode ser aplicada a lei da recursividade múltipla (acabar).
Q16 - No exercício 2 da ficha 10, no anamorfismo suffixes consegui desenhar o diagrama mas não estou a conseguir descobrir o gene da função g para proceder ao cálculo da versão em Haskell.R: Uma vez mais, pegue-se na definição do gene
g []=i1 []
g (h : t ) = i2 (h : t , t )
e retirem-se as variáveis:
g.nil=i1.nil
g.cons=i2.<cons,p2>
já que <cons,p2>(h,t) = (cons(h,t),p2(h,t)) = (h:t,t).
Daqui procede-se da mesma maneira, juntando essas equações por Eq-+:
g.in=[i1.nil,i2.<cons,p2>]
== { isomorfismos in e out }
g=[i1.nil,i2.<cons,p2>].out
Q16 - No exercício 6 do teste deste ano eu faço f = g, universal-cata, cancelamento-cata, absorção-+, const k . f = const k e obtenho o resultado [const k, const k] = [const k, f]. O que estou a fazer de errado?R: Nada, só falta acabar: por cancelamento-+ obtém const k = const k (trivialmente verdadeiro) e
const k=f. Isto é: a igualdade f=g é equivalente a f=const k. Por transitividade da equivalência obtém também g=const k, logo as duas funções são iguais à função constante k.
Q17 - No exercício 4 do mesmo teste podemos partir de qualquer propriedade da exponenciação (cancelamento por exemplo)? Ou partimos da igualdade curry f a b = f (a,b)?R: A direcção do raciocínio fica à sua escolha - veja detalhes acima, na nota What is the meaning of curry / uncurry?Q18 - Tenho visto em testes de anos anteriores mais para o final uma questão do tipo: "Defina a função .... (...) como resultado da "monadificação" da função: (...) Eu tentei preparar-me para teste resolvendo todas as fichas que demos nas aulas mas não encontrei nenhuma pergunta na ficha de monades com semelhança a esta. Como tal sempre que chego aquela pergunta fico sem perceber como "pegar". Saírá algo parecido com isto no teste? Será que poderia dizer como se resolve?R: Essa matéria não foi dada este ano, logo não sairá nenhuma pergunta desse género.
Q19 - O functor F p1 é igual a id + (p1><p1) e o F p2 = id + (p2 >< p2) ?R: É isso se estiver a trabalhar com LTrees, pois B(f,g) = f + g><g para essa estrutura e F f = B(id,f). Para outras estruturas terá que ver seu functor de base B(f,g) e calcular o respectivo F f.
Q20 - *LTree p1 = (| in . (p1 + id) |)*, da pergunta 9 do teste resolvido do ano passado, foi deduzido ou trata-se de matéria teórica que devemos saber?R:LTree p1 = (| in . (p1 + id) |) é um caso particular de functor de tipo, deduzido a partir da sua definição no formulário T f = (| in.B(f,id) |). Como se viu na FAQ anterior, B(f,id) = f + id><id para este tipo de árvores (T = LTree). Como id><id=id, o cálculo é imediato.
Q21 - No mini-teste deste ano, na questão 6, como é que mostro que max . const(0,0) = const 0?R: Não esquecer as propriedades naturais da função constante, entre elas esta: f.(const k) = const (f k).
Assim, max . const(0,0) = const(max(0,0)) = const 0.
Q22 - Nas justificações dos passos numa prova analítica, quando introduzimos variáveis, a justificação tanto pode ser "igualdade extensional", bem como "introdução de variáveis"? Ou há uma justificação que seja mais correcta que a outra?R: As duas estão bem: a introdução de variáveis é equivalente à igualdade extensional.
Q23 - Ao tentar resolver a questão 8 do este de recurso do ano passado, não consigo entender bem o que é pedido.R: É dado um anamorfismo g = [( i2. <id,id> )] e pretende-se mostrar, usando as leis dos anas, que
map f. g = g . f
Ora o anamorfismo é de listas, o que quer dizer que sabemos que: B(f,g)=id+f><g, F f = B(id,f) = id + id><f e map f = T f. Estamos então em condições de usar a lei de absorção-ana,
map f . [( i2. <id,id> )] = B(f,id) ....
e acabar de resolver o exercício.
Q24 - Quando queremos identificar um isomorfismo recorrendo a diagramas, depois de construir os tipos das duas testemunhas, para provar o isomorfismo basta escrever, por exemplo, (A x A)+(B x A) ~= (A+B) x A no fim e fica provado?R: Não fica. O diagrama apenas revela os tipos (polimórficos) das duas funções. Para o isomorfismo ficar provado precisamos de mostrar que as duas funções, compostas por qualquer ordem, dão a identidade.
Q25 - No recurso do ano passado, na questão 5, quando chegamos ao passo pair p = for (<succ.p1,k p>) (<1,0>) como é que introduzimos aqui as varíaveis (x,y)? É para introduzir dentro de cada argumento do for?R: Não! O for já está definido ao nível da variável. O que se pretende no exercício é obter loop e mostrar que, após introdução de variáveis (apenas em loop), essa função é a dada no exame.
Q26 - (a preencher)R: (a preencher)
google.hs - exemplo 'ad hoc' de estratégia map-reduce (à la Google) implementada directamente por combinadores estudados nesta disciplina.
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.
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. duplo factorial, `merge-sort', Fibonacci etc).
BTree.hs - biblioteca contendo os cata/ana/hilomorfismos do 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 a respectiva bateria de combinadores ana+cata+hilo e exemplos de utilização, que incluem os dados nas aulas.
Nat.hs - biblioteca de naturais (combinador ciclo-for, etc).
Cp.hs - contendo os combinadores de base do cálculo de programas, e.g. split, ><, -|- etc.
Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores.
Teste (4 questões, sem consulta) sobre a parte da matéria não coberta pelo miniteste: 8 valores (apenas para alunos com nota mínima no miniteste).
Exame de recurso: segundo o regime geral em vigor na universidade.
Alternativa 2:
Teste (10 questões, sem consulta) sobre toda a matéria: 20 valores.
Exame de recurso: segundo o regime geral em vigor na universidade.
A Alternativa 1 fica escolhida automaticamente mediante entrega do miniteste para correcção. Não é permitida a posterior mudança de alternativa de avaliação.
Regime de Faltas
Adopta-se o regime geral em vigor na universidade.
-- jno - 12 Feb 2013
TWiki's Education/CP1213 webThe Education/CP1213 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213Copyright 2020 by contributing authors2020-10-30T14:39:05ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebStatistics2020-10-30T14:39:05ZStatistics for Education/CP1213 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestMaterialPedagogicohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/MaterialPedagogico2015-07-06T13:44:32ZMaterial 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)JoseNunoOliveiraAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Avisos2014-05-10T18:54:05Z24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ... (last changed by JoseNunoOliveira)JoseNunoOliveiraHorarioAtendimentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioAtendimento2013-10-24T15:51:55ZHorá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)JoseNunoOliveiraAlunoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Alunos2013-09-26T13:19:35ZNotas da época especial (0 20 val): 38176 10 ; 40610 R ; 43131 F ; 51216 F ; 51751 10 ; 51769 R ; 51770 F ; 51785 R ; 51790 F ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebHome2013-07-21T16:02:09ZBenvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebSideBar2013-06-29T17:15:35ZTópicos Apresentação Alunos Docentes Regime de Avaliação Atendimento pública Contacto Sumários Horário Material ... (last changed by JoseNunoOliveira)JoseNunoOliveiraBibliografiahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Bibliografia2013-05-13T14:39:18ZBibliografia 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)JoseNunoOliveiraHorarioSalasDocenteshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioSalasDocentes2013-02-27T11:07:48ZHorário e turnos Curso Turno Dia Hora Sala Docente LEI T1 2ª feira 14h 16h ... (last changed by JoseNunoOliveira)JoseNunoOliveiraRegimeAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/RegimeAvaliacao2013-02-12T11:18:31ZRegime de Avaliação Alternativa 1: Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores. Teste (4 questões, sem consulta ... (last changed by JoseNunoOliveira)JoseNunoOliveiraEquipaDocentehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/EquipaDocente2013-02-07T13:01:57ZDocentes Docente Código Aulas Licenciaturas Soares Barbosa 406023 TP LEI Nuno Oliveira 406006 T, TP LCC, LEI Pacheco ... (last changed by JoseNunoOliveira)JoseNunoOliveiraCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Calendario2013-02-07T12:48:31ZSumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ... (last changed by JoseNunoOliveira)JoseNunoOliveiraWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebPreferences2013-02-04T14:15:24ZEducation/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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/CP1213/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunha
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ...
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 ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ...
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ...
Bem vindo à página da edição de 2012/13 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.
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
Arquitectura da programação: 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.
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.
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ...
Bibliografia Bibliografia essencial J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho. Os capítulos deste livro ...
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ...
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 ...
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ...
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 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/CP1213 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/CP1213.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 = Licenciaturas 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/CP1213 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/CP1213
The Education/CP1213 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/CP1213
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213
/twiki/pub/Main/LocalLogos/um_eengP.jpgMaterialPedagogico
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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)2015-07-06T13:44:32ZJoseNunoOliveiraAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Avisos
24 Set Notas do exame da época especial : estão publicadas em Alunos. 08 Set Exame da época especial (LCC LEI): 12 Set, 09h00, Sala CP2 304. 30 Ago Exame ... (last changed by JoseNunoOliveira)2014-05-10T18:54:05ZJoseNunoOliveiraHorarioAtendimento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioAtendimento
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)2013-10-24T15:51:55ZJoseNunoOliveiraAlunos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Alunos
Notas da época especial (0 20 val): 38176 10 ; 40610 R ; 43131 F ; 51216 F ; 51751 10 ; 51769 R ; 51770 F ; 51785 R ; 51790 F ... (last changed by JoseNunoOliveira)2013-09-26T13:19:35ZJoseNunoOliveiraWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebHome
Benvindo a Cálculo de Programas Bem vindo à página da edição de 2012/13 da disciplina de de Programas. O meu nome é Nuno Oliveira e sou o responsável por esta disciplina ... (last changed by JoseNunoOliveira)2013-07-21T16:02:09ZJoseNunoOliveiraWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebSideBar
Tópicos Apresentação Alunos Docentes Regime de Avaliação Atendimento pública Contacto Sumários Horário Material ... (last changed by JoseNunoOliveira)2013-06-29T17:15:35ZJoseNunoOliveiraBibliografia
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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)2013-05-13T14:39:18ZJoseNunoOliveiraHorarioSalasDocentes
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/HorarioSalasDocentes
Horário e turnos Curso Turno Dia Hora Sala Docente LEI T1 2ª feira 14h 16h ... (last changed by JoseNunoOliveira)2013-02-27T11:07:48ZJoseNunoOliveiraRegimeAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/RegimeAvaliacao
Regime de Avaliação Alternativa 1: Miniteste (6 questões, sem consulta): 12 valores, com nota mínima de 8 valores. Teste (4 questões, sem consulta ... (last changed by JoseNunoOliveira)2013-02-12T11:18:31ZJoseNunoOliveiraEquipaDocente
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/EquipaDocente
Docentes Docente Código Aulas Licenciaturas Soares Barbosa 406023 TP LEI Nuno Oliveira 406006 T, TP LCC, LEI Pacheco ... (last changed by JoseNunoOliveira)2013-02-07T13:01:57ZJoseNunoOliveiraCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/Calendario
Sumários da disciplina Formato PDF : a disponibilizar oportunamente Formato ICS : a disponibilizar oportunamente Actualização contínua no calendário: JoseNunoOliveira ... (last changed by JoseNunoOliveira)2013-02-07T12:48:31ZJoseNunoOliveiraWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebPreferences
Education/CP1213 Web Preferences The following settings are web preferences of the Education/CP1213 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2013-02-04T14:15:24ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/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/CP1213/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP1213/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunha
24 Set - Notas do exame da época especial : estão publicadas em Alunos.
08 Set - Exame da época especial (LCC+LEI): 12-Set, 09h00, Sala CP2-304.
30 Ago - Exame da época especial (LCC+LEI): Sala a anunciar, 12-Set de manhã.
23 Jul - Classificações finais (à data da época de recurso): estão publicadas em Alunos.
21 Jul - Classificações à data da época de recurso: disponíveis em Alunos. Quem tiver nota negativa igual ou superior a 8 valores poderá submeter-se a exame oral. As orais terão lugar 3ª-feira, dia 23-Jul, das 14h às 17h, na sala DI 0.02.
20 Jul - Classificações (época de recurso): serão publicadas em Alunos antes de 22-Jul.
06 Jul - Os alunos deverão continuar a estar atentos à secção de FAQs do Material Pedagógico.
29 Jun - Classificações à data da época normal: estão publicadas em Alunos.
15 Jun - Algumas dúvidas frequentes encontram-se respondidas na secção de FAQs do Material Pedagógico.
11 Jun - Mini-teste de 22-Mai: no Material Pedagógico encontra-se o enunciado agora com correcção.
11 Jun - A aula suplementar do turmo LEI-TP3 (14-Jun) será às 10h-12h (sala DIUM 1.08) e não às 14h-16h como inicialmente previsto.
10 Jun - Classificações do mini-teste: estão publicadas em Alunos.
06 Jun - Aulas de substituição (LCC-TP2) e de dúvidas (LEI TP1,TP4,TP5): ver Sumários.
06 Jun - Chama-se a atenção dos alunos para o preenchimento na intranet dos inquéritos pedagógicos até 3-Jul 2013.
04 Jun - Aula de substituição (LEI-TP3): terá lugar na sala DIUM 1.08 no dia 7-Jun, 09h-11h.
03 Jun - Aula de substituição (LCC-T1): terá lugar no anfiteatro DIUM A.2 dia 5-Jun, 16h-18h.
02 Jun - Publicada no Material Pedagógico a ficha nr.12, destinada às aulas práticas da última semana de aulas.
30 Mai - Devido a um imprevisto, terão que ser canceladas duas aulas de amanhã, 31-Maio, a saber: LEI-TP3 [CPII - C2/205] e LCC-T1 [CPII - C2/202]. Oportunamente se fará uma proposta para a sua reposição.
26 Mai - Publicada no Material Pedagógico a ficha nr.11, destinada às aulas práticas desta semana.
09 Mai - Turnos LEI-TP4 e LEI-TP5 - pf ver em Sumários as aulas de substituição das que não houve no passado dia 7-Mai (atenção às salas, também).
06 Mai - Miniteste do dia 22-Maio: a matéria a avaliar vai até à Ficha nr.9 inclusivé. Ver hora e salas nos Sumários.
04 Mai - Publicada no Material Pedagógico a ficha nr.10, destinada às aulas práticas da semana que começa a 6-Mai.
27 Abr - Publicada no Material Pedagógico a ficha nr.9, destinada às aulas práticas da semana que começa a 29-Abr.
23 Abr - De novo devido a uma reunião na instituição, o docente do turno LEI/TP2 é forçado a adiar para 8-Maio, às 14h, no anfiteatro DI-A2, a aula suplementar inicialmente prevista para amanhã - ver Sumários.
20 Abr - Publicada no Material Pedagógico a ficha nr.8, destinada às aulas práticas da semana que começa a 22-Abr.
17 Abr - Devido a uma reunião do Conselho Científico da Escola de Engenharia, a que o docente do turno LEI/TP2 pertence, só poderá dar-se início à aula de substituição desta tarde às 17h, no mesmo anfiteatro.
14 Abr - Publicada no Material Pedagógico a ficha nr.7, destinada às aulas práticas da semana que começa a 15-Abr.
13 Abr - Turno LCC/TP1: atenção ao novo calendário das aulas de substituição, conforme se indica nos Sumários.
13 Abr - Notícia: School of Haskell Goes Public06 Abr - Publicada no Material Pedagógico a ficha nr.6, destinada às aulas práticas da semana que começa a 8-Abr.
04 Abr - Aulas dos turnos LCC/TP1 e LEI/TP2: devido a um imprevisto e a uma missão no estrangeiro as aulas desta e da próxima semana não terão lugar, sendo substituídas conforme se indica nos Sumários.
04 Abr - Alunos incontactáveis - ver Alunos.
27 Mar - Publicada no Material Pedagógico a ficha nr.5, destinada às aulas práticas da semana que começa a 2-Abr.
20 Mar - Aulas de compensação (turnos LCC/TP1 e LEI/TP2): Tal como foi sendo anunciado nos Sumários, as aulas em falta na semana passada serão compensadas esta tarde, nos horários aí anunciados.
15 Mar - Publicada no Material Pedagógico a ficha nr.4, destinada às aulas práticas da semana que começa a 18-Mar.
08 Mar - Publicada no Material Pedagógico a ficha nr.3, destinada às aulas práticas da semana que começa a 11-Mar.
03 Mar - Publicada no Material Pedagógico a ficha nr.2, destinada às aulas práticas da semana que começa a 04-Mar.
22 Fev - Publicada no Material Pedagógico a ficha nr.1, destinada às aulas práticas da semana que começa a 25-Fev.
14 Fev - Datas das avaliações: ver Sumários8 Fev - Turnos TP (LEI): ver Alunos7 Fev - Fotografias: os alunos que não têm fotografia no portal académico devem tratar de a disponibilizar o mais rapidamente possível. A falta de fotografia pode comprometer a componente de avaliação contínua desta disciplina.
6 Fev - Horário e turnos - ver Horário.
6 Fev - As aulas terão início a 18-Fev-2013.
6 Fev - Criada esta página de avisos.
24 Set - Notas do exame da época especial : estão publicadas em Alunos.
08 Set - Exame da época especial (LCC+LEI): 12-Set, 09h00, Sala CP2-304.
30 Ago - Exame da época especial (LCC+LEI): Sala a anunciar, 12-Set de manhã.
23 Jul - Classificações finais (à data da época de recurso): estão publicadas em Alunos.
21 Jul - Classificações à data da época de recurso: disponíveis em Alunos. Quem tiver nota negativa igual ou superior a 8 valores poderá submeter-se a exame oral. As orais terão lugar 3ª-feira, dia 23-Jul, das 14h às 17h, na sala DI 0.02.
20 Jul - Classificações (época de recurso): serão publicadas em Alunos antes de 22-Jul.
06 Jul - Os alunos deverão continuar a estar atentos à secção de FAQs do Material Pedagógico.
29 Jun - Classificações à data da época normal: estão publicadas em Alunos.
15 Jun - Algumas dúvidas frequentes encontram-se respondidas na secção de FAQs do Material Pedagógico.
11 Jun - Mini-teste de 22-Mai: no Material Pedagógico encontra-se o enunciado agora com correcção.
11 Jun - A aula suplementar do turmo LEI-TP3 (14-Jun) será às 10h-12h (sala DIUM 1.08) e não às 14h-16h como inicialmente previsto.
10 Jun - Classificações do mini-teste: estão publicadas em Alunos.
06 Jun - Aulas de substituição (LCC-TP2) e de dúvidas (LEI TP1,TP4,TP5): ver Sumários.
06 Jun - Chama-se a atenção dos alunos para o preenchimento na intranet dos inquéritos pedagógicos até 3-Jul 2013.
04 Jun - Aula de substituição (LEI-TP3): terá lugar na sala DIUM 1.08 no dia 7-Jun, 09h-11h.
03 Jun - Aula de substituição (LCC-T1): terá lugar no anfiteatro DIUM A.2 dia 5-Jun, 16h-18h.
02 Jun - Publicada no Material Pedagógico a ficha nr.12, destinada às aulas práticas da última semana de aulas.
30 Mai - Devido a um imprevisto, terão que ser canceladas duas aulas de amanhã, 31-Maio, a saber: LEI-TP3 [CPII - C2/205] e LCC-T1 [CPII - C2/202]. Oportunamente se fará uma proposta para a sua reposição.
26 Mai - Publicada no Material Pedagógico a ficha nr.11, destinada às aulas práticas desta semana.
09 Mai - Turnos LEI-TP4 e LEI-TP5 - pf ver em Sumários as aulas de substituição das que não houve no passado dia 7-Mai (atenção às salas, também).
06 Mai - Miniteste do dia 22-Maio: a matéria a avaliar vai até à Ficha nr.9 inclusivé. Ver hora e salas nos Sumários.
04 Mai - Publicada no Material Pedagógico a ficha nr.10, destinada às aulas práticas da semana que começa a 6-Mai.
27 Abr - Publicada no Material Pedagógico a ficha nr.9, destinada às aulas práticas da semana que começa a 29-Abr.
23 Abr - De novo devido a uma reunião na instituição, o docente do turno LEI/TP2 é forçado a adiar para 8-Maio, às 14h, no anfiteatro DI-A2, a aula suplementar inicialmente prevista para amanhã - ver Sumários.
20 Abr - Publicada no Material Pedagógico a ficha nr.8, destinada às aulas práticas da semana que começa a 22-Abr.
17 Abr - Devido a uma reunião do Conselho Científico da Escola de Engenharia, a que o docente do turno LEI/TP2 pertence, só poderá dar-se início à aula de substituição desta tarde às 17h, no mesmo anfiteatro.
14 Abr - Publicada no Material Pedagógico a ficha nr.7, destinada às aulas práticas da semana que começa a 15-Abr.
13 Abr - Turno LCC/TP1: atenção ao novo calendário das aulas de substituição, conforme se indica nos Sumários.
13 Abr - Notícia: School of Haskell Goes Public06 Abr - Publicada no Material Pedagógico a ficha nr.6, destinada às aulas práticas da semana que começa a 8-Abr.
04 Abr - Aulas dos turnos LCC/TP1 e LEI/TP2: devido a um imprevisto e a uma missão no estrangeiro as aulas desta e da próxima semana não terão lugar, sendo substituídas conforme se indica nos Sumários.
04 Abr - Alunos incontactáveis - ver Alunos.
27 Mar - Publicada no Material Pedagógico a ficha nr.5, destinada às aulas práticas da semana que começa a 2-Abr.
20 Mar - Aulas de compensação (turnos LCC/TP1 e LEI/TP2): Tal como foi sendo anunciado nos Sumários, as aulas em falta na semana passada serão compensadas esta tarde, nos horários aí anunciados.
15 Mar - Publicada no Material Pedagógico a ficha nr.4, destinada às aulas práticas da semana que começa a 18-Mar.
08 Mar - Publicada no Material Pedagógico a ficha nr.3, destinada às aulas práticas da semana que começa a 11-Mar.
03 Mar - Publicada no Material Pedagógico a ficha nr.2, destinada às aulas práticas da semana que começa a 04-Mar.
22 Fev - Publicada no Material Pedagógico a ficha nr.1, destinada às aulas práticas da semana que começa a 25-Fev.
14 Fev - Datas das avaliações: ver Sumários8 Fev - Turnos TP (LEI): ver Alunos7 Fev - Fotografias: os alunos que não têm fotografia no portal académico devem tratar de a disponibilizar o mais rapidamente possível. A falta de fotografia pode comprometer a componente de avaliação contínua desta disciplina.
6 Fev - Horário e turnos - ver Horário.
6 Fev - As aulas terão início a 18-Fev-2013.
6 Fev - Criada esta página de avisos.