8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente da avaliação), independentemente de melhorar ou não.
7 Jul As notas dos testes foram publicadas na secção de funcionamento. Os testes podem ser consultados na 6ª feira, dia 10 de Julho às 11h00.
25 Jun As notas da participação e as faltas foram publicadas na secção de funcionamento. Os alunos com mais de 5 faltas não estão admitidos a teste nem a exame.
9 Jun As notas dos projectos foram publicadas na secção de funcionamento.
6 Mai A folha para marcação das apresentações do projecto está na recepção do DI, no piso 0. Não será permitida a apresentação fora dos horários previstos nessa folha.
24 Mar Foi acrescentada uma FAQ ao enunciado do projecto. A mesma irá crescer à medida que surjam dúvidas de interesse geral.
17 Mar Já foi publicado o enunciado do projecto.
6 Mar As listas de inscrições nos turnos (e métodos de avaliação) definitivas encontram-se na secção de funcionamento. P.f. confirmem a vossa inscrição porque a partir do início da próxima semana não será possível fazer mais alterações.
2 Mar Decidimos criar um novo turno TP6 à 5ª feira, das 14h às 16h. Este turno destina-se ao método de avaliação A e é prioritariamente para alunos que estejam inscritos no 3º ano.
26 Fev As listas de inscritos em cada turma do método A encontram-se na secção de funcionamento. O único turno com vagas disponíveis para este método é o TP5. Alterações ou desistências só serão possíveis até à aula teórica do dia 5 de Março.
25 Fev A ficha para a primeira aula teórico-prática já se encontra na secção de material.
20 Fev As aulas começam no dia 26 de Fevereiro às 9h00 no anfiteatro CP2 104. A escolha dos turnos e método de avaliação será feita na primeira aula.
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina com a máxima urgência.
17 Jul O exame da época especial será no dia 21 de Setembro às 14h00 na sala 2206.
25 Jul As notas dos exames de recurso foram publicadas na secção de funcionamento. Os exames podem ser consultados na 3ª feira, dia 28 de Julho às 11h00 na sala DI 0.02. As orais para os alunos com notas de 8 e 9 serão no mesmo dia e sala às 14h00.
9 Jul A consulta dos testes será na sala DI 0.02.
Arquivo
Os alunos devem escolher um dos seguintes métodos de avaliação:
Método A:
Prova individual escrita com nota mínima de 8 valores (60%).
Projecto prático desenvolvido em grupos de 2 alunos (30%).
Participação nas aulas práticas (10%).
Presença obrigatória nas aulas teórico-práticas.
Método B:
Prova individual escrita com nota mínima de 10 valores (100%).
O método de avaliação A só é válido para alunos de primeira inscrição e que não se encontrem enquadrados pelos regimes especiais de frequência referidos no artigo 19º do RIAPA; no entanto, abrimos uma execpção para qualquer outro aluno desde que prescinda do direito de não ter frequência que lhe confere o artigo 9º do RIAPA. O método A só poderá ser escolhido uma vez: quem optar por este método este ano e não obtiver aprovação terá necessariamente que optar pelo método B no próximo ano e seguintes. Os turnos práticos a frequentar são diferentes conforme o método de avaliação escolhido.
J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 já estão disponíveis.
A. Cunha. Cálculo de Programas: notas teórico-práticas. Departamento de Informática, Universidade do Minho, 2005. Documento em preparação: versão actual.
O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point-free. Mais especificamente, dada uma equação para demonstrar, o programa deverá listar a sequência de passos necessária para efectuar a respectiva prova. Por exemplo, caso se pretenda demonstrar que swap . swap = id, o programa poderá gerar o seguinte resultado:
swap . swap = id
<=> { Def-swap }
(snd /\ fst) . (snd /\ fst) = id
<=> { Fusion-x }
snd . (snd /\ fst) /\ fst . (snd /\ fst) = id
<=> { Cancel-x }
fst /\ snd = id
<=> { Reflex-x }
id = id
Dado que a mesma prova pode ser efectuada de muitas formas distintas, é natural que o resultado apresentado pelo vosso programa para este exemplo seja ligeiramente diferente.
Para obter aprovação no projecto, o programa deverá ser capaz de resolver automaticamente todas as alíneas da pergunta 3 da Ficha 2 (para além do exemplo acima).
Extras
Para obter notas superiores a 16 poderá ser realizado algum dos seguintes extras:
Possibilidade de parametrizar o programa com a lista de leis a usar (enumeradas num ficheiro de acordo com uma sintaxe a definir).
Possibilidade de ajudar o programa nalgumas provas mais complexas. Por exemplo, sempre que a prova não pode prosseguir de forma óbvia, poderá ser dada a possibilidade ao utilizador de indicar manualmente qual a próxima lei a aplicar. Neste caso poderá ser útil implementar uma funcionalidade de undo, para permitir ao utilizador tentar uma lei diferente.
Inferência de tipos: determinar automaticamente o tipo de uma expressão. Esta funcionalidade poderia servir para alertar o utilizador caso o mesma introduza expressões semanticamente incorrectas, tais como fst . inl. Também poderá ser útil para detectar a possibilidade de aplicar certas leis: por exemplo, a lei universal do tipo 1 diz que qualquer função h :: a -> 1 pode ser imediatamente substituída por bang.
Conversão automática de definições point-free para o estilo pointwise.
Logística
O projecto deverá ser realizado em grupos de 2 alunos. Poderão usar a linguagem de programação que quiserem. O projecto deverá ser apresentado aos docentes nos dias 11 e 12 de Maio. Em princípio, também poderá ser apresentado numa das semanas anteriores em data a definir. A apresentação terá a duração de 30m. Para além do programa, deverão trazer para a apresentação um pequeno relatório onde descrevem sucintamente a estratégia que adoptaram para resolver este problema. Caso seja detectado plágio ou cópia, todos os grupos envolvidos ficarão imediatamente reprovados à disciplina, sem direito a qualquer recurso.
FAQ
O input para o programa vai ser uma string com a equação a provar?
Não necessariamente. A forma mais simples de resolver este problema consiste em representar a equação usando uma árvore de expressão (onde os nós representam combinadores e as folhas representam variáveis ou funções primitivas). Passar de uma string para esta árvore de expressão é um problema complicado (designado parsing), que só vai ser estudado com profundidade em Processamento de Linguagens no 3º ano. Assim sendo, admitimos que a equação seja passada ao programa directamente sob a forma de uma árvore. No entanto, o resultado da demonstração deve ser mostrado de forma semelhante à apresentada no enunciado. O parsing é precisamente um dos extras possíveis.
As 3 primeiras alíneas da pergunta 3 da Ficha 2 correspondem a leis do formulário. A prova consiste apenas na aplicação de uma lei?
Não. Tal como explicado nas aulas, não faz qualquer sentido provar uma lei usando a própria lei. Para ser um pouco mais preciso, o programa deve ser capaz de demonstrar todas as alíneas da pergunta 3 sem usar as leis Absor-x, Functor-x, e Functor-Id-x.
É mais fácil resolver este problema em Haskell ou em C?
Depende da vossa proficiência em cada uma das linguagens. Em ambas é relativamente simples representar árvores de expressão e implementar as funções básicas para manipular essas árvores. O mesmo se aplica a qualquer outra linguagem decente.
Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples:
data Exp = Const Int
| Var String
| Add Exp Exp
| Sub Exp Exp
data Cond = Eq Exp Exp
| Gt Exp Exp
data Lang = Atrib String Exp
| If Cond Lang Lang
| While Cond Lang
| Seq Lang Lang
Na linguagem Lang seria possível escrever um programa para calcular o máximo de dois números da seguinte forma:
x = 3;
y = 4;
if (x>y) r = x else r = y;
Note que nesta linguagem não existe input/output, sendo o resultado de executar um programa o valor final das suas variáveis. As variáveis de um programa Lang são sempre do tipo inteiro. Em Haskell este programa seria representado pelo seguinte termo:
Escrever um interpretador para a linguagem Lang, ou seja, uma função que dado um programa devolve o valor final das suas variáveis.
Relembre a arquitectura Y86 que é leccionada nas disciplinas de Sistemas de Computação e Arquitectura de Computadores. A descrição simplificada desta arquitectura pode ser encontrada aqui.
É relativamente simples compilar programas escritos em Lang para esta arquitectura. Por exemplo, o seguinte programa em Y86 é um possível resultado de compilar o programa maximo.
Escrever um compilador que, dado um programa escrito em Lang, gere um programa Y86 equivalente.
Para que o programa acima possa executar na máquina Y86 tem que antes passar por um assembler, que o converte numa sequência de bytes pronta a carregar na memória. Cada instrução é codificada numa sequência de 1 a 6 bytes de acordo com o documento acima referido. Também é necessário converter a tags em endereços de memória absolutos, tendo em atenção não só o comprimento de cada instrução, mas também as directivas pos usadas.
Implemente um simulador da arquitectura Y86. Este simulador é uma função que, dada a sequência de bytes produzida pelo assembler, carrega essa sequência na memória e começa a execução do programa com o PC a zero. O resultado desta função é o estado final da memória, dos registos e das flags.
Para além das tarefas apresentadas acima, cada grupo deve implementar mais alguma funcionalidade à sua escolha. Sugerem-se as seguintes, por ordem de preferência: teste da correcção do compilador usando QuickCheck; incluir funcionalidades de debugging no simulador que permitam consultar o estado da máquina durante a sua execução; extender a funcionalidade da linguagem Lang, nomeadamente incluindo a possibilidade de definir e invocar funções.
Logística
O projecto deverá ser realizado em grupos de 3 alunos. Toda a documentação (vulgo relatório) deve ser desenvolvida em literate Haskell ou afins (Haddock, lhs2TeX, ...).
Para ter aprovação no projecto é necessário executar no mínimo a tarefa 4 mais uma das 3 primeiras tarefas. A tarefa 5 vale 3 valores. Naturalmente, deverão sempre que possível usar monads na resolução das tarefas descritas.
O projecto deverá ser apresentado preferencialmente nos dias 12 e 13 de Maio à tarde. Opcionalmente, poderá ser apresentado no dia 7 de Maio também à tarde. A apresentação terá a duração de 30m. As folhas para marcação da apresentação serão disponibilizadas na recepção do departamento na semana de 7 a 11 de Abril. Não serão permitidas marcações fora deste período.
TWiki's Education/CP0809 webThe Education/CP0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809Copyright 2020 by contributing authors2020-10-30T14:38:59ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebStatistics2020-10-30T14:38:59ZStatistics for Education/CP0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebSideBar2010-02-23T10:38:12ZTópicos Apresentação principal Programa Funcionamento Calendário Material Projecto Avisos (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialApoiohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/MaterialApoio2010-02-23T08:51:58ZBibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ... (last changed by JoseNunoOliveira)JoseNunoOliveiraArquivohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Arquivo2009-09-27T16:33:15Z8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ... (last changed by AlcinoCunha)AlcinoCunhaAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Avisos2009-09-27T16:32:59Z27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ... (last changed by AlcinoCunha)AlcinoCunhaFuncionamentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Funcionamento2009-09-27T16:31:13ZEquipa docente Alcino Cunha Bernardo Barros João Frade Avaliação Os alunos devem escolher um dos seguintes métodos de avaliação: Método A: Prova ... (last changed by AlcinoCunha)AlcinoCunhaProgramahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Programa2009-04-01T11:43:26ZCálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ... (last changed by AlcinoCunha)AlcinoCunhaWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebHome2009-04-01T11:42:19ZDès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ... (last changed by AlcinoCunha)AlcinoCunhaProjectohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto2009-03-24T17:49:53ZEnunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ... (last changed by AlcinoCunha)AlcinoCunhaProjecto0708http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto07082009-02-20T14:00:21ZEnunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ... (last changed by AlcinoCunha)AlcinoCunhaCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Calendario2008-02-19T15:30:29Z (last changed by AlcinoCunha)AlcinoCunhaWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebPreferences2008-02-19T15:04:37ZEducation/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/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/CP0809/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunhaWebLeftBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebLeftBar2007-02-13T10:35:33ZApresentação Sumários Projectos Material (last changed by AlcinoCunha)AlcinoCunha
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ...
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ...
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ...
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ...
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ...
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ...
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que les géomètres modernes ont su imprimer à leurs recherches, et au moyen de laquelle l'esprit saisit promptement et d'un seul coup un grand nombre d'opérations.
Il est évident que l'élégance si vantée et à si juste titre, n'a pas d'autre but...
Sauter à pieds joints sur ces calculs; grouper les opérations, les classer suivant leurs difficultés et non suivant leurs formes; telle est, suivant moi, la mission des géomètres futurs; telle est la voie où je suis entré dans cet ouvrage.
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ...
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ...
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ...
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ...
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ...
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ...
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 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/CP0809 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/CP0809.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 = Licenciatura em Engenharia Informática
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/CP0809 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/CP0809
The Education/CP0809 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/CP0809
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebSideBar
Tópicos Apresentação principal Programa Funcionamento Calendário Material Projecto Avisos (last changed by JoseNunoOliveira)2010-02-23T10:38:12ZJoseNunoOliveiraMaterialApoio
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/MaterialApoio
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ... (last changed by JoseNunoOliveira)2010-02-23T08:51:58ZJoseNunoOliveiraArquivo
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Arquivo
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ... (last changed by AlcinoCunha)2009-09-27T16:33:15ZAlcinoCunhaAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Avisos
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ... (last changed by AlcinoCunha)2009-09-27T16:32:59ZAlcinoCunhaFuncionamento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Funcionamento
Equipa docente Alcino Cunha Bernardo Barros João Frade Avaliação Os alunos devem escolher um dos seguintes métodos de avaliação: Método A: Prova ... (last changed by AlcinoCunha)2009-09-27T16:31:13ZAlcinoCunhaPrograma
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Programa
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ... (last changed by AlcinoCunha)2009-04-01T11:43:26ZAlcinoCunhaWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebHome
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ... (last changed by AlcinoCunha)2009-04-01T11:42:19ZAlcinoCunhaProjecto
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ... (last changed by AlcinoCunha)2009-03-24T17:49:53ZAlcinoCunhaProjecto0708
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto0708
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ... (last changed by AlcinoCunha)2009-02-20T14:00:21ZAlcinoCunhaCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Calendario
(last changed by AlcinoCunha)2008-02-19T15:30:29ZAlcinoCunhaWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebPreferences
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2008-02-19T15:04:37ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/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/CP0809/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunhaWebChanges
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebChanges
(last changed by TWikiContributor)2006-11-15T19:43:52ZTWikiContributor
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente da avaliação), independentemente de melhorar ou não.
7 Jul As notas dos testes foram publicadas na secção de funcionamento. Os testes podem ser consultados na 6ª feira, dia 10 de Julho às 11h00.
25 Jun As notas da participação e as faltas foram publicadas na secção de funcionamento. Os alunos com mais de 5 faltas não estão admitidos a teste nem a exame.
9 Jun As notas dos projectos foram publicadas na secção de funcionamento.
6 Mai A folha para marcação das apresentações do projecto está na recepção do DI, no piso 0. Não será permitida a apresentação fora dos horários previstos nessa folha.
24 Mar Foi acrescentada uma FAQ ao enunciado do projecto. A mesma irá crescer à medida que surjam dúvidas de interesse geral.
17 Mar Já foi publicado o enunciado do projecto.
6 Mar As listas de inscrições nos turnos (e métodos de avaliação) definitivas encontram-se na secção de funcionamento. P.f. confirmem a vossa inscrição porque a partir do início da próxima semana não será possível fazer mais alterações.
2 Mar Decidimos criar um novo turno TP6 à 5ª feira, das 14h às 16h. Este turno destina-se ao método de avaliação A e é prioritariamente para alunos que estejam inscritos no 3º ano.
26 Fev As listas de inscritos em cada turma do método A encontram-se na secção de funcionamento. O único turno com vagas disponíveis para este método é o TP5. Alterações ou desistências só serão possíveis até à aula teórica do dia 5 de Março.
25 Fev A ficha para a primeira aula teórico-prática já se encontra na secção de material.
20 Fev As aulas começam no dia 26 de Fevereiro às 9h00 no anfiteatro CP2 104. A escolha dos turnos e método de avaliação será feita na primeira aula.
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina com a máxima urgência.
17 Jul O exame da época especial será no dia 21 de Setembro às 14h00 na sala 2206.
25 Jul As notas dos exames de recurso foram publicadas na secção de funcionamento. Os exames podem ser consultados na 3ª feira, dia 28 de Julho às 11h00 na sala DI 0.02. As orais para os alunos com notas de 8 e 9 serão no mesmo dia e sala às 14h00.
9 Jul A consulta dos testes será na sala DI 0.02.
Arquivo
Os alunos devem escolher um dos seguintes métodos de avaliação:
Método A:
Prova individual escrita com nota mínima de 8 valores (60%).
Projecto prático desenvolvido em grupos de 2 alunos (30%).
Participação nas aulas práticas (10%).
Presença obrigatória nas aulas teórico-práticas.
Método B:
Prova individual escrita com nota mínima de 10 valores (100%).
O método de avaliação A só é válido para alunos de primeira inscrição e que não se encontrem enquadrados pelos regimes especiais de frequência referidos no artigo 19º do RIAPA; no entanto, abrimos uma execpção para qualquer outro aluno desde que prescinda do direito de não ter frequência que lhe confere o artigo 9º do RIAPA. O método A só poderá ser escolhido uma vez: quem optar por este método este ano e não obtiver aprovação terá necessariamente que optar pelo método B no próximo ano e seguintes. Os turnos práticos a frequentar são diferentes conforme o método de avaliação escolhido.
J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 já estão disponíveis.
A. Cunha. Cálculo de Programas: notas teórico-práticas. Departamento de Informática, Universidade do Minho, 2005. Documento em preparação: versão actual.
O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point-free. Mais especificamente, dada uma equação para demonstrar, o programa deverá listar a sequência de passos necessária para efectuar a respectiva prova. Por exemplo, caso se pretenda demonstrar que swap . swap = id, o programa poderá gerar o seguinte resultado:
swap . swap = id
<=> { Def-swap }
(snd /\ fst) . (snd /\ fst) = id
<=> { Fusion-x }
snd . (snd /\ fst) /\ fst . (snd /\ fst) = id
<=> { Cancel-x }
fst /\ snd = id
<=> { Reflex-x }
id = id
Dado que a mesma prova pode ser efectuada de muitas formas distintas, é natural que o resultado apresentado pelo vosso programa para este exemplo seja ligeiramente diferente.
Para obter aprovação no projecto, o programa deverá ser capaz de resolver automaticamente todas as alíneas da pergunta 3 da Ficha 2 (para além do exemplo acima).
Extras
Para obter notas superiores a 16 poderá ser realizado algum dos seguintes extras:
Possibilidade de parametrizar o programa com a lista de leis a usar (enumeradas num ficheiro de acordo com uma sintaxe a definir).
Possibilidade de ajudar o programa nalgumas provas mais complexas. Por exemplo, sempre que a prova não pode prosseguir de forma óbvia, poderá ser dada a possibilidade ao utilizador de indicar manualmente qual a próxima lei a aplicar. Neste caso poderá ser útil implementar uma funcionalidade de undo, para permitir ao utilizador tentar uma lei diferente.
Inferência de tipos: determinar automaticamente o tipo de uma expressão. Esta funcionalidade poderia servir para alertar o utilizador caso o mesma introduza expressões semanticamente incorrectas, tais como fst . inl. Também poderá ser útil para detectar a possibilidade de aplicar certas leis: por exemplo, a lei universal do tipo 1 diz que qualquer função h :: a -> 1 pode ser imediatamente substituída por bang.
Conversão automática de definições point-free para o estilo pointwise.
Logística
O projecto deverá ser realizado em grupos de 2 alunos. Poderão usar a linguagem de programação que quiserem. O projecto deverá ser apresentado aos docentes nos dias 11 e 12 de Maio. Em princípio, também poderá ser apresentado numa das semanas anteriores em data a definir. A apresentação terá a duração de 30m. Para além do programa, deverão trazer para a apresentação um pequeno relatório onde descrevem sucintamente a estratégia que adoptaram para resolver este problema. Caso seja detectado plágio ou cópia, todos os grupos envolvidos ficarão imediatamente reprovados à disciplina, sem direito a qualquer recurso.
FAQ
O input para o programa vai ser uma string com a equação a provar?
Não necessariamente. A forma mais simples de resolver este problema consiste em representar a equação usando uma árvore de expressão (onde os nós representam combinadores e as folhas representam variáveis ou funções primitivas). Passar de uma string para esta árvore de expressão é um problema complicado (designado parsing), que só vai ser estudado com profundidade em Processamento de Linguagens no 3º ano. Assim sendo, admitimos que a equação seja passada ao programa directamente sob a forma de uma árvore. No entanto, o resultado da demonstração deve ser mostrado de forma semelhante à apresentada no enunciado. O parsing é precisamente um dos extras possíveis.
As 3 primeiras alíneas da pergunta 3 da Ficha 2 correspondem a leis do formulário. A prova consiste apenas na aplicação de uma lei?
Não. Tal como explicado nas aulas, não faz qualquer sentido provar uma lei usando a própria lei. Para ser um pouco mais preciso, o programa deve ser capaz de demonstrar todas as alíneas da pergunta 3 sem usar as leis Absor-x, Functor-x, e Functor-Id-x.
É mais fácil resolver este problema em Haskell ou em C?
Depende da vossa proficiência em cada uma das linguagens. Em ambas é relativamente simples representar árvores de expressão e implementar as funções básicas para manipular essas árvores. O mesmo se aplica a qualquer outra linguagem decente.
Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples:
data Exp = Const Int
| Var String
| Add Exp Exp
| Sub Exp Exp
data Cond = Eq Exp Exp
| Gt Exp Exp
data Lang = Atrib String Exp
| If Cond Lang Lang
| While Cond Lang
| Seq Lang Lang
Na linguagem Lang seria possível escrever um programa para calcular o máximo de dois números da seguinte forma:
x = 3;
y = 4;
if (x>y) r = x else r = y;
Note que nesta linguagem não existe input/output, sendo o resultado de executar um programa o valor final das suas variáveis. As variáveis de um programa Lang são sempre do tipo inteiro. Em Haskell este programa seria representado pelo seguinte termo:
Escrever um interpretador para a linguagem Lang, ou seja, uma função que dado um programa devolve o valor final das suas variáveis.
Relembre a arquitectura Y86 que é leccionada nas disciplinas de Sistemas de Computação e Arquitectura de Computadores. A descrição simplificada desta arquitectura pode ser encontrada aqui.
É relativamente simples compilar programas escritos em Lang para esta arquitectura. Por exemplo, o seguinte programa em Y86 é um possível resultado de compilar o programa maximo.
Escrever um compilador que, dado um programa escrito em Lang, gere um programa Y86 equivalente.
Para que o programa acima possa executar na máquina Y86 tem que antes passar por um assembler, que o converte numa sequência de bytes pronta a carregar na memória. Cada instrução é codificada numa sequência de 1 a 6 bytes de acordo com o documento acima referido. Também é necessário converter a tags em endereços de memória absolutos, tendo em atenção não só o comprimento de cada instrução, mas também as directivas pos usadas.
Implemente um simulador da arquitectura Y86. Este simulador é uma função que, dada a sequência de bytes produzida pelo assembler, carrega essa sequência na memória e começa a execução do programa com o PC a zero. O resultado desta função é o estado final da memória, dos registos e das flags.
Para além das tarefas apresentadas acima, cada grupo deve implementar mais alguma funcionalidade à sua escolha. Sugerem-se as seguintes, por ordem de preferência: teste da correcção do compilador usando QuickCheck; incluir funcionalidades de debugging no simulador que permitam consultar o estado da máquina durante a sua execução; extender a funcionalidade da linguagem Lang, nomeadamente incluindo a possibilidade de definir e invocar funções.
Logística
O projecto deverá ser realizado em grupos de 3 alunos. Toda a documentação (vulgo relatório) deve ser desenvolvida em literate Haskell ou afins (Haddock, lhs2TeX, ...).
Para ter aprovação no projecto é necessário executar no mínimo a tarefa 4 mais uma das 3 primeiras tarefas. A tarefa 5 vale 3 valores. Naturalmente, deverão sempre que possível usar monads na resolução das tarefas descritas.
O projecto deverá ser apresentado preferencialmente nos dias 12 e 13 de Maio à tarde. Opcionalmente, poderá ser apresentado no dia 7 de Maio também à tarde. A apresentação terá a duração de 30m. As folhas para marcação da apresentação serão disponibilizadas na recepção do departamento na semana de 7 a 11 de Abril. Não serão permitidas marcações fora deste período.
TWiki's Education/CP0809 webThe Education/CP0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809Copyright 2020 by contributing authors2020-10-30T14:38:59ZWebStatisticshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebStatistics2020-10-30T14:38:59ZStatistics for Education/CP0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ... (last changed by TWikiGuest)TWikiGuestWebSideBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebSideBar2010-02-23T10:38:12ZTópicos Apresentação principal Programa Funcionamento Calendário Material Projecto Avisos (last changed by JoseNunoOliveira)JoseNunoOliveiraMaterialApoiohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/MaterialApoio2010-02-23T08:51:58ZBibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ... (last changed by JoseNunoOliveira)JoseNunoOliveiraArquivohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Arquivo2009-09-27T16:33:15Z8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ... (last changed by AlcinoCunha)AlcinoCunhaAvisoshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Avisos2009-09-27T16:32:59Z27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ... (last changed by AlcinoCunha)AlcinoCunhaFuncionamentohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Funcionamento2009-09-27T16:31:13ZEquipa docente Alcino Cunha Bernardo Barros João Frade Avaliação Os alunos devem escolher um dos seguintes métodos de avaliação: Método A: Prova ... (last changed by AlcinoCunha)AlcinoCunhaProgramahttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Programa2009-04-01T11:43:26ZCálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ... (last changed by AlcinoCunha)AlcinoCunhaWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebHome2009-04-01T11:42:19ZDès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ... (last changed by AlcinoCunha)AlcinoCunhaProjectohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto2009-03-24T17:49:53ZEnunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ... (last changed by AlcinoCunha)AlcinoCunhaProjecto0708http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto07082009-02-20T14:00:21ZEnunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ... (last changed by AlcinoCunha)AlcinoCunhaCalendariohttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Calendario2008-02-19T15:30:29Z (last changed by AlcinoCunha)AlcinoCunhaWebPreferenceshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebPreferences2008-02-19T15:04:37ZEducation/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)AlcinoCunhaWebTopicActionshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebTopicActions2007-05-18T08:03:35Z (last changed by AlcinoCunha)AlcinoCunhaWebCsshttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/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/CP0809/WebTopBar2007-02-13T14:43:04Z (last changed by AlcinoCunha)AlcinoCunhaWebLeftBarhttp://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebLeftBar2007-02-13T10:35:33ZApresentação Sumários Projectos Material (last changed by AlcinoCunha)AlcinoCunha
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ...
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ...
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ...
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ...
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ...
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ...
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que les géomètres modernes ont su imprimer à leurs recherches, et au moyen de laquelle l'esprit saisit promptement et d'un seul coup un grand nombre d'opérations.
Il est évident que l'élégance si vantée et à si juste titre, n'a pas d'autre but...
Sauter à pieds joints sur ces calculs; grouper les opérations, les classer suivant leurs difficultés et non suivant leurs formes; telle est, suivant moi, la mission des géomètres futurs; telle est la voie où je suis entré dans cet ouvrage.
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ...
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ...
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ...
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ...
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ...
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ...
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ...
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 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/CP0809 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/CP0809.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 = Licenciatura em Engenharia Informática
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/CP0809 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/CP0809
The Education/CP0809 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/CP0809
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809
/twiki/pub/Main/LocalLogos/um_eengP.jpgWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebSideBar
Tópicos Apresentação principal Programa Funcionamento Calendário Material Projecto Avisos (last changed by JoseNunoOliveira)2010-02-23T10:38:12ZJoseNunoOliveiraMaterialApoio
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/MaterialApoio
Bibliografia J.N. Oliveira. Program Design by Calculation . Departamento de Informática, Universidade do Minho, 2005. Livro em preparação: os capítulos 2, 3 e 4 ... (last changed by JoseNunoOliveira)2010-02-23T08:51:58ZJoseNunoOliveiraArquivo
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Arquivo
8 Jul Todos os alunos admitidos podem ir ao exame de recurso, mesmo que já tenham obtido aprovação. Quem entregar o exame ficará com a nota respectiva (nessa componente ... (last changed by AlcinoCunha)2009-09-27T16:33:15ZAlcinoCunhaAvisos
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Avisos
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina ... (last changed by AlcinoCunha)2009-09-27T16:32:59ZAlcinoCunhaFuncionamento
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Funcionamento
Equipa docente Alcino Cunha Bernardo Barros João Frade Avaliação Os alunos devem escolher um dos seguintes métodos de avaliação: Método A: Prova ... (last changed by AlcinoCunha)2009-09-27T16:31:13ZAlcinoCunhaPrograma
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Programa
Cálculo point free Programação funcional usando combinadores. Álgebra da programação funcional: propriedades universais. Técnicas para eliminação de ... (last changed by AlcinoCunha)2009-04-01T11:43:26ZAlcinoCunhaWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebHome
Dès le commencement de ce siècle, l'algorithme avait atteint un degré de complication tel que tout progrès était devenu impossible par ce moyen, sans l'élégance que ... (last changed by AlcinoCunha)2009-04-01T11:42:19ZAlcinoCunhaProjecto
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto
Enunciado O objectivo do projecto deste ano é desenvolver um programa capaz de automatizar o cálculo de programas no estilo point free . Mais especificamente, dada ... (last changed by AlcinoCunha)2009-03-24T17:49:53ZAlcinoCunhaProjecto0708
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Projecto0708
Enunciado do Projecto0708 Considere o seguinte tipo Haskell para representar uma linguagem de programação imperativa muito simples: data Exp Const Int ... (last changed by AlcinoCunha)2009-02-20T14:00:21ZAlcinoCunhaCalendario
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/Calendario
(last changed by AlcinoCunha)2008-02-19T15:30:29ZAlcinoCunhaWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebPreferences
Education/CP0809 Web Preferences The following settings are web preferences of the Education/CP0809 web. These preferences overwrite the site level preferences ... (last changed by AlcinoCunha)2008-02-19T15:04:37ZAlcinoCunhaWebTopicActions
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebTopicActions
(last changed by AlcinoCunha)2007-05-18T08:03:35ZAlcinoCunhaWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/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/CP0809/WebTopBar
(last changed by AlcinoCunha)2007-02-13T14:43:04ZAlcinoCunhaWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebLeftBar
Apresentação Sumários Projectos Material (last changed by AlcinoCunha)2007-02-13T10:35:33ZAlcinoCunhaWebChanges
http://wiki.di.uminho.pt/twiki/bin/view/Education/CP0809/WebChanges
(last changed by TWikiContributor)2006-11-15T19:43:52ZTWikiContributor
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina com a máxima urgência.
17 Jul O exame da época especial será no dia 21 de Setembro às 14h00 na sala 2206.
25 Jul As notas dos exames de recurso foram publicadas na secção de funcionamento. Os exames podem ser consultados na 3ª feira, dia 28 de Julho às 11h00 na sala DI 0.02. As orais para os alunos com notas de 8 e 9 serão no mesmo dia e sala às 14h00.
9 Jul A consulta dos testes será na sala DI 0.02.
Arquivo
27 Set As notas da época especial foram publicadas na secção de funcionamento. O aluno que não preencheu o nome deve contactar pessoalmente o responsável da disciplina com a máxima urgência.
17 Jul O exame da época especial será no dia 21 de Setembro às 14h00 na sala 2206.
25 Jul As notas dos exames de recurso foram publicadas na secção de funcionamento. Os exames podem ser consultados na 3ª feira, dia 28 de Julho às 11h00 na sala DI 0.02. As orais para os alunos com notas de 8 e 9 serão no mesmo dia e sala às 14h00.
9 Jul A consulta dos testes será na sala DI 0.02.
Arquivo