...collaborate on

Search: \.*

Education/Archive Web Changed Changed by
AdvancedFunctionalProgramming 20 Sep 2005 - 14:48 - r10 MariaJoaoFrade

Programação Funcional Avançada 2004 / 2005

AKA: Advanced Functional Programming


General information

Advanced Functional Programming is an optional course made available for 5th year students of the following degrees:

  • 5309?? - Licenciatura em Engenharia de Sistemas e Informática
  • 7009?? - Licenciatura em Matemática e Ciências da Computação


Course Staff

(Alphabetically ordered by surname) J.C. Bacelar, J.B. Barros, M.A. Cunha, J.N. Oliveira J.S. Pinto, J.A. Saraiva (course leader), Joost Visser,


Structure of the Course

The course is organised into two parts:

  1. A set of seminars introducing relevant topics to be covered. This seminars will be primarily given by the students. Some more advanced material, however, can/will be presented by the course lecturers or by guests visiting the department.
  2. In the second, more substantial part of the course, students will develop a project (see List of Projects Available).

Number of students: Minimum 5, maximum 10.


Assessment

The following three items will be taken into account for student evaluation:

A - Background lecture

The students will deliver a short lecture (20m) introducing one of the topics covered in the course.

B - Brief Project/Tool Presentation

The different groups will give a lecture (30m) presenting the project they have chosen for development and the tool(s) that will be used in this task.

C - Project Presentation and Report

Each group will give a lecture presenting the project.

The final mark is computed according to the formula:

A * 0.2 + B * 0.3 + C * 0.5


Program synopsis

Main topics of the course are:

  • Imperative Functional Programming
    • Monads and Effects
    • Robots
    • Graphical User Interfaces
      • Functional Programming for the Web
        • Scripting Combinators (Wash-CGI)
        • HaXML? /XQuery
        • Language Processing in Strafunski
        • HASKELL development tools
    • Advanced Functional Data Structures
    • Program transformation techniques


Program in detail

  • Week 1 (2004.10.06): kick off: definition of topics and projects

  • Week 2 (2004.10.13): meetings with supervisors

  • Week 3 (2004.10.17): talk by Simon Thompson
    • When/Where: Oct 20nd, 3pm, room DI-A1
    • Title: Refactoring Functional Programs
    • Abstract: Refactoring is about improving the design of existing computer programs and systems; as such it is familiar to every programmer, software engineer and designer. Its key characteristic is the focus on structural change, strictly separated from changes in functionality. A structural change can make a program simpler, by removing duplicate code, say, or can be the preparatory step for an upgrade or extension of a system.
      It is characteristic of refactorings that they are 'diffuse' and 'bureaucratic': consider the example of the simplest possible refactoring: renaming a component of a program. To effect this change requires not only the component definition to be changed, but also every use of the component must be similiarly modified. This involves changing every file/module which might use the component, potentially tens or hundreds of modules. Moreover, it is equally vital not to change any components hidden in other parts of the system which happen to share the same name. Of course, it is possible to do refactorings 'by hand', but this process is tedious and, more importantly, error-prone. Automated support for refactorings makes them safe and easy to perform and also secure in their implementation.
      The 'Refactoring Functional Programs' project comprising Huiqing Li, Claus Reinke and Simon Thompson is building the HaRe system to support refactorings for Haskell programs. HaRe is designed as a serious tool for use by practising programmers: HaRe supports the whole of the Haskell; it is integrated into standard development environments and it preserves the 'look and feel' of refactored programs. HaRe is built using a number of existing libraries: 'Programatica' provides tools on which to build the language-analysis components, and 'Strafunski' gives general support for tree transformations.
    • Links: http://www.cs.kent.ac.uk/projects/refactor-fp

  • Week 4 (2003.10.24): students project presentations (item B)

  • Week 5 (2004.11.31): talk by Joost Visser
    • When/Where: Oct 28, 16:00-18:00, room DI-1.04
    • Title: Strafunski: a Haskell-centered bundle for generic programming and language processing
    • Abstract: Strafunski is a bundle of a combinator library and various generative tools that support key tasks in language processing: parser generation and traversal. The traversal support is based on the notion of functional strategies: generic functions that can traverse into terms of any type while mixing type-specific and uniform behaviour. The parsing support is involves connectivity to the Generalized LR parser SGLR. Finally, an enhanced version of DrIFT ensures that traversal and parsing support can easily be deployed for (extremely) large languages such as Java or Cobol. The following will be covered in the talk:
      • Essentials of Strafunski: concepts and architecture, relationship to GHC's Data.Generics.
      • Hands-on session of strategic programming with Strafunski.
      • Design patterns for programming with Strafunski.
    • Slides: http://www.di.uminho.pt/~jno/html/StrafunskiAFP.pdf
    • Links:

  • Week 7 (2003.11.17): meetings with supervisors

  • Week 8 (2003.11.24): Tutorials by Doaitse Swierstra
    • When/Where: Nov 23, 14:00-16:00, room Sala de Reuniões
    • Title: Linear, Online, Functional Pretty Printing
    • Abstract: We present an implementation of Oppen's Pretty printing solution in Haskell. The algorithm is linear in the size of the input, independent of the line width, uses limited look ahead, and has online behaviour.
    • Title: Parsing permutation phrases
    • Abstract: A permutation phrase is a sequence of elements (possibly of different types) in which each element occurs exactly once and the order is irrelevant. Some of the permutable elements may be optional. We show how to extend a parser combinator library with support for parsing such free-order constructs. A user of the library can easily write parsers for permutation phrases and does not need to care about checking and reordering the recognized elements. Applications include the generation of parsers for attributes of XML tags and Haskell's record syntax.

  • Week 9 (2003.12.01):
    • Luís Pedro Machado presents the project: Embedding Disambiguation Rules in the HaGLR System
    • meetings with supervisors

  • Week 10 (2003.12.08): J.M.Valença
    • Monadic Strategies - the teachers allocation problem
    • program files here

  • Week 11 (2003.12.15):
    • Students present the studied papers (see literature section in projects).

  • January 2004: project presentations (item C)


List of Projects Available

List of projects announced so far :


Final Marks

Information to become available in due time.


Outras disciplinas leccionadas pelo DIUM:
AlgoritmosComplexidade 04 Mar 2006 - 01:48 - r18 JorgeSousaPinto
Notícias

Notas da época de recurso disponibilizadas nesta página

-- JorgeSousaPinto - 04 Mar 2006

Notas da época normal disponibilizadas nesta página

-- JorgeSousaPinto - 07 Feb 2006

Disponíveis nesta página:

  • Notas do TP
  • Slides relativos ao 3o. capítulo da matéria (Problemas NP-completos)

-- JorgeSousaPinto - 15 Dec 2005

Disponíveis nesta página os slides relativos ao primeiro capítulo da matéria (Análise de Algoritmos) e um conjunto de enunciados de exercícios sobre este tema.

-- JorgeSousaPinto - 19 Nov 2005

Disponível nesta página o enunciado do trabalho prático

-- JorgeSousaPinto - 29 Oct 2005

Já disponíveies os slides relativos ao primeiro capítulo da matéria (Grafos)

-- JorgeSousaPinto - 26 Sep 2005

[LMCC]

Algoritmos e Complexidade 2005-2006


Notas


Programa Resumido

  1. Grafos: Conceitos e Algoritmos Fundamentais
  2. Introdução à Análise de Algoritmos
    Casos de Estudo:
    • Algoritmos de Ordenação
    • Algoritmos de Grafos
  3. Problemas NP-completos
  4. [P] Estruturas de Dados Fundamentais: Questões de Eficiência na Pesquisa;
    Árvores AVL e Tabelas de “Hash”; sua Realização na Linguagem C;


Programa Detalhado

  1. Grafos: Conceitos e Algoritmos Fundamentais
    • Grafos: conceitos básicos e representação em memória de computador
    • Algoritmos elementares: pesquisas (em largura e em profundidade)
    • Algoritmos para determinação de árvores geradoras mínimas
    • Algoritmos para determinação de caminhos mais curtos
    • Estratégias algorítmicas: algoritmos "greedy''
    • Algoritmos para determinação do fecho transitivo de um grafo
  2. Introdução à Análise de Algoritmos
    Casos de Estudo:
    • Algoritmos de Ordenação
    • Algoritmos de Grafos
  3. Problemas NP-completos
  4. [P] Estruturas de Dados Fundamentais: Questões de Eficiência na Pesquisa;
    Árvores AVL e Tabelas de “Hash”; sua Realização na Linguagem C;


Bibliografia

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. MIT Press, Cambridge,Mass., second edition, 2001.

  • Robert L. Kruse, Bruce P. Leung, and Clovis L. Tondo. Data Structures and Program Design in C. Prentice Hall, second edition, 1997.

  • Donald E. Knuth. The Art of Computer Programming : (1) Fundamental Algorithms, (2) Seminumerical Algorithms, (3) Sorting and Searching. Addison/Wesley, third edition, 1997/98. 3 volumes.


Equipa Docente

Docente Horário de Atendimento
JorgeSousaPinto 2a.fa. 10:00-12:00, 5a.fa. 10:00-13:00
JoseBacelarAlmeida 2a.fa. 14:00-16:00
JoseBarros  


Critérios de Avaliação

  • Componente Teórica (Exame): 60% (nota mínima de 8.5 valores)
  • Componente Prática (Trabalhos Práticos): 40% (nota mínima de 10 valores)
    • Trabalho prático (a ser apresentado na semana de 21 a 25 de Novembro)
    • Informação das aulas práticas


Exames

Material Disponibilizado

Aulas Práticas:

  1. Árvores Binárias - BinTree.h
  2. Árvores AVL (inserção balanceada) - avl-part.c
  3. Tabelas de Hash (chaining address) - hashCh.h; hashCh-part.c
  4. Representação de Grafos - graph.h; graph-part.c; test.c
  5. Uma implementação de Queues de inteiros - QueueInt.h; QueueInt.c
  6. Codificação do algoritmo Prim para cálculo da árvore geradora de custo mínimo - mst.c


Trabalho Prático

Observação: Os alunos com nota prática de 9 valores serão admitidos a exame.

Notas
Num Nome Nota
35847 Maria Madalena da Silva Lopes 16
32738 Paulo Sérgio Azevedo Magalhães 16
35862 Sofia Helena Roriz Moreira 16
45340 Ana Sofia Duarte 16
43525 Alice Monteiro Marques 16
43535 Nélio Marins Guimarães 16
38584 Rui Dinis da Silva 13
42201 Humberto Longo 13
43511 Paulo Renato Ribeiro Xavier 13
33629 Carla Marisa Dias da Costa 15
33643 Isabel Maria Afonso Fernandes 15
43547 Carlos Eduardo da Silva Pereira 13
43549 Nuno Ernesto Salgado Oliveira 13
39846 Hélder Teixeira 17
43488 Paula Silva 17
33729 Renato Ivo Ribeiro 14
30481 Maria de Fátima Monteiro 14
35828 João Cerqueira 14
38621 Simão Cunha 9
39837 Rui Almeida 9
43542 Bruno Lopes 17
37074 Patrícia Ribeiro 15
41025 Pedro Baltarejo 15
43523 Susana Silva 15
40998 Otília Carvalho 12
41045 Miguel Veiga 12
40999 Carlos Baptista 14
39431 Marco Martins 14
35867 Vitor Magalhães 14
41021 Nuno Costa 12
43503 Rui Pedro Alves de Carvalho 9
43509 Dave Lage Moderno 10
40997 André Coelho 10
41007 Luís Horta Nova 10
41009 Miguel Filipe Dias Pinto 13
41020 Carlos Manuel Ferreira Lopes 9
41038 Helder Nuno Ribeiro Macedo 9
42237 Luís Miguel Cruz Duarte 17
35830 João Paulo Lopes Oliveira 17
43514 César Carlos Martins Gomes 17
38572 João Pedro Domingues Cadinha 11
41010 Marta Sofia Vilaça Oliveira 9
35805 Arnaldo Nuno Gonçalves Monteiro 9
39838 Bruno Edgar Soares 12
20225 Ricardo Paz 14
28179 Raquel Pires 14

  • Enunciado
  • Entrega e apresentação: semana de 21 a 25 de Novembro

AlgoritmosComplexidadeNews 04 Mar 2006 - 01:50 - r7 JorgeSousaPinto
Notas da época de recurso disponibilizadas nesta página

-- JorgeSousaPinto - 04 Mar 2006

Notas da época normal disponibilizadas nesta página

-- JorgeSousaPinto - 07 Feb 2006

Disponíveis nesta página:

  • Notas do TP
  • Slides relativos ao 3o. capítulo da matéria (Problemas NP-completos)

-- JorgeSousaPinto - 15 Dec 2005

Disponíveis nesta página os slides relativos ao primeiro capítulo da matéria (Análise de Algoritmos) e um conjunto de enunciados de exercícios sobre este tema.

-- JorgeSousaPinto - 19 Nov 2005

Disponível nesta página o enunciado do trabalho prático

-- JorgeSousaPinto - 29 Oct 2005

Já disponíveies os slides relativos ao primeiro capítulo da matéria (Grafos)

-- JorgeSousaPinto - 26 Sep 2005

AnAnt0405 02 Mar 2006 - 09:44 - NEW OlgaPacheco

Desenvolvimento de Sistemas de Informação

Licenciatura em Administração Pública
3º Ano - 2º Semestre
Ano lectivo 2004/2005


Avisos

  • Os exames podem ser consultados no dia 25 de Julho (2.a-feira), das 11h - 13h.

Programa Resumido

  • Open Source Software (OSS)
    • Que oportunidades para a Administração Pública?
    • Alguns produtos.
    • Experiências de utilização.

  • UML (Unified Modelling Language).
    • Diagramas de Use Case.
    • Diagramas de Classe.
    • Diagramas de Comportamento.
    • Casos de Estudo.
  • Discussão: Desenvolvimento de Sistemas de Informação para a Administração Pública: (que desafios / que propostas)?.

Programa detalhado

Bibliografia

  • G. Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1998.
  • J. Rumbaugh, I. Jacobson, G. Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999.
  • M. Fowler. UML Distilled, Third Edition. Addison-Wesley,2004.

Critérios de Avaliação

  • Nota Final = 40% Nota Prática + 60% Nota Teórica.
    • Nota Prática: 2 trabalhos práticos realizados em grupos de 3 pessoas.
    • Nota Teórica: exame escrito individual (nota teórica mínima: 8 valores).

Equipa Docente

Olga Pacheco (contacto)

Horário Lectivo

Turnos Horário Sala
TP 5ªfeira 14:00-17:00 DI - Lab 0.04

Horário de Atendimento

Docente Horário
Olga Pacheco 6ªfeira 10:00-12:00

Fontes de Informação Adicionais

Slides das Aulas

Leituras Recomendadas

Links Úteis

Trabalhos Práticos

Exames

Avaliação

Grupo Aluno TP nº1 TP nº2 Exame Ex. Recurso Nota Final
G1 Celina Cruz 15 15 10.5   12
Cecília Fernandes 15 15 15.6   16
Joana Gonçalves 15 15 12.2   13
G2 Cristiano Costa 13 14 10.3   12
Martinho Pereira 13 14 11.5   12
Paulo Sá 13 14 9   11
G3 Manuela Sá 14 15 9.3   11
Regina Cerqueira 14 15 14.8   15
Sandra Costa 14 15 < 8 10 12
G4 Gustavo Fernandes 14 13 8   10
Ivan Ribeiro 14 13 10.5   12
Mário Maciel 14 13 10   12
G5 Claudia Sousa 14 11 8   10
António Fortes 14 11 10.8   12
G7 Pedro Monteiro 14 13 14   14
Ana Ribeiro 14 13 13.1   13
G8 David Belo 13 13 < 8 10.5 12
Olimpia Silva 13 13 DES   REP
G9 Bruno Lima 14 14 9   11
Pedro Peira 14 14 < 8 8.5 11
Filipe Dias 14 14 < 8 8 10
G10 Georgina Ferreira 15 14 < 8 8.5 11
Natália Costa 15 14 11.8   13
Sérgio Pedrosa 15 14 12   13

Nota: <8 - nota inferior a 8 valores


(Ultima Actualização: 2005/07/22)
AttackOnTheClones 16 Feb 2007 - 17:48 - r9 JoostVisser
The Attack On The Clones project is about the creation of a software clone detection portal.

Phase 1 (Opção 3, sep 2003 -- feb 2004)

The first edition of the Attack On The Clones project was a project carried out in the context of Opção 3 of LESI.

Status: finished

Project description

Create a Clone Detection Portal. Clones are duplicate pieces of software that generally result from copy-paste techniques in programming. Clones can differ slightly, for instance in the names of variables or in the exact order of statements and declarations. A pragmatic technique for detecting clones is to compute metrics over the code, and compare the metrics. If the metrics for two pieces are (almost) identical, they are clones. In this project you will create a web site where one can (i) upload Java source code to be subjected to metric-based clone detection, and (ii) inspect the detection results.

Team

  • Bruno Silva (30174)
  • RuiAbreu? (30257)

Supervision

Phase 2 (continuation)

Status: finished

Objectives

  • Support for more projects
  • "Project to itself" comparison
  • Improve the user interface

Project description

The project is based on the detection of similar source code in Java source code files. One of the major reasons why clones occur is code reuse by copying a pre-existing program fragment. Code clones are one of the factors that degrade the structure of the software and lower the software quality. If one changes a code clone, he/she must also update all other copies and that can raise the maintenance cost. It is also useful to know wich parts of different source codes are clones to each other. The result of the project is the next step of the 1. edition of the clone detection portal. Because the 1. edition was designed for testing only two Java projects in one "detection", this was changed and now the portal supports the submition of more projects. Therefore the way of metrics extraction had to be changed; metrics are extracted from each project directly after the submition. The time needed to calculate metrics remains the same as in the previous version-can increase drastically when computing large projects source code. Because it is very useful to know which parts of a project are similar to other ones-contain similar source code, the option of comparing the project to itself was added also. The problem of finding out if duplicated source code is spread out over a single project shouldn't be one anymore. After the metrics have been computed, the detection of clones can be initialised either by comparing projects metrics (overlap of projects metrics and overlap of class comparison between two projects) and/or by a line-by-line comparison with the later also supporting a graphical representation of the cloned lines. When detecting clones, both ways should be taken in account. For validation purposes different editions of the JJTraveler tool and some students projects were used.

Team

Supervision

AulDuv 19 Jan 2005 - 10:24 - r4 OlgaPacheco

Aulas de Dúvidas

Dia Hora Local
20 de Janeiro 14h-18h DI-A2
31 de Janeiro 14h a definir
1 de Fevereiro 14h a definir
ChopaChopsAFPProject 04 Mar 2005 - 19:36 - r5 JoaoPBarbosa

ChopaChops: view and manipulate Java program graphs

Powered by Chocapic!

Student: Patrick Machado

In this project you will develop an interactive tool to view and manipulate various kinds of graphical representations of Java programs. Your starting point is an initial version of the tool (called ChopaChops) that can already:

  • a. parse Java
  • b. derive inheritance, import, and nesting relations
  • c. display these relations in a graph
  • d. perform slicing and chopping on this graph
Starting from this basis, you can make improvements such as:
  • e. derive data flow and control flow relations
  • f. compute some graph-based program metrics
  • g. support more graph manipulations
  • h. improve the interactive interface

You will be using and extending functionality offered by the UMinho Haskell Libraries to accomplish these tasks.

Paper Presentation

Project Report

Presentations

-- PatrickMachado? - 15 Dec 2004

Recomended Literature

  1. A Survey of Program Slicing Techniques, Frank Tip, 1994
  2. The Use of Program Dependence Graphs in Software Engineering, Susan Horwits and Thomas Reps, 1992
  3. Graph Theoretic Foundations of Program Slicing and Integration, Arun Lakhotia, 1993

-- JoaoSaraiva - 27 Oct 2004

ChopaChopsAFPProjectReport 04 Mar 2005 - 19:36 - r7 PatrickMachado?

Chopachops Report

This page is under construction...

Introdution

ChopaChops is a project for slicing and chopping in program graphs. Starting from the Java program source code, this tool can generate graphs with relation information.

Objectives

Work already done - PackageGraphs

On the moment I took the project, much work was already done. ChopaChops could already do things like:

  • Java parsing to an haskell abstract syntax tree
  • Creation of Package Graphs, which contains class-based relations like:
    • Imports
    • Inheritance
    • Implementation
    • Nesting
  • Visualization of these relations in a graph
  • Metrics on graphs
  • Implementation of slicing and chopping on the graphs

My Extension - Call Graphs

Starting from the work done, I extended the libraries, adding some method-based relations:

  • Method invocation
  • Method nesting in classes

Call Graphs in haskell

-- | Call Graphs are labeled relations
type CallGraph
  = LRel CGNode CGNode CGEdgeType

-- | A node may be either a Class or a Method
data CGNode = CGClass ClassName
            | CGMethod  ClassName MethodName [ParameterType]
...
-- | Function to create a CallGraph for an AST
java2ccg :: (Term a, MonadPlus m) 
           => CGNode                     -- Current node  
           -> Declarations               -- Declarations context
           -> a                                -- Term to convert to Call Graph
           -> m CallGraph

-- | Function to convert a Call Graph to dot format, ready to feed the GraphViz tool
cg2dot :: String -> CallGraph -> String

Declarations Environment

I provide a basic API for Declarations manipulation

Here is an extract of it:

emptyDec :: Declarations
appendDec :: Declarations -> Declarations -> Declarations
addGlobalDec :: Declarations -> (ClassName, MemberName) -> TypeName -> Declarations
...
-- | General funcion for getting a variable's/member's type
getType :: (MonadPlus m) => Declarations -> ClassName -> MemberName -> m TypeName

-- | Generic function to collect global variable declarations, providing the AST
collectMembers :: (Term a, MonadPlus m) => ClassName -> a -> m Declarations

Type Inference System

To determine which classes were getting method invocations, it was necessary to buid a type inference system. To accomplish that task I used strafunsky to do generic AST traversals. So, I came up wit a function called findTypeOf which has the flollowing type signature:

findTypeOf :: (Term a, MonadPlus m) => Declarations -> ClassName -> a -> m TypeName

This function (tries) to find out the type of any entity, provided it is an instance of Term. We have to provide the environment (Declarations) and the class name on wich we are trying to find the type of an entity.

The Tool - ChopaChopsOnline

ChopaChopsOnline is a tool, developed with WASH, wich interfaces the developed librarires with the user. Basicaly, it is a web , wich can be run from a Web Server. The user, with this tool, can perform operations like:

  • Upload zip archives, containing Java source files (all other filetypes are simply discarded)
  • Visualize both Package and Call Graphs
  • Visualize some graph metrics such as:
    • Tree impurity
    • Level count (strongly connected components)
    • Non singleton levels
    • Size of the largest level
    • ...

  • Perform slicing and chopping on these graphs (Package and Call graphs), given the sources and sinks sets

Web interface:
Web interface

Chopping:
Chpping

Example

  • Class Foo:
    Code foo

  • Class Bar:
    Code bar

  • Callgraph:
    Callgraph

Future Work

Although much progress has been done regarding program slicing, I must state that this project is far from being a complete approach to Java Program Slicing.

So, there is still much work to do in the future, to extend this tool. I will enumerate some ways to evolve, although there may be others:

  • Extend the type inference system to support more types
  • Compute more graph metrics
  • Continue to move to lower level relations:
    • Data flow
    • Control

Problems

  • Hard to understand big graphs (real world java programs)
  • Type inference system not fully implemented
  • Not working with compiled classes
  • Does not handle some java features
    • Inheritance / Implementation
    • Static methods
    • Exception handling

Conclusion

  • Nice progresses towards full program slicing in Java
  • At the moment there is no support for many Java features
  • Easy to extend
  • Part of the UMinho Haskell Library
    • ChopaChopsOnline (tools)
    • CallGraph?
  • Much work to be done in the future...
CloneDetectionAFPProject 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Home Page for the AdvancedFunctionalProgramming Project "Clone Detection in Haskell".

To be filled with abundant and pertinent information. smile

Work-in-progress project page: http://www.patanisca.com/clones/

-- GuilhermeLopes - 28 Oct 2005

ComputacaoNatural 28 Feb 2005 - 20:56 - NEW RuiMendes
Eis a página da disciplina: http://colombo.di.uminho.pt/cnat

-- RuiMendes - 28 Feb 2005

DSINews 15 May 2006 - 09:30 - r10 OlgaPacheco
Aula 1 -- 23 de Fevereiro
Não houve aula. Motivo: Simpósio doutoral do DI.

Aula 2 -- 2 de Março
Apresentação da disciplina. Apresentação do trabalho prático 1.

Aula 3 -- 9 de Março
E-learning. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 4 -- 16 de Março
Open Source Software. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 5 -- 23 de Março
Introdução ao Latex. Apresentação de exemplos.

Aula 6 -- 30 de Março
Realização do trabalho prático 1.

Aula 7 -- 6 de Abril
Introdução ao UML. Diagramas de casos de uso. Realização do trabalho prático 1.

Aula 8 -- 20 de Abril
Não houve aula. Motivo: doença.

Aula 9 -- 27 de Abril
Apresentação oral do trabalho nº 1.

Aula 10 -- 4 de Maio
UML: Diagramas de actividade e diagramas de transição de estados. Resolução de exercícios.

Aula 11 -- 11 de Maio
UML: Diagramas de classes. Resolução de exercícios.

Aula 12 -- 18 de Maio
Não há aula. Motivo: Enterro da Gata.

Aula 13 -- 25 de Maio
UML: Resolução de exercícios.

Aula 14 -- 1 de Junho
Apresentação oral do trabalho nº 2.

DesenvolvimentoSistemasInformacao 21 Jul 2006 - 10:44 - r30 OlgaPacheco
Sumários

Aula 1 -- 23 de Fevereiro
Não houve aula. Motivo: Simpósio doutoral do DI.

Aula 2 -- 2 de Março
Apresentação da disciplina. Apresentação do trabalho prático 1.

Aula 3 -- 9 de Março
E-learning. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 4 -- 16 de Março
Open Source Software. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 5 -- 23 de Março
Introdução ao Latex. Apresentação de exemplos.

Aula 6 -- 30 de Março
Realização do trabalho prático 1.

Aula 7 -- 6 de Abril
Introdução ao UML. Diagramas de casos de uso. Realização do trabalho prático 1.

Aula 8 -- 20 de Abril
Não houve aula. Motivo: doença.

Aula 9 -- 27 de Abril
Apresentação oral do trabalho nº 1.

Aula 10 -- 4 de Maio
UML: Diagramas de actividade e diagramas de transição de estados. Resolução de exercícios.

Aula 11 -- 11 de Maio
UML: Diagramas de classes. Resolução de exercícios.

Aula 12 -- 18 de Maio
Não há aula. Motivo: Enterro da Gata.

Aula 13 -- 25 de Maio
UML: Resolução de exercícios.

Aula 14 -- 1 de Junho
Apresentação oral do trabalho nº 2.

Desenvolvimento de Sistemas de Informação

Licenciatura em Administração Pública
3º Ano - 2º Semestre
Ano lectivo 2005/2006

........................................................................................................Anos Anteriores


Avisos

  • Dúvidas sobre as notas: contactar docente no dia 17 de Julho (a partir das 11h).

Programa Resumido

  • Open Source Software (OSS)
    • Que oportunidades para a Administração Pública?
    • Alguns produtos.
    • Experiências de utilização.

  • E-Learning na Administração Pública.

  • UML (Unified Modelling Language).
    • Diagramas de Casos de Uso.
    • Diagramas de Classes.
    • Diagramas de Actividade.
    • Diagramas de Transição de Estados.
    • Casos de Estudo.

  • Discussão: Desenvolvimento de Sistemas de Informação para a Administração Pública: (que desafios / que propostas)?.

Programa detalhado

Bibliografia

  • G. Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1998.
  • J. Rumbaugh, I. Jacobson, G. Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999.
  • M. Fowler. UML Distilled, Third Edition. Addison-Wesley,2004.

Critérios de Avaliação

  • Nota Final = 80% Nota Prática + 20% Avaliação Continua.
    • Nota Prática: 2 trabalhos práticos realizados em grupos de 2 elementos.

Equipa Docente

Olga Pacheco (contacto)

Horário Lectivo

Turnos Horário Sala
TP 5ªfeira 14:00-17:00 DI - 0.02

Horário de Atendimento

Docente Horário
Olga Pacheco 5ªfeira 10:00-12:00

Fontes de Informação Adicionais

Slides das Aulas

Leituras Recomendadas

OSS

eLearning

Latex

Links Úteis

e-learning

UML

OSS

Trabalhos Práticos

Exames

Avaliação

Grupo Aluno TP nº1 TP nº2 Exame de Recurso Nota Final
1 37404 David Moreira Martins - - 12 12
1 37648 Valter Bruno Ferreira Martins - - 14 14
2 37547 Paulo Tiago Pinto Leal Martins 15 15   15
2 37629 Marta Maia Sá 15 15   15
3 37408 Óscar José Silva da Oliveira Vaz 18 15   17
3 37414 Sérgio Filipe Ferreira Araújo 16 15   16
4 41209 Marta Mariana Oliveira Campelo Silva 13 16   15
4 39978 Adérito Filipe de Sá Fernandes 13 16   15
5 37128 Andreia Marisa Alves da Silva 15 13   14
5 34668 Filipa Margarida Fagundes Guia 15 13   14
6 39986 Daniela Maria Miranda 16 12   14
6 39970 Ricardo Jorge Gonçalves Vilela 16 12   14
7 39380 Sónia Elisabete Fernandes Lopes 15 15   15
7 39979 Odete da Conceição Ribeiro da Silva 15 15   15
8 39505 José Tiago Saleiro Almeida Costa 17 12   15
9 39992 Christine Maria Pires Carreiro 16 16   16
9 31418 Maria Teresa Vieira da Costa 16 16   16


(Ultima Actualização: 2006/07/10)
DisambiguationGLR 03 Mar 2005 - 16:27 - r2 JoostVisser

Embedding Disambiguation Rules in the HaGLR System

Student: Luís Pedro Machado

In this project we will embed a domain specific language to express disambiguation rules in the HaGLR system: A Generalised LR parser generator. Such disambiguation rules "work" very much like precedence and priority rules used by YACC-like systems. Traditional techniques use a language processor for processing the disambiguation "language" and, then, combine them with the parser (either buy applying such rules at parse time , or by applying them as a filter over the resulting set of abstract syntax trees).
The UMinho Haskell Libraries already provide support for:

  • a. Generalised LR parsing. The HaGLR system is a GLR parser generator.
  • b. Parsing SDF grammars, that includes a large set of real programming language grammars defintions.
  • c. The construction and visualization of the resulting XML parse trees.

You will define a language to express disambiguation rules (based on exiting ones). Then you will implement a function that given a sentence of that langauge (ie, a set of rules) and the resulting parse forest and it selects the right tree(s).

Recomended Literature

  1. Disambiguation Filters for Scannerless Generalized LR Parsers, M.G.J. van den Brand, J. Scheerder, J.J. Vinju, and E. Visser, 2002
  2. Pure Functional Parsing, Peter Ljunglof, 2002
  3. Parser Generation for Interactive Environments, J. Rekers, 1992
EDFS 26 Jan 2007 - 18:04 - r11 LuisSoaresBarbosa
SumáriosAulas

T (2006.10.21a): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

T (2006.10.21b): Introdução à modelação de sistemas computacionais em VDM-SL. Tipos e invariantes. Especificação de operações. Estudo de um caso.

T (2006.11.04a): Conclusão da aula anterior. Apresentação da ferramenta VDMTools.

T (2006.11.04b): A linguagem de especificação VDM-SL: expressão de propriedades em lógica de 1a ordem. Problemas de definição.

T (2006.11.11a e 11b): Não houve aula.

T (2006.12.9a): A linguagem de especificação VDM-SL: modelação de problemas com conjuntos e sequências. Polimorfismo e ordem superior (exemplos). Especificação ímplicita vs explícita. Funções vs operações. Exemplo: cálculo da raíz quadrada (especificação disponível aqui).

T (2006.12.9b): A linguagem de especificação VDM-SL: modelação de problemas com correspondências. O caso do sistema de gestão de contas bancárias. Especificação funcional (BAMS) e orientada ao estado (SBAMS).

T (2006.12.16a): Aula laboratorial em VDMTools.

T (2006.12.16b): Aula laboratorial em VDMTools.

T (2007.01.20a): Estudo de caso em modelação VDM: multiconjuntos.

T (2007.01.20b): Discussão dos projectos individuais de modelação.

T (2007.01.27a): Estudo de caso em modelação VDM: o espaço de endereçamento web.

T (2007.01.27b): Acompanhamento dos projectos individuais de modelação.

-- LuisSoaresBarbosa - 27 Jan 2007

Especificação e Desenvolvimento Formal de Software

2006-2007


Equipa Docente

Horário

Tipo Horário Sala
T Sab: 09-13 h DI 022

Horário de Atendimento

Docente Horário
Luís S. Barbosa 6as 8.30-10

Nota: sujeito a marcação prévia (verbal ou por email) com o docente.

Programa Resumido

  • Introdução ao problema do controlo de qualidade em `software' . Especificação formal -- porquê e para quê? Introdução aos binómio especificação /implementação.
  • Ciclo de vida do software usando métodos formais. Redução do risco e dos custos. Áreas típicas de aplicação. Sistemas críticos e confiáveis. Qualidade de serviços.
  • Linguagens e métodos para especificação formal. Antecendentes históricos. Do método de Viena (VDM) ao `standard' ISO/IEC 13817-1 (VDM-SL).
  • Estudo da notação VDM-SL. Modelação por conjuntos, sequências e funções finitas. Especificação por pré/pós-condições. Invariantes. Obrigações de prova.
  • Prototipagem e animação. Experiência com a utilização do ambiente VDMTOOLS.
  • Especificação por modelos orientada aos objectos. Estudo de VDM++.

Critérios de Avaliação

Projecto individual ou exame final de acordo com o regulamento aplicável. A opção por um projecto está dependente da concordância do docente. Os temas deverão ser propostos pelos alunos.

Acetatos e Textos de Apoio

  • Formal Methods in Software Engineering (slides)
  • An Introduction to Formal Modelling (slides)
  • Guião para treino individualizado em VDMTOOLS.
  • A Brief Introduction to VDM-SL (slides)

  • Lição 1: Modelling in VDM-SL (slides)
  • Lição 2: Expressing Logic Constraints (slides)
  • Lição 3: Model Construction (slides)
  • Lição 4: Modelling with Sets (slides)
  • Lição 5: Modelling with Mappings (slides)
  • Lição 6: Modelling with Sequences (slides)
  • Lição 7: Recursion in Specifications (slides)

VDMTOOLS

  • Uma versão pública da ferramenta VDMTools está disponível aqui

Bibliografia


-- LuisSoaresBarbosa - 26 Jan 2007

EDFSSum 26 Jan 2007 - 18:00 - r13 LuisSoaresBarbosa
T (2006.10.21a): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

T (2006.10.21b): Introdução à modelação de sistemas computacionais em VDM-SL. Tipos e invariantes. Especificação de operações. Estudo de um caso.

T (2006.11.04a): Conclusão da aula anterior. Apresentação da ferramenta VDMTools.

T (2006.11.04b): A linguagem de especificação VDM-SL: expressão de propriedades em lógica de 1a ordem. Problemas de definição.

T (2006.11.11a e 11b): Não houve aula.

T (2006.12.9a): A linguagem de especificação VDM-SL: modelação de problemas com conjuntos e sequências. Polimorfismo e ordem superior (exemplos). Especificação ímplicita vs explícita. Funções vs operações. Exemplo: cálculo da raíz quadrada (especificação disponível aqui).

T (2006.12.9b): A linguagem de especificação VDM-SL: modelação de problemas com correspondências. O caso do sistema de gestão de contas bancárias. Especificação funcional (BAMS) e orientada ao estado (SBAMS).

T (2006.12.16a): Aula laboratorial em VDMTools.

T (2006.12.16b): Aula laboratorial em VDMTools.

T (2007.01.20a): Estudo de caso em modelação VDM: multiconjuntos.

T (2007.01.20b): Discussão dos projectos individuais de modelação.

T (2007.01.27a): Estudo de caso em modelação VDM: o espaço de endereçamento web.

T (2007.01.27b): Acompanhamento dos projectos individuais de modelação.

-- LuisSoaresBarbosa - 27 Jan 2007

EducationNews 17 Feb 2004 - 13:55 - r7 JoseNunoOliveira
Feb. 17, 2004

May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004

Feb 6, 2004

Students interested in the Overture Project please contact to JNO. (NB: the Overture Modelling Language has great resemblance with VDM++)

Jan 31, 2004

Novas propostas para estágios curriculares em EstagiosProfisionais

January 29, 2004

Invitation to Wiki.

January 21, 2004

We have a new Wiki server for educational purposes!

ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias

18 Out Já saíram as notas do exame da época especial.

27 Jul Já saíram as notas das orais.

22 Jul Já saíram as notas do exame de recurso. As orais serão no dia 27 às 10h00.

11 Jul Já saíram as notas finais da época normal.

5 Jul Quem quiser entregar o projecto prático deverá fazê-lo até ao dia 8 de Julho.

5 Jul As notas da 2a chamada já saíram.

28 Jun As notas da 1a chamada já saíram. As orais serão no dia 7 Julho às 10h00.

5 Abr O enunciado do projecto prático pode ser consultado aqui.

9 Mar Os exemplos das aulas práticas já estão disponíveis para download.

7 Mar A ferramenta DaNAMiCS já está disponível para download.

Elementos Lógicos da Programação 3

Licenciatura em Matemática e Ciências da Computação
3º Ano - 2º Semestre
Ano lectivo 2004-2005


Responsável

Equipa Docente

Docente Atendimento
JoseManuelValenca (T)  
AlcinoCunha (TP) 2a das 9:00 às 11:00, 6a das 10:00 às 12:00

Horário das Aulas

  • Teórica: 3a das 11:00 às 13:00 (DI A1)
  • Teórico-prática:
    • TP1 - 2a das 11:00 às 13:00 (DI 0.11)
    • TP2 - 5a das 11:00 às 13:00 (DI 0.11)

Programa Detalhado

  • Redes de Petri
    • Modelação de sistemas concorrentes com redes de Petri.
    • Cálculo de matrizes de incidência.
    • Semântica operacional baseada em sistemas de transição de estados.
    • Propriedades fundamentais de redes: finitude, animação e invertibilidade.
    • Cálculo de invariantes de estado.
    • Extensões às redes não coloridas: lugares com capacidade explicita e arcos inibidores.
    • Redes coloridas.
    • Ferramentas para especificação e animação de redes de Petri (DaNAMiCS, PEP).
  • Verificação de modelos
    • Especificação de propriedades de segurança e animação usando lógica temporal.
    • Lógicas CTL*, CTL e LTL.
    • Representação mínima de fórmulas CTL.
    • Verificação directa de modelos para a lógica CTL.
    • Representação da relação de acessibilidade usando lógica proposicional.
    • Verificação simbólica de modelos para a lógica CTL baseada em OBDDs.
    • Ferramentas para verificação simbólica de modelos (SMV).

Critério de Avaliação

  • Hipótese 1
    • Exame Teórico (100%)
  • Hipótese 2

  • Notas finais época recurso (notas)
  • Notas finais época normal (notas)
  • Notas finais época especial (notas)

Exames

Exemplos

  • Aula 2
    • Partida (bim) e Corrida (bim)
    • Semáforo seguro (bim) e justo (bim)
  • Aula 3
    • Produtor consumidor (bim)
  • Aula 4
    • Produtor consumidor com 2 buffers sequenciais (bim) e paralelos (bim)
    • Bolas vermelhas e pretas (bim)
  • Aula 5
    • 2 produtores com prioridade (bim) e depois do unfold (bim).
    • Biblioteca (bim, bim, bim) e depois do unfold (bim)
    • Conferência (bim)
  • SMV
    • Exclusão mútua (smv), biblioteca (smv) e cache (smv)
  • Exames
    • Rãs e Princesa normal (bim) e de 3 em 3 (bim).
    • Elevador (smv)
    • Slot machine (bim) sem moedeiro temporário (bim).
    • Braço mecânico (bim)
    • Exercício 3 da 2a chamada (smv).

Bibliografia

  • Petri Nets for Systems Engineering: A Guide to Modeling, Verification, and Applications, Claude Girault and Rüdiger Valk (editors). Springer-Verlag 2003.
  • Elements of Distributed Algorithms: modeling and analysis with petri nets, Wolfgang Reisig. Springer-Verlag 1998.
  • Model Checking, Edmund M. Clarke Jr., Orna Grumberg, and Doron A. Peled. MIT Press 2001.

Apontadores WEB

Edições Anteriores

ElementosLogicosProgramacaoIII0304 12 Feb 2007 - 19:15 - r12 JoseBacelarAlmeida

Elementos Lógicos da Programação III

Licenciatura de Matemática e Ciências da Computação
3º Ano - 2º Semestre
Ano lectivo 2003/2004

Ùltima alteração: 12/07/2004


Avisos

  • 29/07: Já disponíveis as notas da época de recurso (Notas).
  • 12/07: Já disponíveis as notas da 1ª e 2ª chamadas (Notas).
  • 07/05: Já disponível o enunciado dos projectos práticos.
  • 22/03: Disponíveis duas novas secções nesta página: Elementos de Estudo e Apontadores WEB.
  • 25/02: Nos dias 2 e 3 de Março (segunda e terça) não haverá aulas Teórico-Práticas de ElementosLogicosProgramacaoIII0304.
  • 25/02: Este ano a página da disciplina é alojada no WIKI. Contacte um docente se pretender colaborar na manutenção da página.

Programa

Programa Resumido

  • Redes de Petri
  • Introdução aos modelos da concorrência
    • Sistemas de transição de estados: bissimulação.
    • Estruturas de eventos/redes de ocorrências.
  • Redes de Petri coloridas
  • Verificação de Modelos
    • Lógicas temporais: CTL e CTL+
    • Verificação simbólica

Programa Detalhado

Bibliografia

Bibliografia Recomendada:

  • Elements of Distributed Algorithms: modeling and analysis with petri nets; Wolfgang Reisig. Springer-Verlag 1998.
  • Model Checking; Edmund M. Clarke Jr., Orna Grumberg, and Doron A. Peled. MIT Press 2001.

Elementos de Estudo

  • 16/04 Uma nova versão do Animador que já suporta redes coloridas (Net2.tgz)
  • 05/04 Nova verão dos módulos do Animador que fazem uso de multi-parameter type classes para permitir um maior nível de abstracção. (Net.tgz) --- Obs.: Para executar estes módulos devem-se passar as seguintes opções ao GHC: "-fglasgow-exts -fallow-undecidable-instances".
  • 05/04 Versões simplificadas do animador de redes de Petri apresentado na teórica:
    • Versão I - Não define novas classes; utiliza o transformador de estados da biblioteca. (RPetri.hs)
    • Versão II - Evita a utilização do monad de estado. (RPetri2.hs)
  • 05/04 Várias resoluções para os exercícios da aula sobre o Monad de Estado:
    • Versão I - Monad definido explicitamente (como foi apresentado na aula prática). (StateEx1.hs)
    • Versão II - Usando a biblioteca standard. (StateEx2.hs)
    • Versão III - Usando State threads. (StateEx3.hs)
  • 22/03 Programa em Haskell para animação de Redes de Petri demonstrado nas aulas teóricas: (rp-jmv.tgz)

Apontadores WEB

Projectos Práticos

Horário e Equipa docente

Horário Lectivo:

Teóricas Práticas
  2ª, das 10:00 às 11:00 (sala CP1.A2)   TP1 , 2ª, das 14:00 às 16:00 (sala DI 0.11)  
5ª, das 9:00 às 10:00 (sala CP2.103) TP2 , 3ª, das 9:00 às 11:00 (sala DI 0.11)

Horário de Atendimento:

JMV JBA
    2ª, das 11:00 às 13:00  
    2ª, das 16:00 às 19:00  

Critério de Avaliação

Nota final é calculada com base nas seguintes componentes:

Componente Teórica (Exame) - OBRIGATÓRIA - peso nunca inferior a 60% (nota mínima de 8 valores).
Componente Prática - FACULTATIVA - com peso máximo de 30%.

A componente prática consiste na realização de um projecto.

Notas

  • Notas das épocas normais e de recurso (PDF)
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial.

27 Jul Já saíram as notas das orais.

22 Jul Já saíram as notas do exame de recurso. As orais serão no dia 27 às 10h00.

11 Jul Já saíram as notas finais da época normal.

5 Jul Quem quiser entregar o projecto prático deverá fazê-lo até ao dia 8 de Julho.

5 Jul As notas da 2a chamada já saíram.

28 Jun As notas da 1a chamada já saíram. As orais serão no dia 7 Julho às 10h00.

5 Abr O enunciado do projecto prático pode ser consultado aqui.

9 Mar Os exemplos das aulas práticas já estão disponíveis para download.

7 Mar A ferramenta DaNAMiCS já está disponível para download.

ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha

Elementos Lógicos da Programação III

Projecto Prático

Pretende-se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model checking SMV. Na modelação deve começar por usar uma rede colorida e depois fazer a seu expansão para uma rede normal. Nesta operação pode começar por usar capacidades e arcos inibidores, que depois deverão ser eliminados usando as regras de transformação já ensinadas. Para cada problema são enumeradas algumas propriedades que devem ser verificadas pela solução apresentada. Sempre que possível devem ser demonstradas usando técnicas estruturais (como invariantes de lugar), mas também usando model checking. Para tal terão que ser traduzidas em fórmulas CTL equivalentes. Sempre que desejarem, podem enriquecer a especificação adicionando novas características ao modelo ou novas propriedades para verificar. Naturalmente, tal será valorizado na nota final.

O projecto é facultativo. Deverá ser realizado em grupos com o máximo de dois alunos. A apresentação será em data a combinar, devendo na mesma ser entregue um pequeno relatório com a descrição das tarefas realizadas.

ATENÇÃO: esta página será alterada consoante a necessidade de clarificar o enunciado.

Sistema de Transporte

Pretende-se modelar um sistema de transporte de uma linha de produção. Esta é constítuida por uma série de mesas, existindo um braço robotizado entre cada par de mesas. O braço robotizado pode estar em três posições diferentes (A, B e C), podendo mover-se para a esquerda ou para a direita. Também possui uma garra que lhe permtite apanhar uma peça numa mesa e transportá-la para a seguinte. Considere também que existe um produtor que coloca as peças na primeira mesa e um consumidor que as retira da última.

Trans.jpg

Algumas das propriedades que a sistema modelado deve verificar são:

  • Cada mesa pode conter no máximo uma peça.
  • Não deve possível colocar uma peça na mesa i se o robot i está na posição A.
  • Nomeadamente, nunca deve ser possível o robot i estar na posição C e o robot i+1 na posição A.
  • Os motores de deslocamento para a esquerda e para a direita não podem estar activos simultaneamente.
  • Qualquer peça que seja colocada na primeira mesa deve eventualmente chegar à última.
  • Não existem deadlocks.

Exclusão Mútua Distribuída

Pretende-se implementar um algoritmo de exclusão mútua distribuído, ou seja sem nenhum controlador centralizado. O mesmo será baseado no conceito token ring. As diversas unidades funcionais estão ligadas através de um anel de comunicação onde circula uma marca. Sempre que uma unidade pretende entrar na zona crítica deverá retirar esta marca do anel, devendo a mesma ser propagada para a unidade seguinte quando não for necessária. A seguinte imagem apresenta um esquema da rede de petri que modela este problema, para o caso em que temos três unidades funcionais, estando uma delas detalhada.

Ring.jpg

Cada unidade é constituída por dois módulos:

  • O primeiro, cuja rede se encontra detalhada, representa o componente que pretende usar o recurso crítico. Tem três estados possíveis: Idle, quando está a realizar tarefas que não envolvem o recurso crítico; Waiting, quando está à espera de usar o recurso crítico; e Critical, quando está na zona de exclusão mútua.
  • O segundo é o controlador que irá implementar o protocolo, e cuja especificação é o objectivo deste projecto.

A comunicação entre os dois componentes é feita assincronamente usando os lugares Req (request), Prm (permission), e Rdy (ready). O primeiro é usado para sinalizar a vontade de usar o recurso crítico. O segundo é usado pelo controlador para dar autorização ao outro componente para entrar na zona crítica, e o último serve para este indicar que já terminou a utilização do recurso crítico. O controlador também tem acesso ao anel onde circula a marca. Sempre que deseje, pode retirar a mesma da sua porta de entrada (Tok) ou transferi-la para a unidade funcional que lhe sucede no anel.

Algumas das propriedades que a solução deve verificar são:

  • Não existem duas unidades simultaneamente na zona crítica.
  • Não existem deadlocks.
  • Nunca existe mais do que uma marca a circular no anel.
  • Qualquer unidade que pretenda utilizar o recurso crítico poderá eventualmente fazê-lo.
  • Uma unidade não poderá utilizar o recurso crítico duas vezes seguidas se outra unidade também o pretender utilizar.
  • A marca não deve circular desnecessariamente pelo anel. Só o deverá fazer se alguma unidade requisitar o acesso à zona crítica.

Para poder satisfazer esta última propriedade poderá ser necessário adicionar um segundo anel de comunicação (com sentido inverso) onde circulam pedidos para libertar a marca.

EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project



Grammar Engineering

Location: Vrije Universiteit or CWI in Amsterdam, The Netherlands.

In many areas of computing, languages play a central role. Programming languages, data definition languages, scripting languages, mark-up-languages, query languages, etc. Unfortunately, it is common practise in software engineering to apply mostly ad-hoc techniques when dealing with language syntaxes. Grammar Engineering seeks to remedy this situation by regarding grammars as valueable software artifacts, and applying good engineering practises to their development, deployment, and maintenance.

In this project you will implement a tool-suite for Grammar Engineering. The tool-suite will include (i) support for grammar reconstruction from language reference manuals, (ii) a combinator library for reshaping grammars, and (iii) support for generating parsers, XML shema's, transformation libraries, and other software components from grammars. Your tool-suite will use the Syntax Definition Formalism (SDF) as internal representation format. To design your tool-suite you will take inspiration from published work and previously developed prototypes.

The implementation of this tool-suite will normally require some technology that it is fit to implement all of the above components while this technology should then also benefit from the provided components. Here are some options:

  • A Haskell-centric approach with combinator parsing.
  • An ASF+SDF Meta-Environment approach with its SGLR parsing technology.
  • General-purpose programming languages and main-stream parser generators like ANTLR.

For example, in the Haskell scenario, the tool-suite is implemented in Haskell and it would be useful for the Haskell programmer. That is, the tool-suite would then help with deploying Haskell-based parsers, XML components and others while processing SDF grammars as input.

See also: the Grammar Ware page.

Supervisors: Ralf Laemmel (VU & CWI, The Netherlands), JoostVisser (UMinho)


Benchmarking Generic Programs

Location: Vrije Universiteit or CWI in Amsterdam, The Netherlands.

Generic Programming encompasses programming techniques that allow the construction of programs that work for just about any kind of data type. Examples of generic programming solutions are Strafunski, traversal functions in ASF+SDF, Generic Haskell, Polytypic Programming, and visitor combinators.

In this project you will perform thorough benchmarking of various generic programming approaches, and investigate some options for improving the efficiency of generic programs. To this end, you will develop a benchmark suite of generic programming problems, and corresponding solutions for each approach under scrutiny. You will investigate both time and space consumption by the various approaches. You will publish your benchmark suite and the results of running it on the internet, such that in future others can take advantage of it when comparing and evaluating generic programming approaches in future.

Supervisors: Ralf Laemmel (VU & CWI, The Netherlands), JoostVisser (UMinho)

FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home

Navegação

Changes | Index | Search | Go

Disciplinas

MP1
MP2
PFA?

FlexibleSkinStyleSheet 21 Jan 2004 - 22:20 - r2 AlcinoCunha
%STARTINCLUDE%

body {
  background-color : lightgray;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 12px ;
}

a:link    { text-decoration : none ; color : darkblue ; }
a:visited { text-decoration : none ; color : darkblue ; }
a:hover   { text-decoration : none ; color : darkred ; }
a:active  { text-decoration : none ; color : darkred ; }

div.WebLeftBar a:link    { text-decoration : none ; color : #444444 ; }
div.WebLeftBar a:visited { text-decoration : none ; color : #444444 ; }
div.WebLeftBar a:hover   { text-decoration : none ; color : darkred ; }
div.WebLeftBar a:active  { text-decoration : none ; color : darkred ; }

hr { color : black ; border : solid 0 ; padding : 0 ; background-color : darkgray; height : 1px}

div.WebTopBar {
  background : white ;
  border : solid ;  
  border-width : 1px ;
  border-color : darkgray; 
  font-size : 200% ;
  font-style : italic ;
  margin: 0em ;
  padding : 0.5em ;
}

.WebTopMenuBar {
  background : %WEBBGCOLOR%;
  border : solid ;
  border-width : 1px;  
  border-color : %WEBBGCOLOR%; 
/*  width : 100% ; */
  margin: 0em ;
  padding : 0.5em ;
}

.WebContentCanvas {
  background : %WEBBGCOLOR% ;
  border: solid ;
  border-right-width : 1px;  
  border-left-width : 1px;  
  border-bottom-width : 1px;  
  border-top-width : 0em;  
  border-color: darkgray; 
  margin: 0em ;
  padding : 0em ;
}

.ContentTopicTitle {
  font-size : 150% ;
}

H1, H2, H3, H4, H5, H6 { 
  display: block 
}

H1 { margin-top: 0em; margin-bottom: 1em }
H2, H3, H4 { margin-top: 1em; margin-bottom: 1em }
H5, H6 { margin-top: 1em }
//H1 { text-align: center }
H1, H2, H4, H6 { font-weight: bold }
H3, H5 { font-style: italic }

H1 { font-size: xx-large }
H2 { font-size: x-large }
H3 { font-size: large }

.WebLeftBar {
  vertical-align : top ;
  background : %WEBBGCOLOR% ;
  border: 0em;
  width : 120px ; 
  font-size : 90% ;
  color : #444444 ;
  float : left; 
  margin: 0em ;
  padding-left : 10px ;
  padding-top : 10px ;
  padding-right : 10px ;
  padding-bottom : 10px ;
}

.newsbar {
  font-size : 85% ;
}

.WebContent {
  position : scroll ;
  vertical-align : top ;
  background : white ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 1px;  
  border-top-width: 1px;  
  border-bottom-width: 1px;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 140px ;;
}

.WebContentSolo {
  position : scroll ;
  vertical-align : top ;
  background : white ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 0em;  
  border-top-width: 0em;  
  border-bottom-width: 0em;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 0px ;;
}

/* Show the "PREVIEW" word in the background when previewing a topic: */
.WebPreview {
  background: url('%PUBURL%/TWiki/PreviewBackground/previewbg.gif');
  vertical-align : top ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 1px;  
  border-top-width: 1px;  
  border-bottom-width: 1px;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 140px ;;

}



/* Make warnings appear in red, bold text: */
font.warn
{
  color: red;
  font-weight: bold;
}

%STOPINCLUDE%
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
FlexibleSkinTopicFooter 21 Jan 2004 - 22:16 - NEW AlcinoCunha

{ Edit | Attach | Ref-By | Printable | Diffs | More... }

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

FlexibleSkinTopicHeader 21 Jan 2004 - 22:08 - NEW AlcinoCunha
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida

Haskell Biding to GraphViz

HaskellGraphViz

Student: João Paulo Barbosa

Overview

This project consists of creating a Haskell binding to AT&T's GraphViz library. This involves using a Foreign Function Interface (FFI) to invoke the C functions of the GraphViz library from within Haskell. To simplify the task of writing this FFI invocations, a tool named GreenCard is beeing used. Next, an abstraction layer is introduced to hide all the miscelaneous procedures of GraphViz and to provide a simple, but powerfull interface to the Haskell application.

With a minimal binding it's possible to replace the graph visualization support in the HaLex library (generating DOT) by invocations to the foreign functions specified. Also, new instances are declared of the types witch one wants to visualize. HaLex is an instance, since UMinho's Haskell Libraries uses GraphViz widely. This is of course a incremental work and hopefully in the end one could visualize and interact with data.

Implementation

To be updated soon... need to sleep... (Knock, Knock.... wake up.... :)) (Who's there?) (That's me! :))

Greencard

Graphviz

Core

Attribute

Graphable

Layoyt

Render

UI

Future Work

Download

Checkout module Graphics.Graphviz from Research.PURe CVS repository. PUReSoftware

Presentations

Recomended Literature

  1. An open graph visualization system and its applications to software engineering, Emden R. Gansner and Stephen C. North, Software - Practice and Experience, 1999.
  2. Drawing graphs with Graphviz, Emden R. Gansner, 2004.
  3. The Haskell 98 Foreign Function Interface 1.0: An Addendum to the Haskell 98 Report, Manuel Chakravarty (ed.), 2002,2003.

-- JoaoPBarbosa - 04 Mar 2005

IJBib 11 Apr 2005 - 14:57 - r3 JoanaBoas?
fornecida por todos

 
Sobre as ideias básicas de Criptografia (exigindo um pouco de Matemática) um livro importante é o Applied Cryptography de Bruce Schneier.

-- JoseManuelValenca - 08 Mar 2005

Sobre o Liberalismo Político e a Teoria da Justiça consultar o tratado fundamental de John Rawls ou a versão comentada de Jacques Bidet.

-- JoseManuelValenca - 08 Mar 2005

IJNews 05 Jul 2005 - 16:08 - r7 JoseManuelValenca

1 de Março início das aulas -- JoseManuelValenca

8 de Março devido à minha presença num júri não é possível dar a aula deste dia; nesta semana funciona só o turno de 4ª feira. -- JoseManuelValenca

22 e 23 de Março devido a uma reunião em Lisboa não posso dar aulas esta semana. -- JoseManuelValenca

21 de Abril foi criada a primeira página de ensaios que pode servir de exemplo para outras páginas. -- JoseManuelValenca

13 de Junho atenção aos critérios de avaliação dos trabalhos; está definida a escala de classificação na gama D .. A -- JoseManuelValenca

30 de Junho tendo em atenção que dificilmente se conseguirá fazer todas as apresentações nos dias 8 e 9 de Julho, continuaremos essas apresentações no dia 14 às 9:00 horas -- JoseManuelValenca

5 de Julho atendendo ao elevado número de possíveis apresentações (cerca de 90) não é logisticamente possível realiza-las como estava acordado. Por isso é necessário alterar as condições de apresentação como se indica nesta página. Ficam sem efeito as datas de apresentação de 8, 9 de Julho; as apresentações serão efectuadas numa dada a combinar com cada um dos alunos interessados. -- JoseManuelValenca

InformaticaJuridica 22 Feb 2007 - 11:54 - r64 JoseManuelValenca

Informática Jurídica

Licenciatura em Direito
4º Ano - 2º Semestre
Ano lectivo 2005/2006


Programa

  • Segurança Informática

Programa detalhado

Bibliografia

ver tópico anexo

Critérios de Avaliação

  • [Opção A] Só avaliação teórica.
  • [Opção B] Avaliação teórica e a valiação pratica.
    • Componente teórica: Exame escrito (com eventual prova oral).
    • Componente pratica: dois a cinco ensaios em cada um dos temas de estudo com as seguintes características:
      • Trabalho de grupo de 2/3 pessoas, versando a análise, levantamento de informação e bibliografia sobre um caso/exemplo referido nas aulas,
      • limitados a 2000 palavras excluindo bibliografia,
      • possibilidade (sorteada) de apresentação oral.
    • O peso relativo das duas componentes da avaliação depende do número de ensaios; o peso da componente pratica é 40% para 2 ensaios, 50% para 3 ensaios, 60% para 4 ensaios e 100% para 5 ensaios.
    • A avaliação de cada trabalho é feita tendo em atenção 3 parâmetros: FOCUS (a clareza na concretização de um problema ou questão ética), CONTEÚDO (a precisão e relevância dos factos referidos ou das fontes citadas) e POSIÇÂO (a clareza e justificação da posição ética assimida).
    • Os alunos com avaliação exclusivamente efectuada por trabalhos praticos podem, se assim entenderem e para efeitos de melhoria de nota, apresentar um dos trabalhos que, para o efeito, será seleccionado pelo docente da disciplina.
    • Os trabalhos são enviados em formato PDF, anexos a uma mensagem de correio electrónico enviada ao docente da disciplina. O endereçp de envio tem de ser o endereço institucional do aluno e o assunto deve conter a string "Informática Jurídica" e o número (ou números) do trabalho submetido.

Classificações dos Trabalhos 2007

Trabalhos 2006

Classificações de 2007

Pauta 2006

Equipa Docente

Horário Lectivo

Turnos Horário Sala Docente
TP1 3ªfeira 16:00-18:00 DI A2 jmv
TP2 4ªfeira 11:00-13:00 DI A2 jmv

Horário de Atendimento

Docente Horário
jmv 2ª feira 14:00-16:00
jmv 3ª feira 14:00-16:00
jmv 4ª feira 09:00-11:00

Material Disponibilizado

Aulas Teórico-Práticas

InformaticaJuridicaT10 25 May 2005 - 15:04 - r4 JoseManuelValenca

Ensaios de Helena Ribeiro, Arlindo Barros e Liliana Correia

Sociedade de Informação – Cartão Único de Saúde

 

Voto Electrónico

 

Digitaliação de Livros

 

Comércio Electrónico

 

Cidades Digitais

 

-- JoseManuelValenca - 02 May 2005

-

InformaticaJuridicaT11 07 Jun 2005 - 22:29 - r4 TeresaBizarro?

Ensaios de Regina Fernandes, Teresa Bizarro e Monica Lourenço

Operações bancárias on-line: insegurança ou desconfiança

 

-- TeresaBizarro? - 07 Jun 2005

Declarações Fiscais

 

Cartão Único

 

Requerimento Executivo

 

Hackers

 

-

-- JoseManuelValenca - 04 May 2005

InformaticaJuridicaT12 11 Jun 2005 - 14:53 - r3 JoseManuelValenca

Ensaios de Ana Ferreira, Alexandra Cruz e Michelle Pinto

 
A Avaliação de cada trabalho é feita numa escala de D (insatisfatório), C ou C+ (satisfatório), B ou B+ (bom), A, A+, A++ (muito bom, ...)

-- JoseManuelValenca - 11 Jun 2005

O Comércio Electrónico

 
Trabalho expositivo e um pouco confuso porque não vejo um objectivo claro. Avalio-o em C+

-- JoseManuelValenca - 11 Jun 2005

Phishing

 
Este também é um trabalho expositivo mas está melhor focado e dá alguma informação. Avalio-o como B

-- JoseManuelValenca - 11 Jun 2005

Este também é um trabalho expositivo mas está melhor focado e dá alguma informação. Avalio-o como B

-- JoseManuelValenca - 11 Jun 2005

Registos Criminais

 
Bom trabalho expositivo. Avalio-o como A

-- JoseManuelValenca - 11 Jun 2005

Sistemas de Informação Clínica

 

Voto Electrónico

 

-- JoseManuelValenca - 05 May 2005 -

InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca

Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva

A ASSINATURA DIGITAL

 

Cartões Inteligentes

 

Voto Electrónico

 

Protecção dos Dados Pessoais

 

Correio Electrónico

 

-- JoseManuelValenca - 05 May 2005

-

InformaticaJuridicaT14 01 Jun 2005 - 10:02 - r6 JoseManuelValenca

Ensaios de Joana Vilas Boas e Ana Daniela Barbosa

Que força probatória terá uma mensagem de correio electrónico?

 

O Voto Electrónico

 

eCash

 

Cifra

 

Cartão Único do Cidadão

 

-

-- JoseManuelValenca - 05 May 2005

InformaticaJuridicaT15 09 Jun 2005 - 10:51 - r6 JoseManuelValenca

Ensaios de Rosa Ribeiro, Claudia Cunha e Eva Fanzeres

Assinatura Digital

 

Bases de Dados Genéticos

 

Partilha de Dados Pessoais

 

Novas tecnologias: impacto na sociedade

 

Os Crimes Informáticos

 

-- JoseManuelValenca - 05 May 2005 -

InformaticaJuridicaT16 09 Jun 2005 - 10:53 - r2 JoseManuelValenca

Ensaios de Carlos Macedo

Criptografia

 

Direito vs Informática

 

-- JoseManuelValenca - 06 May 2005

InformaticaJuridicaT17 27 May 2005 - 14:37 - r2 JoseManuelValenca

Ensaios de Ana Peixoto e Paula Lopes

O Uso das Tecnologias de Informação no âmbito do Direito Processual Penal

 

A Utilização das Novas Tecnologias no Local de Trabalho: quais as garantias para os trabalhadores?

 

O Segredo de Justiça no Direito Processual Penal e os “Media”

 

Video-Vigilância e Dados Biométricos

 

Criminalidade Informática

 

-- JoseManuelValenca - 09 May 2005

-

InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca

Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede

Bilhete de Identidade Electrónico

 

BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA”

 

OS DIREITOS DE AUTOR NA INTERNET

 

Menores e Internet:Perigos Iminentes

 

NOVAS TECNOLGIAS E A PRIVACIDADE DO TRABALHADOR: “Big Boss ou Big Brother?”

 

-- JoseManuelValenca - 09 May 2005

InformaticaJuridicaT19 25 May 2005 - 16:02 - r4 JoseManuelValenca

Ensaios de Angela Peixoto e Liliana Lourenço

Assinatura Digital

 

Sigilio Bancário

 

Receita Electrónica

 

Estampilhas Temporais

 

Voto Electrónico

 

-

-- JoseManuelValenca - 10 May 2005

InformaticaJuridicaT1A 12 Jun 2005 - 09:34 - r6 JoseManuelValenca

Ensaios de Ana Araújo Silva e Filipe Macedo

Vigilância electrónica: Ponderação de princípios

 
Este tema só perifericamente toca os objectivos deste curso; a exposição também está um pouco confusa; podia ser melhorado.

-- JoseManuelValenca - 12 Jun 2005

A Teoria da Personalidade no Voto

 
Argumentos usados de forma razoável; bom trabalho

-- JoseManuelValenca - 12 Jun 2005

Tratamento de Dados Pessoais

 
Não vejo nada neste trabalho que seja relavante ao título; não traz informação, nem opinião útil

-- JoseManuelValenca - 12 Jun 2005

Privacidade On-Line

 
Comentário idêntico ao anterior; não vejo informação relevante ao título neste trabalho

-- JoseManuelValenca - 12 Jun 2005

Sigilio Bancário

 
O tema tratatado, apesar de importante, está apresentado nos aspectos que pouco intersectam os objectivos deste curso

-- JoseManuelValenca - 12 Jun 2005

-- JoseManuelValenca - 12 May 2005

-

InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca

Ensaios de Silvia Vilas-Boas Dias, Ana Rita Freitas e Angélica Sofia Campos

Preservação da Proriedade Industrial

 

Privacidade dos Dados Clínicos

 

Voto Electrónico

 

Comércio Electrónico

 

Cifras

 

-- JoseManuelValenca - 16 May 2005

-

InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca

Ensaios de Vitor Novo, Manuel Almeida e João Varela

Privacidade dos Dados Clínicos

 

Agentes e Eventos

 

A Questão Humana na Segurança da Informacão (parte 1)

 

Faz sentido falar em direitos específicos das SI ou basta transpor para o novo contexto os direitos actuais?

 

AS BARREIRAS IMPOSTAS PELOS GOVERNOS POLÍTICOS À LIVRE CIRCULAÇÃO DE INFORMAÇÃO NA INTERNET

 

-- JoseManuelValenca - 16 May 2005

-

InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca

Ensaios de Albina Pinheiro

A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS

ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA?

 
Trabalho de opinião, bem focado. Não me parece que apresente um argumento suficiente para inviabilizar a escritura electrónica, nem percebo como o factor "tempo" pode influenciar qualquer dos argumentos.

-- JoseManuelValenca - 10 Jun 2005

Assinatura digital

 
Descritivo. Não traz muita informação.

-- JoseManuelValenca - 10 Jun 2005

Comércio Electrónico

 
Este é um trabalho expositivo mas está bem apresentado.

-- JoseManuelValenca - 10 Jun 2005

Voto Electrónico

 
Trabalho é expositivo mas está razoalvelmente completo. As questões tecnicas do voto são complexas mas alguma coisa poderia ter sido dito.

-- JoseManuelValenca - 10 Jun 2005

Direiro Electrónico

 
A noção de "direito electrónico" parece-me mais adequadamente apresentado na perspectiva das relações que se estabelecem na Sociedade da Informação. O trabalho está interessante e revela esforço.

-- JoseManuelValenca - 10 Jun 2005

-

-- JoseManuelValenca - 18 May 2005

InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca

Ensaios de Adelaide Cerqueira e Sandra Pereira

Criptografia e Assinatura Digital

 

-- AdelaideCerqueira? - 23 May 2005

Segurança Informática

 

Dados Pessoais

 

Escritura Pública Informatizada: Uma alternativa?!

 

Informatização dos Tribunais

 

-- AdelaideCerqueira? - 23 May 2005

-

-- JoseManuelValenca - 18 May 2005

InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?

Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva

Cartão Único

 

-- AngelicaCampos? - 06 Jun 2005

Assinatura Digital

 

Voto Electrónico

 

O avanço tecnológico no Campus

 

O avanço tecnológico ao nível da Saúde

 

-- JoseManuelValenca - 25 May 2005

-

InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca

Ensaios de Eunice Coelho

Titulo1

resumo1

 

Titulo2

resumo2

 

-

InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
-

Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito

"trabalho completo"

 

-- JoseManuelValenca - 25 May 2005

InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
-

Ensaios de Ana Pereira e Daniela Seixas

Ética Hacker

 
trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos

-- JoseManuelValenca - 11 Jun 2005

Pirataria Legal

 
Este trabalho fala dos direitos de propriedade de autor mas, apesar de refeir à divulgação de obras na internet, não me parece que os analise na especificidade deste meio

-- JoseManuelValenca - 11 Jun 2005

Privaciadade de Dados Clínicos

 
bom trabalho mas podia ser mais completo já que não considera casos em que o interesse público tenha precedência sobre o interesse privado

-- JoseManuelValenca - 11 Jun 2005

Sim ao voto electrónico

 
bom trabalho mas podia ter alguma informação concreta sob a forma de resolver algumas das dificuldades levantadas por este tipo de votação

-- JoseManuelValenca - 11 Jun 2005

Vidas virtuais

 
uma alegoria da ubiquidade da sociedade da informação mas não é uma análise apropriada da noção de vida virtual pelo menos da forma como ele é aceite nas comunidades da TI's

-- JoseManuelValenca - 11 Jun 2005

-- JoseManuelValenca - 27 May 2005

InformaticaJuridicaT22 31 May 2005 - 09:14 - NEW JoseManuelValenca
-

Ensaios de Gloria Soares, Joana Carvalho e Raquel Gomes

A Sociedade da Informação

 

A segurança informática

 

A criptografia

 

...

 

...

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
-

Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães

Esteganografia no Processo Civi

 

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

Registos e Informática

 

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

A utilização da Informática e o número único na CRP

 

O mundo jurídico e as tecnologias da informação

 

Privacidade de dados clínicos e não repúdio de actos médicos

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT24 31 May 2005 - 14:42 - r2 JoseManuelValenca
-

Ensaios de Manuel Ferreira, Vania Rodrigues e Helena Silva

O problema dos direitos de autor no mundo informático..

 

Software LIvre

 

CRIMINALIDADE INFORMÁTICA: SPAM no âmbito da tutela da privacidade e protecção dos dados pessoais

 

Segurança informática- fronteiras e alternativas no meio judicial e extrajudicial

 

O AGENTE JURÍDICO INTELIGENTE

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
-

Ensaios de Casimiro Rosa e Abilio Ribeiro

A INternet e os Direitos de Autor

 

Assinatura Digital

 

Internet: Meio de Ultrapassar Barreiras

 

Phishing: Alerta Máximo!

 

Tecnologias da Informação e Saúde

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
-

Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins

A informática na saúde

 

Assinatura Digital

 

Cartão Único do Cidadão

 

Criptografia

 

O perfil genético na investigação forense

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca

Ensaios de Sofia Silva

Segurança na Net

 

-- JoseManuelValenca - 09 Jun 2005

InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca

Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes

A criminalidade Informática nos tribunais

 

Gestão do Conhecimento

 

Pay Pal

 

Voto Electrónico

 

Segurança da Informação Digital na Saúde

 

-

-- JoseManuelValenca - 13 Jul 2005

InformaticaJuridicaT3 30 Jun 2005 - 16:11 - r12 JoseManuelValenca

Ensaios de Eunice Coelho

Dados Pessoais

 

Video-Vigilância

 

Trabalho 3

 

Trabalho 4

 

Trabalho 5

 

-

InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca

Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva

Sindicância de Dados Pessoais

Formas de sindicância do cidadão comum sob os seus dados pessoais constantes nos Sistemas de Informação da Administração Pública

 

INTERNET VS PRIVACIDADE

 

Cartão Único do Cidadão

 

Correio Electrónico

 

Comércio na Internet

 

-

InformaticaJuridicaT5 25 May 2005 - 16:32 - r6 JoseManuelValenca

Ensaios de Isabel Nunes, Claudia Pereira e Ana Tavares

Voto Electrónico

Vantagens da implementação de um sistema de voto alternativo ao tradicional sistema de voto presencial: voto electrónico.

 

Privacidade dos Dados Clínicos Pessoais

 

Assinatura Digital

 

Cartão Único

 

Comércio Electrónico

 

-

InformaticaJuridicaT6 18 May 2005 - 09:53 - r2 JoseManuelValenca

Ensaios de Silvia Pinto e Tania Costa

Informática Jurídica

 

Voto Electrónico

 

Assinaturas Digitais

 

Teoria dos Sistemas

 

Cartão Único do Cidadão

 

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca

Ensaios de Karina Silva e Eva Mendes

Privacidade dos dados clínicos

 

O voto electrónico

 

A assinatura digital

 

O correio electrónico

 

A sociedade da informação

 

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT8 10 Jun 2005 - 17:58 - r5 JoseManuelValenca

Ensaios de Alvaro Amorim, Carla Costa e Simone Marreiros

Bases de Dados com Informação Genética

 
Bom trabalho; claramente exposto e defendido; não tenho a certeza quanto ao rigor de alguns dos "factos"

-- JoseManuelValenca - 10 Jun 2005

A voz dos sem voz

 
Muito bom trabalho expositivo; bastante exaustivo dadas as limitações de espaço.

-- JoseManuelValenca - 10 Jun 2005

A ESTEGANOGRAFIA, A NOVA MARCA “DIGITAL”

 
Trablaho expositivo, interessante mas por vezes pouco rigoroso

-- JoseManuelValenca - 10 Jun 2005

Eu...sou eu!

 
Original mas acho que o objectivo do trabalho mudou a "meio do caminho"

-- JoseManuelValenca - 10 Jun 2005

O principio da preservação da propriedade intelectual na Web: Uma perspectiva ética

 
O trabalho está interessante mas um pouco confuso.

-- JoseManuelValenca - 10 Jun 2005

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca

Ensaios de Andreia Leite, Angela Santos e Vera Silva

Base de Dados de Recolha Genética

(2ª versão)

 
Trabalho bem apresentado focando os argumentos essenciais deste problema complexo

-- JoseManuelValenca - 12 Jun 2005

Cartão Único do Cidadão

 
Qual é a opinião sob este tema? O trabalho contém muito pouca informação própria.

-- JoseManuelValenca - 12 Jun 2005

Factura Eletrónica

 
Trabalho razoavelmente informativo mas com algumas incorrecções tecnicas

-- JoseManuelValenca - 12 Jun 2005

Publicidade Ilicita e Abusiva na Internet

 
Bom trabalho expositivo

-- JoseManuelValenca - 12 Jun 2005

O Documento Electronico

 
Bom trabalho apresentando uma visão bastante interessante da noção juridica de documento electronico. Contém porém algumas incorrecções tecnicas

-- JoseManuelValenca - 12 Jun 2005

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca

Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto

Identificação de dados pessoais sob o ponto vista financeiro

 

Cartão Único

 

Voto Electrónico

 

Violação de Direitos na Internet

 

Assinatura Digital

 

Bibliografia

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca

Ensaios de Bruno Silva

Voto Electrónico

A Democracia nos dedos dos Cidadãos. -

 
Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito do conteúdo da página da UMIC sobre o veoto electrónico. Não é muito original.

-- JoseManuelValenca - 13 Jun 2005

Outros trabalhos

 
Biometria: mais uma vez o trabalho é extremamente longo e reproduz a informação sobre este tema fornecida pela CNPD

-- JoseManuelValenca - 13 Jun 2005

-- JoseManuelValenca - 28 Apr 2005

InformaticaJuridicaTC 31 May 2005 - 14:12 - r4 JoseManuelValenca

Ensaios de Helder Oliveira e Luis OLiveira

Pirataria Informática

(doc)
 

Cartão Comum do Cidadão

 

Contratos na Internet

 

O Preço da Segurança

 

Violação da Correspondência Digital

 

-

-- JoseManuelValenca - 28 Apr 2005

InformaticaJuridicaTD 31 May 2005 - 10:57 - r3 JoseManuelValenca

Ensaios de Vanessa Freitas e Magda Nunes

Assinatura Digital

 

Identificação Retinal

 

Ensino Electrónico

 

Comércio Electrónico

 

Voto Electrónico

 

-

-- JoseManuelValenca - 29 Apr 2005

InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca

Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes

Criptografia de Chave Pública: Confidencialidade e Autenticação

 

A Internet: Um Espaço de Comunicação

 

Propriedade Intelectual

 

SEgurança e Saúde

 

Os dados pessoais constantes nos sistemas de informação da administração pública

 

-

-- JoseManuelValenca - 02 May 2005

InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca

Ensaios de Susana Dias

Tecnologias da Informação e Comunicação na Saúde

 

A Progressiva Informatização no Direito

 

(RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICAÇÃO

 

Teletrabalho: o futuro

 

A EDUCAÇÃO E AS T.I.C.

 

-- JoseManuelValenca - 02 May 2005

-

LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco

Sessão Laboratorial 1


Nesta primeira sessão pretende-se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite-se que os alunos já dispõem de algum tipo de contacto com a utilização de computadores.

Login e Apresentação do Sistema MacOSX

Após a introdução do login e da password (o docente informará qual é...) o computador exibe um écran como o apresentado:

finder.jpg

A barra no topo do écran - o menu - diz respeito à aplicação activa e contém funcionalidades dessa aplicação (tais como abrir um novo ficheiro, gravar, etc). Na parte inferior do écran existe a barra de ferramentas que disponibiliza o acesso rápido a algumas aplicações (inicia aplicação com um click; arrastando um ficheiro sobre o icon: inicia a aplicação abrindo imediatamente o ficheiro em causa).

Na barra de ferramentas encontramos (entre outras) as aplicações:

  • O Finder é a aplicação responsável por manter a sessão do utilizador. O seu aspecto mais visível é a interacção com o sistema de ficheiros. Por seu intermédio podemos aceder/manipular a informação contida no disco (ficheiros, directorias, etc.).
  • O Terminal é a aplicação que permite interagir, em modo de comando, com o sistema operativo MacOSX (o sistema Unix da Apple). A sua utilização requer portanto o conhecimento de alguns comandos desse sistema, tornando-se menos intuitiva do que a manipulação da interface gráfica do sistema. É no entanto muito mais flexível e permite-nos realizar operações não acessíveis pela interface gráfica.
  • O Safari é um browser WWW. Permite consultar páginas Web (e.g. a página da disciplina).
  • O Trash permite remover ficheiros/directorias, arrastando o que se pretende remover para cima do icon.

O Finder

Esta aplicação permite interagir de uma forma visual com o sistema de ficheiros. Algumas das operações básicas que se podem fazer são acessíveis na barra superior no item File.

finder_file.jpg

Podemos abrir uma nova janela de visualização ou criar uma nova directoria. Note-se que esta directoria será uma sub-directoria da que estamos neste momento a visualizar (se não estiver nenhuma janela do Finder aberta, será criada como uma sub-directoria da Desktop que contém os elementos visíveis no fundo do écran).

Note a existência de uma directoria com icon representando uma casa, que se refere à sua directoria base (Home). A própria Desktop é uma sub-directoria dessa.

Tarefa 1 - Crie na sua Home uma directoria chamada Aula1.

O Terminal

Através do Terminal também podemos interagir, de uma forma textual, com o sistema de ficheiros. Podemos por exemplo listar o conteúdo de uma directoria (ls), remover um ficheiro (rm), visualizar o conteúdo de um ficheiro (cat) ou mover/mudar o nome de um ficheiro (mv). Podemos além disso efectuar toda uma série de acções, incluindo o início de programas.

Tarefa 2 - Inicie o Terminal e usando o comando cd (change directory) vá para a directoria Aula1 criada atras. Use ainda o comando ls -la para visualizar o conteúdo dessa directoria. Note que o comando cd, quando usado sem argumentos, o posiciona na sua Home.

Vamos agora usar um editor de texto para criar um ficheiro. Nesta primeira fase vamos usar o editor vi, comum a todos os sistemas Unix.

Quando estamos a usar o vi podemos estar em dois modos de funcionamento:

  • modo comando é o modo inicial e podemos invocar comandos: (a, i, e o) servem para passar a modo inserção; :s guarda as alterações efectuadas; (:q, :x e ZZ) terminam a execução do vi.
  • modo inserção onde podemos inserir o texto. Para voltar ao modo de comando devemos usar a tecla "Esc".

Emacs

Um outro editor de texto muito utilizado em sistemas Unix é o Emacs. Tal como fizemos para o vi, vamos aqui descrever a utilização mais rudimentar deste editor de texto. Este programa pode ser encontrado na directoria Applications e tem como icon um gnu.

Aquamacs.png

Para abrir um determinado ficheiro usa-se o comando "CTRL-x CTRL-f". Alternativamente, podemos usar o item File da barra superior do ecran. Aqui, uma das opções é abrir um ficheiro (Open File) ou uma nova janela (New). No final da edição devemos guardar o ficheiro editado, usando Save ou Save As, dependendo se o ficheiro já existia ou não.

Tarefa 3: Crie na directoria Aula1 um ficheiro com nome Grupo.txt, com a identificação dos membros do grupo (número e nome). Utilize para o efeito um dos editores de texto referidos atrás (Emacs ou vi).

LaTeX

Para produzir relatórios e outros documentos, vamos utilizar o sistema LaTeX. Este "processador de texto" distingue-se de outros (como o MS Word, do Windows) por promover a separação entre conteúdo e apresentação. Assim, o processo de criação de um documento passa pelas seguintes fases:

  • o utilizador utiliza um qualquer editor de texto para criar um ficheiro com a informação que irá dar origem ao documento (com a extensão .tex, por exemplo teste.tex)
  • executa-se o comando pdflatex que processará o documento resultando um ficheiro em formato PDF (Portable Document Format) (seguindo com o exemplo, executando pdflatex teste.tex produziria o ficheiro teste.pdf).

No Mac, está disponível o TexShop - uma aplicação que contém o editor de texto próprio e que facilita a utilização do LaTeX (produzir o documento resume-se a primir no botão typeset).

TexShop.jpg

Naturalmente que o ficheiro .tex que contém a informação para o documento deve adoptar um formato específico. De facto, para além do conteúdo que queremos ver no documento final, teremos de dar indicações ao LaTeX que lho permita produzir o resultado pretendido (qual o título, o autor, quais a várias secções, etc.). Comecemos então por ver um exemplo de um tal ficheiro:

\documentclass[12pt]{article}
\usepackage[portuges]{babel}
\usepackage[mac]{inputenc}

\begin{document}

\title{Um Documento de Exemplo}
\author{Eu}
\date{\today}

\maketitle

\section{Primeira Secção}

Isto é o texto que aparece na primeira secção...

\section{Segunda Secção}

Isto já é a segunda secção. Agora vou referir:

\begin{itemize}
\item Um ponto...
\item Outro ponto...
\end{itemize}

\end{document}

Uma breve explicação do conteúdo apresentado:

  • Quando uma palavra é precedida pelo carácter \, é um comando para o LaTeX. Os argumentos para estes comando (quando existem) são envolvidos em chavetas.
  • As linhas até ao \begin{document} são designadas por preâmbulo. Este inicia-se obrigatoriamente com o comando \documentclass que serve para indicar ao LaTeX qual o estilo de documento adoptado (neste caso article, mas existem também book, letter, etc.). Os restantes comandos utilizados no preâmbulo destinam-se a preparar o LaTeX para lidar com os caracteres acentuados presentes no Português.
  • O conteúdo do documento encontra-se entre as linhas \begin{document} e \end{document} (o que designamos por o ambiente document).
  • O comando \maketitle visualiza o título do documento (com a informação previamente registada pelos comandos \title, \author e \date).
  • O comando \section marca o início de uma secção (como argumento aceita o título da secção)
  • O ambiente itemize permite enumerar vários pontos (cada um deles é precedido pelo comando \item).

Após o processamento descrito, obteríamos o seguinte documento:

teste.jpg

Obviamente que a explicação aqui apresentada é muito incompleta, e o exemplo não ilustra minimamente as enorme potencialidades do LaTeX para produzir documentos de elevada qualidade gráfica. Recomenda-se vivamente a leitura do pequeno livro Uma não tão pequena introdução ao LaTeX2e.

Tarefa 4: Crie o ficheiro teste.tex com o conteúdo acima apresentado, compile-o (comando pdflatex teste.tex) e visualize-o (comando open teste.pdf, ou com um duplo click no Finder).

Mini-projecto individual

  • Instale no seu computador pessoal uma distribuição apropriada do LaTeX (veja, na secção "links úteis" da página da disciplina, diferentes alternativas de distribuições para os vários sistemas operativos).
  • Acompanhe a leitura de "Uma não tão pequena introdução ao LaTeX2e" com experimentações na sua instalação do LaTeX (no sub-título desse livro, lê-se que bastam 137 minutos para a sua leitura. O que podemos afirmar é que vale definitivamente a pena, mesmo que demore um pouco mais...).
  • Produza um documento contendo o seu curriculum vitae (identificação pessoal, escolas onde obteve os vários graus de ensino, hobbies, etc.)
  • Envie por email o documento produzido para o (seu) docente da disciplina.
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros

Sessão Laboratorial 2


Nesta sessão pretende-se tomar conhecimento com conceitos básicos da linguagem Haskell, nomeadamente:

  • expressões e sua avaliação,
  • tipos básicos,
  • tipos estruturados,
  • utilização do interpretador ghci e do compilador ghc.

ghci: um interpretador da linguagem Haskell

Ao longo deste curso iremos utilizar o interpretador ghci para executar programas escritos na linguagem Haskell. Este interpretador pode ser invocado a partir do Terminal:

$ ghci
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.5.20060608, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base-1.0 ... linking ... done.
Prelude> 

Uma vez no interpretador, podemos realizar uma de duas tarefas:

  1. avaliar expressões
  2. executar um comando do interpretador

Avaliar Expressões: para avaliar uma expressão basta-nos digitar essa expressão no interpretador. Por exemplo:

Prelude> 5 + 3 * 2
11
Prelude> show (3 * 2 + 1)
"7"
Prelude> 2 * sin(pi/2)
2.0
Prelude> "ABC" ++ (reverse "DEF")
"ABCFED"
Prelude> if odd(3) then (1,"IMPAR") else (0,"PAR")
(1,"IMPAR")

Verificamos então que o ghci avalia as expressões introduzidas apresentando o respectivo resultado. Mesmo sem conhecermos ainda todas as funções apresentadas, podemos desde logo observar que o Haskell não se limita a avaliar expressões numéricas --- na realidade, é capaz de processar dados de natureza muito diversa (diferentes tipos de dados) como números inteiros, decimais, valores de verdade (booleanos), caracteres, sequências, etc. Por outro lado verificamos que dispõe já do conhecimento de algumas funções pré-definidas (como sin, odd, etc.). Estas funções (e muitas outras, naturalmente) estão definidas na biblioteca básica da linguagem, a que se dá o nome de Prelude. Daí o prefixo "=Prelude>=" apresentado no ghci: informa-nos que ele (só) tem carregadas as definições dessa biblioteca. (obs.: biblioteca, em programação, consiste num conjunto de definições disponibilizadas para serem (re)utilizadas pelos programadores.)

Execução de Comandos: para além de avaliar expressões, é-nos também possível executar comandos que controlam o comportamento do ghci (como carregar um ficheiro com definições de novas funções, solicitar informação de tipos, etc.). Os comandos mais utilizados serão:

  • :l (fich) - carrega ficheiro (fich),
  • :t (expr) - interroga o interpretador sobre o tipo de (expr),
  • :b (mod) - visualiza o conjunto de definições de (mod),
  • :? - comando de ajuda que fornece uma breve explicação dos comandos disponíveis
  • :q - sai do interpretador

De referir é ainda a integração existente entre o ghci/haskell e o Emacs. De facto, este último dispõe de um modo de edição próprio para a linguagem Haskell, activado automáticamente quando é carregado um ficheiro com extensão .hs, que constitui uma mais valia quando editamos programas nessa linguagem (disponibiliza indentação automática, coloração do texto, etc.).

Tarefa 1 - Verifique qual é o tipo das expressões apresentadas acima.

Tipos básicos e estruturados

O Haskell é uma linguagem fortemente tipada - com isto quer-se dizer que o Haskell força a que todas as expressões da linguagem possuam um tipo.

A linguagem oferece o seguinte conjunto de tipos básicos:

  • Bool - Booleanos: True e False
  • Char - Caracteres: 'a', 'x', 'R', '7', '\n', ...
  • Int - Inteiros de tamanho limitado: 1, -4, 23467, ...
  • Integer - Inteiros de tamanho ilimitado: 36, 37829938847736292938338283
  • Float - Números de vírgula flutuante: 3.5, -45.3, 3e-2, ...
  • Double - Números de vírgula flutuante com precisão dupla
  • () - Unit: ()

Para além dos tipos básicos, o Haskell disponibiliza formas de construir novos tipos a partir de outros existentes.

  • produto cartesiano - (a1, a2) :: (t1, t2) - um par cuja primeira componente a1 é do tipo t1 e a segunda componente a2 é do tipo t2. O produto cartesiano generaliza-se par n-tuplos (i.e. (a1, ..., an) :: (t1, ..., tn),
  • listas - [a1,a2, ..., an] :: [t] - uma lista (sequência) constituída pelos elementos a1, a2, ..., an, todos do tipo t,
  • funções f :: t1 -> t2 - f é uma função que espera um argumento de tipo t1 e cujo resultado é do tipo t2.

Para além dos tipos apresentados, o utilizador pode ainda definir novos tipos (assunto que retomaremos numa próxima sessão).

Tarefa 2:

  • Verifique o tipo das funções utilizadas nas expressões apresentadas acima (e.g. odd, sin, ...)
  • Porque é que o Haskell não aceita as seguintes expressões:
    • 3 + 'A'
    • [1,True]
    • not (0)
    • not not

Tarefa 3: * Teste as definições por compreensão apresentadas na aula teórico prática de Programação Funcional da semana anterior disponível aqui.

Definição de funções

A principa tarefa de um programador na linguagem Haskell consiste na definição de funções que realizem as tarefas pretendidas. As funções são definidas por intermédio de regras de cálculo. A título de exemplo, temos

eZero :: Int -> Bool
eZero x = if x==0 then True else False
Por vezes é conveniente (ou mesmo necessário) separar a definição da função em várias cláusulas. Por exemplo, a mesma função podia ser também ser definida como:
eZero' :: Int -> Bool
eZero' 0 = True
eZero' _ = False

As funções podem ainda possuir mais do que um argumento. Considere:

maior :: Int -> Int -> Int
maior x y = if x>y then x else y
Esta função determina o maior de dois inteiros passados como argumento (e.g. (maior 9 3) resulta em 9).

Note que as definição das funções não deve ser realizada directamente no ghci - devem antes ser definidas num ficheiro (com extensão .hs) que será depois carregado no ghci (comando :l).

Tarefa 4: Defina funções que:

  • dados dois números inteiros retorne um par onde a primeira componente é o menor número e a segunda o maior,
  • dado o comprimento dos dois lados catetos de um triângulo retorne o comprimento da hipotenusa.
  • dado o raio do círculo, retorne o perímetro e a área desse círculo.

Módulos

Um programa em Haskell é formado por um conjunto de módulos. Cada módulo contém um conjunto de definições (declarações de tipos, de funções, de classes, ...) que podem ser utilizados internamente, ou exportados para serem utilizados noutros módulos. Um módulo Haskell é armazenado num ficheiro com extensão .hs, .hs, em que representa o nome do módulo, como declarado na primeira linha do ficheiro. Por exemplo, o ficheiro Teste.hs deverá começar com a declaração seguinte:

module Teste where
   ...

Para utilizar definições contidas num outro módulo é necessário referencia-lo explicitamente. Este tipo de ligação entre módulos estabelece-se utilizando uma declaração import. Como exemplo, vejamos como podemos ter acesso às funções de manipulação de caracteres e strings (listas de caracteres) disponíveis no módulo Char.

module Main where
  import Char
  main = putStrLn ("Isto é o resultado de executar a função "++[toLower x | x <- "MAIN..."])

Uma excepção a esta regra é o módulo Prelude, que constitui a base da linguagem Haskell, e cujas definições estão disponíveis por omissão.

Compilador

Também é possível produzir uma aplicação (ficheiro executável) a partir de um ficheiro em Haskell. Para tal deve-se utilizar o compilador ghc. O módulo a compilar deve conter a função main, que corresponde ao "ponto de entrada" da aplicação (ou seja, essa função será avaliada quando executarmos o programa). A título de de exemplo, para compilar e executar o programa apresentado atrás, devíamos proceder da seguinte forma:

$ ghc -o teste Main.hs
$ ./teste
Isto é o resultado de executar a função main...
$ _

Tarefa 5:

  • Compile o programa apresentado e execute-o.
  • Crie um módulo com as funções definidas atrás (tarefa 3) e modifique o módulo Main para utilizar uma dessas funções.
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida

Sessão Laboratorial 3

Assuntos abordados nesta sessão:

Obs.: Este guião tem seguimento no da próxima sessão.


Definição de funções recursivas

A recursividade é um recurso fundamental para codificar funções não triviais numa linguagem funcional. A ideia básica consiste em permitir-se codificar uma função com recurso a ela própria, desde que com argumentos mais simples. O exemplo sempre citado é a definição da função factorial: n! = n * (n-1) * ... * 1. Observando que (n-1)!=(n-1) *...*1, verificamos que podemos definir n!=n*(n-1)! para n>0 (em que 0!=1). Em haskell poderiamos então definir:

fact :: Int -> Int
fact 0 = 1
fact n = n * (fact (n-1))
Observe que o argumento da invocação recursiva é estritamente menor do que o parâmetro da função - é por este motivo que o cálculo da função termina. De facto, para o cálculo de (fact 3), o interpretador realiza as seguintes reduções:
     (fact 3)  ---> 3 * (fact 2)  --->  3 * (2 * (fact 1))  --->
     --->  3 * (2 * (1 * (fact 0)))  --->  3 * (2 * (1 * 1))   =  6

Um outro domínio onde a recursividade surge naturalmente é ao realizar funções sobre listas (sequências). Aí, a forma mais natural de definirmos uma função consiste em explicitar qual o resultado para o caso da lista vazia [], e para o caso da lista não vazia (x:xs). Neste último caso, podemos invocar a própria função recursivamente na cauda xs porque esta é necessariamente mais pequena do que lista original. Um exemplo clássico é a função que calcula o comprimento:

len :: [a] -> Int
len [] = 0
len (x:xs) = 1 + (len xs)

Tarefa 1: Defina as seguintes funções que:

  • dado a e b determine a^b (sem utilizar a operação de exponenciação ^).
  • dado uma lista de inteiros, conte o número de zeros contidos nessa lista.
  • dado uma lista de inteiros, calcule o seu somatório.
  • dado uma lista e um elemento, verifique se esse elemento está contido na lista.

Sinónimos de tipos

O tipos pré-definidos do Haskell são suficientemente poderosos para representarem uma grande variedade de dados. A título de exemplo, considere que se pretende representar e manipular a informação relativa a alunos de um curso e as suas respectivas notas. Assim, para cada aluno pretende-se registar: o número, o nome, e a nota. Essa informação pode ser representada no tipo (Int, String, Float). Para representar a informação de todos os alunos do curso, utilizamos uma lista desse tipo.

Em casos como este, é útil fazer uso da possibilidade oferecida pelo haskell em atribuir sinómimos de tipos (declaração type) - podemos dessa forma atribuir um nome mais informativo ao tipo em questão. Uma função que verifique se o aluno está aprovado pode ficar codificada como:

type Aluno = (Int, String, Float)
type Curso = [Aluno]

verifAprov :: Aluno -> Bool
verifAprov (num, nome, nota) = (nota >=10)

Tarefa 2: Defina:

  • a lista listaAlunos contendo informação referente aos seguintes alunos
Num. Nome Nota
1234 José Azevedo 13.2
2345 Carlos Lopes 9.7
3456 Rosa Mota 17.9
  • uma funções que dado a lista de alunos, determine:
    • Uma lista só com os números dos alunos,
    • Uma lista só com os nomes dos alunos,
    • O número de alunos aprovados e reprovados,
    • Uma lista com os alunos aprovados,
    • Uma lista com os alunos reprovados,
    • A média das notas dos alunos,
    • A média das notas dos alunos aprovados,
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida

Sessão Laboratorial 4

Este Guião é a continuação do da sessão anterior.

Assuntos abordados nesta sessão:


Funções de ordem superior simples

Nas funções realizadas na última tarefa da sessão anterior é bem patente que algumas delas partilham um mesmo padrão: um exemplo será o cálculo das listas dos alunos aprovados e reprovados - em ambos os casos "filtramos" da lista original os elementos que satisfazem um dado critério. O facto de o Haskell permitir manipular funções como quaisqueres outros valores (e.g. podemos passar funções como argumentos para outras funções) permite-nos criar funções que abstraiam esses padrões comuns. Continuando com o exemplo da lista de aprovados/reprovados, podemos utilizar função pré-definida

filter :: (a->Bool) -> [a] -> [a]
que filtra todos os elementos de uma lista que satisfassam um dado predicado. As funções ficariam então:
alunosAprov :: Curso -> [Aluno]
alunosAprov xs = filter (verifAprov) xs

alunosReprov :: Curso -> [Aluno]
alunosReprov xs = filter (not . verifAprov) xs
Obs.: (not . verifAprov) é a composição de ambas as funções: not após verifAprov.

Outras funções pré-definidas no Prelude que correspondem a padrões repediamente encontrados são:

  • map::(a->b)->[a]->[b], (map f l) aplica a função f a cada elemento de l retornando a lista de resultados. Exemplo: map verifAprov listaAlunos retorna [True, False, True].
  • zip::[a]->[b]->[(a,b)], (zip l1 l2) associa os elementos das listas l1 e l2 produzindo uma lista de pares. Exemplo: (zip [1,2,3] ['A','B','C']) retorna [(1,'A'),(2,'B'),(3,'C')].
  • unzip::[(a,b)]->([a],[b]), (unzip l) separa uma lista de pares duas listas, cada uma contendo cada uma das componentes. Exemplo: (unzip [(1,'A'),(2,'B'),(3,'C')]) retorna ([1,2,3],['A','B','C'])
  • ...

Tarefa 1: Pode fazer uso de alguma(s) destas funções nas funcionalidades pedidas na sessão anterior? Experimente...

Utilização das bibliotecas

Já se referiu que a biblioteca do Haskell dispõe de um vasto conjunto de funções úteis (algumas já tem vindo a ser referidas, muitas outras o serão ao longo do semestre...). A forma última de se conhecer a oferta existente, e de obter informação para a sua utilização consiste em consultar a documentação existente. Para a tarefa que se segue pretende-se utilizar algumas funções dos seguintes módulos (para além das já referidas...):

Tarefa 2: Pretende-se realizar um programa que realize um histograma com a frequência das palavras que ocorrem nesse texto. Assim, o resultado de avaliar

hist "Um texto com palavras... um, com, palavras, palavras, dois,dois"
deverá retornar a lista:
[("um",2),("texto",1),("com",2),("palavras",3),("dois",2)]
Note que se ignora a pontuação e não se distinguem as letras maiúsculas das minúsculas.
LI1News 23 Feb 2007 - 22:46 - r8 JoseBacelarAlmeida
23/02/2007: Já disponíveis as notas da época de recurso.

19/02/2007: O exame de recurso será realizado na 4ª-feira, às 14:30 no DI0.11. O exame incluirá as componentes de Maple e Haskell. Quem desejar realizar esse exame, deve enviar um email a um docente da disciplina.

19/02/2007: Estão disponíveis as notas finais da disciplina (época normal).

13/02/2007: Já estão disponíveis as notas dos testes de Maple de todos os turnos.

07/02/2007: Foram publicadas as notas dos testes de Maple, com excepção dos alunos que realizaram o teste no dia 5 de Janeiro. Em princípio, no início da próxima semana serão publicadas as notas finais. Os alunos que reprovarem à disciplina poderão requerer um teste de recurso, que será realizado no dia 21 de Fevereiro à tarde.

21/12/2006: EXAMES de MAPLE Os exames de Maple para os turnos de sexta-feira, realizam-se em 4 sessões de 1 hora no dia 5 de Janeiro 2007. Cada sessão admite 13 slots . A inscrição nesses slots realiza-se a partir do dia 3 de Janeiro na recepção do DI.

02/12/2006: Já é possível realizar a inscrição para a apresentação dos trabalhos práticos (na recepção do departamento).

22/11/2006: Já estão disponíveis as instruções para submissão do trabalho prático.

26/10/2006: Já está disponível o enunciado do primeiro trabalho prático.

28/09/2006: Início das aulas.

LabMF 26 Oct 2004 - 06:56 - r2 LuisSoaresBarbosa
SumáriosAulas

T (2004.09.29): Apresentação da Disciplina. Discussão das propostas de projectos.

-- LuisSoaresBarbosa - 21 Sep 2004

Laboratório de Métodos Formais

2004-2005


Docente Coordenador

Horário

  • Acompanhamento dos Projectos: Quartas, 11-13 h, Sala DI 0.04.
  • Seminários PURe: Terças, 11-13, Sala de Reuniões do DI.

Objectivos

A disciplina é orientada ao projecto em engenharia de software no contexto das abordagens formais à especificação e desenvolvimento de sistemas. Assim, visa-se

  • Desenvolver competências específicas no projecto e implementação de sistemas envolvendo diversas plataformas de suporte e requisitos não triviais
  • Desenvolver um conjunto de `soft-skills' essenciais a qualquer técnico de informática dos dias de hoje: gestão de projecto, organização, comunicação e trabalho colaborativo.
  • Aprofundar o contacto com ferramentas de suporte ao desenvolvimento formal de software
  • Oferecer uma iniciação à investigação científica através da integração dos alunos em equipas de projectos de investigação em curso no Grupo de Lógica e Métodos Formais do DI.

Em 2004-05, em particular, os alunos que escolherem esta Opção são convidados a integrar a equipa do projecto PURe e a participar nos correspondentes seminários de investigação. A apresentação final dos projectos a realizar será igualmente feita no âmbito deste projecto.

Programa Resumido

Estudo e desenvolvimento de técnicas de análise de requisitos e experiência em interface/ coabitação de ferramentas de apoio ao uso de métodos formais (à escala industrial) com as tecnologias tradicionais. Casos de estudo - projectos propostos no contexto do Projecto PURe (FCT):

  • PURe Camila: re-engenharia do sistema de prototipagem Camila e sua re-implementação sobre Haskell
  • Métodos e ferremantas para slicing sobre especificações VDM

Projectos

Critérios de Avaliação

Tratando-se de uma disciplina eminentemente práticai, é adoptado o regime de avaliação contínua (sem provas escritas) que terá em conta as seguintes componentes:

  • Capacidade de organização e gestão de projectos de software
  • Capacidade de interligação de conhecimentos obtidos ao longo do curso na realização de um projecto de engenharia de software.
  • Qualidade do produto desenvolvido
  • Capacidade de comunicação e trabalho em grupo

Bibliografia

Grupos

Grupos e Classificações

Grupo Nr Nome Curso Data Apresentação Classificação
           
           
           
           
           

-- LuisSoaresBarbosa - 21 Sep 2004


-- LuisSoaresBarbosa - 21 Sep 2004

LabMFGru 21 Sep 2004 - 14:58 - NEW LuisSoaresBarbosa
Grupos e Classificações

Grupo Nr Nome Curso Data Apresentação Classificação
           
           
           
           
           

-- LuisSoaresBarbosa - 21 Sep 2004

LabMFSum 21 Sep 2004 - 14:55 - NEW LuisSoaresBarbosa
T (2004.09.29): Apresentação da Disciplina. Discussão das propostas de projectos.

-- LuisSoaresBarbosa - 21 Sep 2004

LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias

23/02/2007: Já disponíveis as notas da época de recurso.

19/02/2007: O exame de recurso será realizado na 4ª-feira, às 14:30 no DI0.11. O exame incluirá as componentes de Maple e Haskell. Quem desejar realizar esse exame, deve enviar um email a um docente da disciplina.

19/02/2007: Estão disponíveis as notas finais da disciplina (época normal).

13/02/2007: Já estão disponíveis as notas dos testes de Maple de todos os turnos.

07/02/2007: Foram publicadas as notas dos testes de Maple, com excepção dos alunos que realizaram o teste no dia 5 de Janeiro. Em princípio, no início da próxima semana serão publicadas as notas finais. Os alunos que reprovarem à disciplina poderão requerer um teste de recurso, que será realizado no dia 21 de Fevereiro à tarde.

21/12/2006: EXAMES de MAPLE Os exames de Maple para os turnos de sexta-feira, realizam-se em 4 sessões de 1 hora no dia 5 de Janeiro 2007. Cada sessão admite 13 slots . A inscrição nesses slots realiza-se a partir do dia 3 de Janeiro na recepção do DI.

02/12/2006: Já é possível realizar a inscrição para a apresentação dos trabalhos práticos (na recepção do departamento).

22/11/2006: Já estão disponíveis as instruções para submissão do trabalho prático.

26/10/2006: Já está disponível o enunciado do primeiro trabalho prático.

28/09/2006: Início das aulas.

Laboratórios Informática I

_Licenciatura em Engenharia Informática_
1º Ano - 1º Semestre
Ano lectivo 2006/2007


Apresentação

Na actual estrutura da Licenciatura em Engenharia Informática, esta é a primeira de uma série de unidades curriculares designadas por Laboratórios de Informática. Como o seu próprio nome sugere, estas unidades curriculares agregam as componentes laboratoriais (de informática) das várias temáticas leccionadas no semestre.

Nesta primeira instância, concentrar-nos-emos nos seguintes tópicos:

  • Prática de programação na linguagem Haskell.
  • Utilização do LaTeX na elaboração de relatórios e outros documentos.
  • Exploração de um sistema de manipulação simbólica (Mapple) como ferramenta na resolução de problemas de engenharia.

Horário Lectivo

Turnos Horário Sala Docente
P1 3ªfeira 14:00-16:00 DI 0.11 jba
P2 3ªfeira 16:00-18:00 DI 0.11 jba
P3 4ªfeira 11:00-13:00 DI 0.11 jba
P4 5ªfeira 11:00-13:00 DI 0.11 mac
P5 6ªfeira 14:00-16:00 DI 0.11 jmv
P6 6ªfeira 16:00-18:00 DI 0.11 jmv

Notas

  • Notas FInais da disciplina. (Inclui notas da época de recurso)
  • Notas do teste de Maple. Atenção: esta lista já contém as notas de todos os turnos.

Equipa Docente/Horário de Atendimento

Sigla Docente Horário
jba José Bacelar Almeida 2ªf 14:00-18:00
jmv José Manuel Valença 3ªf 14:00-18:00
mac Manuel Alcino Cunha 5ªf 9:00-11:00 6ªf 14:00-16:00

Critérios de Avaliação

A avaliação nesta unidade curricular divide-se nas seguintes componentes (e respectivos pesos):

  • Trabalho de grupo na linguagem Haskell 40%

  • Fichas de avaliação no sistema Mapple 40%

  • Avaliação contínua (incluindo pequenos trabalhos individuais a realizar fora do horário lectivo): 20%

Material Disponibilizado

Bibliografia de Apoio

Guiões

Trabalhos Práticos

Instruções para submissão: O trabalho deverá ser entregue AQUI. O grupo deve registar-se nesse site para poder submeter o trabalho. IMPORTANTE: o sistema só aceitará trabalhos até às 24:00 do dia 26/11/2006 (note que o prazo já foi alargado para permitir que o processo de submissão seja feito atempada e tranquilamente. Não arrisque a deixar a entrega para os últimos instantes...).

Apresentação: Os grupos deverão inscrever-se na recepção do departamento (piso 0) para realizar a apresentação do trabalho prático.

Correcção dos testes Maple

Lista dos Mini-projecto de LaTeX recebidos:

Links Úteis

MFIGru 10 Feb 2005 - 02:18 - r2 LuisSoaresBarbosa
Classificações Exame (Época Normal)

Nr Nome Exame Recurso Laboratório NOTA FINAL
35803 Alexandra Martins Silva 19      
30969 Alexandre Soares Barbosa R      
30706 Carla Sofia Carmo R      
35810 Carlos Moutinho Machado 13      
  Jácome Miguel Cunha 12      
28156 Jorge Soares Lima 10      
17092 Lígia Rodrigues Teixeira 10      
30662 Luís Miguel Neiva Ferros 14      
25371 Luís Pedro Gomes R      
29016 Marco Paulo Martins Cruz 10      
30743 Maria Madalena Varzim Faria 10      
28171 Marlene Silva Amorim R      
23198 Marta Carneiro Silva R      
33724 Miguel Henrique Fernandes 13      
  Paulo Alexandre Afonso Dias D      
35856 Pedro Gonçalves Silva R      
28179 Raquel Couto Pires R      
20225 Ricardo Gaspar Paz R      
  Rogério Leite Costa R      
23218 Susana Morais Pacheco R      
20838 Vitor Sá Pereira R      

-- LuisSoaresBarbosa - 21 Sep 2004

MFISum 16 Dec 2004 - 16:54 - r6 OlgaPacheco
T (2004.09.23): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

TP (2004.09.22): Apresentação: marcação de turnos.

TP (2004.09.22): Apresentação: marcação de turnos.

T (2004.09.30): Motivação para a especificação relacional. Introdução ao Cálculo Relacional. Operadores básicos e propriedades.

TP (2004.09.29): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório(Modelling with Sequences).

TP (2004.09.30): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório (Modelling with Sequences).

T (2004.10.07): Cálculo Relacional: Lei modular; técnicas de prova; exemplos.

TP (2004.10.06): Resolução do problema 03 dos guiões (Modelling with Sets).

TP (2004.10.07): Resolução do problema 03 dos guiões (Modelling with Sets).

T (2004.10.14): Dispensa de aulas concedida pelo Senhor Reitor

TP (2004.10.13): Resolução do problema 06 dos guiões (Modelling with Mappings).

TP (2004.10.14): Resolução do problema 06 dos guiões (Modelling with Mappings).

T (2004.10.21): Raciocínio com funções: regras de shunting; especialização de leis. Conexões de Galois: motivação, definição e exemplos. Propriedades básicas associadas a uma conexão de Galois. Prova da preservação de supremos (infimos) pelo adjunto inferior (superior).

TP (2004.10.20): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

TP (2004.10.21): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

T (2004.10.28): Continuação da aula anterior: análise de diversos exemplos de conexões de Galois e derivação de propriedades. Noção de either e split relacionais.

TP (2004.10.27): Resolução da Ficha 1 (Cálculo Relacional).

TP (2004.10.28): Resolução da Ficha 1 (Cálculo Relacional).

T (2004.11.04): Faltou o docente (por deslocação em serviço). Em substituição foi dada uma aula TP a cargo da Prof. Olga Pacheco.

TP (2004.11.03): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

TP (2004.11.04): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

T (2004.11.11): Semântica relacional da meta-linguagem de VDM. Definição recursiva de relações. Noção de hilomorfismo relacional. Incursão na semântica das definições recursivas. Teorema de Knaster-Tarski.

TP (2004.11.10): Faltou a docente (deslocação em serviço).

TP (2004.11.11): Faltou a docente (deslocação em serviço).

T (2004.11.18): Faltou o docente (deslocação em serviço).

Esta aula será reposta no dia 14 Dez (terça-feira) pelas 14.30 h.

TP (2004.11.17): Faltou a docente. (Aula de substituição).

TP (2004.11.18): Faltou a docente. (Aula de substituição).

T (2004.11.25): Cálculo de pontos fixos. Leis básicas e exemplos. Aplicação ao cálculo de hilomorfismos relacionais.

TP (2004.11.24): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

TP (2004.11.25): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

T (2004.12.02): Propriedades dos hilomorfismos relacionais. Aplicação ao estudo dos tipos colectivos (não indutivos) de VDM (conjuntos e corresponências).

TP (2004.12.01): Feriado Nacional.

TP (2004.12.02): Resolução da Ficha 4 (Conexões de Galois). Continuação da resolução do problema 09 dos guiões.

T (2004.12.09): Relação de acessibilidade e pertença em tipos de dados. Factorização em equações-hilo. Condições para a existência de soluções únicas. Aplicações.

TP (2004.12.08): Feriado Nacional.

TP (2004.12.09): (Aulas de dúvidas)

T (2004.12.14): (Reposição aula de 18 Nov) Discussão de exercícios de aplicação.

T (2004.12.16): Conclusão da disciplina. Preenchimento do questionário de avaliação.

TP (2004.12.15): (Aulas de dúvidas)

TP (2004.12.16): (Aulas de dúvidas)

-- LuisSoaresBarbosa - 21 Sep 2004

MFPII0405 26 Feb 2007 - 00:31 - r11 JoseBacelarAlmeida
SumáriosAulas

T (2005.02.21): Apresentação da Disciplina. Noção de refinamento.

TP (2005.02.22, 2005.02.24): Apresentação e marcação de turnos. Generalização das construções básicas das funções para as relações (do functor para o relator). A unidade nas relações. O produto de relações. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

T (2005.02.28): JOIN'05.

TP (2005.03.01): JOIN'05.

T (2005.03.07): Introdução ao refinamento de modelos de dados: relações de abstraçao e representação; a ordem de refinamento. Invariantes induzidos. Exemplos: algumas leis de reificação de conjuntos e correspondências.

TP (2005.03.03, 2005.03.08): Continuação da apresentação de relators: o coproduto de relações; o power relator. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

TP (2005.03.10, 2005.03.22): Catamorfismos relacionais: propriedades e exemplos.

T (2005.03.14): Estudo de algumas situações de refinamento de dados. Propriedades da relação de refinamento. Prototipagem: o legado Camila.

TP (2005.03.15): Assistir à apresentação sobre o "PURe Camila" por João Ferreira e Alexandra Mendes.

T (2005.03.21): Não houve aula (ausência do docente em reunião interna).

TP (2005.03.31, 2005.04.5): Especificação de propriedades como Catamorfismos Relacionais.

T (2005.04.04): Relacionadores e o refinamento estruturado. Leis de refinamento de conjuntos finitos, correspondências e representações por apontador. Introdução ao problema de desrecursivação de modelos de dados.

TP (2005.04.07, 2005.04.12): Utilização do Haskell na especificação do Software (comparação com VDM/Camila): abstração Set e Map; invariantes de tipo; pré e pós-condições nas operações; especificações não executáveis; características não funcionais (estado de objectos e do interpretador; operações IO; etc.). Apresentação dos projectos práticos da disciplina.

T (2005.04.11): Teorema de desrecursivação genérica: Função de abstracção e invariante concreto. Relações de pertença e acessibilidade estrutural. Cálculo da relação de acessibilidade para diversos exemplos.

TP (2005.04.14, 2005.04.19) Refinamento de Dados: caracterização abstracta; exemplos de refinamentos; exercícios sobre refinamento de dados e utilização da biblioteca CamilaPrelude? .

T (2005.04.18): Introdução ao refinamento algorítmico. Relação de satisfação de uma especificação (implícita) por uma função e sua generalização à satisfação de uma relação por outra. Enunciação e prova das propriedades básicas desta relação. Refinamento algoritmíco progressivo.

TP (2005.04.21, 2005.04.26) Refinamento de dados - exercício sobre normalização de dados para representação tabular.

T (2005.05.02): Continuação do sumário da aula anterior

TP (2005.04.28, 2005.05.03) Refinamento de dados: exercício sobre desrecursivação de dados.

T (2005.05.09): Noção de simulação. Resolução de equações de refinamento. Soluções funcionais e não funcionais.

TP (2005.05.05, 2005.05.17) Refinamento de algoritmos: Definição da relação "é implementado por". Demonstração de duas leis sobre a relação de implementação. Preenchimento dos inquéritos.

T (2005.05.16): Cálculo de simulações: análise de alguns casos de estudo.

TP (2005.05.19, 2005.05.24) Caso de estudo sobre refinamento de algoritmos: verificação da correcção do "insertion sort".

T (2005.05.23): Inter-combinação de ciclos e eliminação de recursão mútua. Teorema de Fokkinga e seus corolários. Exemplos de aplicação.

TP (2005.05.31, 2005.06.02) Recepção de trabalhos práticos.

T (2005.05.30): Conclusão da aula anterior. Introdução ao cálculo de soluções iterativas. Preenchimento dos inquéritos de avaliação e fecho da disciplina.

Métodos Formais de Programação II

2004-2005


Equipa Docente

Horários

Tipo Horário Sala
T 2as: 11-13 h DI A1
TP (Turno 1) 3as: 10-12 h DI 1.09
TP (Turno 2) 5as: 11-11 h DI 0.04

Horários de Atendimento

Docente Horário
Luís S. Barbosa a definir
Carlos Bacelar 2as 14-19

Nota: o contacto com os docentes através de email deve ser sempre feito a partir de contas institucionais da Universidade e com a indicação clara do nome da disciplina no subject.

Programa Resumido

  • Introdução ao cálculo de programas. Princípio da abstracção dos dados. Relações de abstracção e de representação. Inequações de refinamento.
  • Cálculo de refinamento formal de dados. Teorema de desrecursivação genérica. Relações de pertença estrutural e acessibilidade estrutural. Implementação de tipos indutivos polinomais em linguagens com gestão de memória dinâmica: Introdução de apontadores em linguagens tipo C/C++. Representação orientada a objectos.
  • Cálculo de refinamento algorítmico. A eficiência como principal motivação para o refinamento algorítmico. Fases do refinamento algorítmico: simulação, redução do não-determinismo, mudança de estrutura de dados virtual. Lei de refinamento funcional. Lei de refinamento relacional. Leis de fusão «vertical» e «horizontal». Lei de refinamento de simultâneo de dados e algoritmos. Cálculo de ciclos while como hilomorfismos.
  • Prototipagem rápida e integração com outras tecnologias. Introdução ao VDM++. Integração de protótipos reactivos em arquitecturas cliente-servidor. Emulação de serviços intermédios («middleware») e de serviços de dados («dataware»).

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 70% (nota mínima de 8 valores)
    • Componente Prática: Facultativa, com um peso de 30%.
    • No caso não se realizar trabalho prático, o exame teórico conta integralmente para a nota final (100%), mas essa nota fica majorada a 16 valores.

Acetatos

  • Refinamento de modelos de dados (pdf)
  • Refinamento algoritmíco (pdf)

Aulas Práticas

Notas dos Exames

As notas da 1ª e 2ª chamadas estão disponíveis aqui (pdf).

A pauta da época de recurso está disponível aqui (pdf).

Projectos Práticos

  1. Reengenharia do interpretador PUReCamila
  2. Desenho de uma hiearquia de classes para os tipos do CamilaPrelude
  3. Camila/VDM frontend para Haskell
  4. Static analysis for VDM
  5. VDM.net

Ver descrição detalhada destes projectos na página PUReCamila.

Bibliografia

  • Algebra of Programming. R. Bird and O. de Moor. Series in Computer Science. Prentice-Hall International, 1997. C. A. R. Hoare, series editor.
  • Modelling Systems: Practical Tools and Techniques J. Fitzgerald and P.G. Larsen. Cambridge University Press, 1st edition, 1998, Cambridge University Press, 1999.
  • Systematic Software Development Using VDM. Cliff Jones,Prentice Hall (Hoare Series in Computer Science), 1986.
  • Recursion in Pointfree Style, J. N. Oliveira, (capítulo de livro em preparação), 2004.
  • Data representation and Refinement, J. N. Oliveira, (capítulo de livro em preparação), 2004.
  • Operation Refinement, J. N. Oliveira, (capítulo de livro em preparação), 2004.

MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21): Apresentação da Disciplina. Noção de refinamento.

TP (2005.02.22, 2005.02.24): Apresentação e marcação de turnos. Generalização das construções básicas das funções para as relações (do functor para o relator). A unidade nas relações. O produto de relações. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

T (2005.02.28): JOIN'05.

TP (2005.03.01): JOIN'05.

T (2005.03.07): Introdução ao refinamento de modelos de dados: relações de abstraçao e representação; a ordem de refinamento. Invariantes induzidos. Exemplos: algumas leis de reificação de conjuntos e correspondências.

TP (2005.03.03, 2005.03.08): Continuação da apresentação de relators: o coproduto de relações; o power relator. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

TP (2005.03.10, 2005.03.22): Catamorfismos relacionais: propriedades e exemplos.

T (2005.03.14): Estudo de algumas situações de refinamento de dados. Propriedades da relação de refinamento. Prototipagem: o legado Camila.

TP (2005.03.15): Assistir à apresentação sobre o "PURe Camila" por João Ferreira e Alexandra Mendes.

T (2005.03.21): Não houve aula (ausência do docente em reunião interna).

TP (2005.03.31, 2005.04.5): Especificação de propriedades como Catamorfismos Relacionais.

T (2005.04.04): Relacionadores e o refinamento estruturado. Leis de refinamento de conjuntos finitos, correspondências e representações por apontador. Introdução ao problema de desrecursivação de modelos de dados.

TP (2005.04.07, 2005.04.12): Utilização do Haskell na especificação do Software (comparação com VDM/Camila): abstração Set e Map; invariantes de tipo; pré e pós-condições nas operações; especificações não executáveis; características não funcionais (estado de objectos e do interpretador; operações IO; etc.). Apresentação dos projectos práticos da disciplina.

T (2005.04.11): Teorema de desrecursivação genérica: Função de abstracção e invariante concreto. Relações de pertença e acessibilidade estrutural. Cálculo da relação de acessibilidade para diversos exemplos.

TP (2005.04.14, 2005.04.19) Refinamento de Dados: caracterização abstracta; exemplos de refinamentos; exercícios sobre refinamento de dados e utilização da biblioteca CamilaPrelude? .

T (2005.04.18): Introdução ao refinamento algorítmico. Relação de satisfação de uma especificação (implícita) por uma função e sua generalização à satisfação de uma relação por outra. Enunciação e prova das propriedades básicas desta relação. Refinamento algoritmíco progressivo.

TP (2005.04.21, 2005.04.26) Refinamento de dados - exercício sobre normalização de dados para representação tabular.

T (2005.05.02): Continuação do sumário da aula anterior

TP (2005.04.28, 2005.05.03) Refinamento de dados: exercício sobre desrecursivação de dados.

T (2005.05.09): Noção de simulação. Resolução de equações de refinamento. Soluções funcionais e não funcionais.

TP (2005.05.05, 2005.05.17) Refinamento de algoritmos: Definição da relação "é implementado por". Demonstração de duas leis sobre a relação de implementação. Preenchimento dos inquéritos.

T (2005.05.16): Cálculo de simulações: análise de alguns casos de estudo.

TP (2005.05.19, 2005.05.24) Caso de estudo sobre refinamento de algoritmos: verificação da correcção do "insertion sort".

T (2005.05.23): Inter-combinação de ciclos e eliminação de recursão mútua. Teorema de Fokkinga e seus corolários. Exemplos de aplicação.

TP (2005.05.31, 2005.06.02) Recepção de trabalhos práticos.

T (2005.05.30): Conclusão da aula anterior. Introdução ao cálculo de soluções iterativas. Preenchimento dos inquéritos de avaliação e fecho da disciplina.

MP2News 12 Jul 2005 - 15:22 - r34 MariaJoaoFrade
Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02.

-- MariaJoaoFrade - 12 Jul 2005

Os testes poderão ser consultados na Quarta-feira (13 de Julho) às 9:30 na sala DI 0.02 (junto à recepção).

-- MariaJoaoFrade - 12 Jul 2005

Os alunos que vão entregar o trabalho prático apenas a MP2, deverão faze-lo na próxima 2ªfeira, 30 de Maio, da parte da manhã. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

Quem entregar trabalhos a MP2 e a PP4, apenas tem que fazer a marcação de entrega de trabalhos a PP4 (a recepção de MP2 será feita na mesma altura).

-- MariaJoaoFrade - 24 May 2005

Disponíveis as notas práticas do ano lectivo 2004/2004.

-- JoseBacelarAlmeida - 09 Mar 2005

MP4Gru 02 Aug 2005 - 10:30 - r17 LuisSoaresBarbosa
Grupo Nr Nome Tema Class. PRÁTICA Exame (N) Exame (R) CLASS. FINAL
1 35840 José Tércio Soares D 15 13   14
  35743 Pedro Machado D 15 13   14
  35846 Márcio Azevedo D 15     F
2 35806 Bruno Miguel Sousa E 18 R 13 15
  38601 Mário Egídio Encarnação E 18 15   16
3 33696 Eunice Gomes J2   11   10
  33729 Renato Ribeiro J2       F
4 38621 Simão Cunha G1 14 10   11
  39493 João Pedro Barbosa G1 14 16   16
5 39834 Daniel Gomes Mendes H2 14 10   11
  33684 António Augusto Silva H2 14   R R
  35837 João Pedro Cerqueira H2 14 10   11
6 35839 José Serra Marques F1       F
  35860 Sérgio Pereira Novo F1       F
7 38589 Luis Miguel Braga E 18 16   17
  38608 Filipe Mendes E       F
8 21018 Marco Silva Machado H1       F
  36859 Anabela Carvalho Pinto H1       F
9 38619 Ana Sofia Ferreira I1       F
  38611 Ricardo Fortunas I1       F
10 38612 Daniela Carneiro da Cruz B 16 14   15
  38582 Elisabete Fonseca Ferreira B 16 17   17
  38577 Patricia Isabel Oliveira B 16 13   14
11 38588 Bárbara Vieira A 17 15   16
  38618 Marco Coelho A 17 13   14
    Hélder Teixeira A 17 15   16
  39442 Hugo Macedo A 17 19   19
12 35847 Madalena Lopes C 16 14   15
  35862 Sofia Moreira C 16 R 8 10
13 30717 Fernando Morais J1 15   R R
  25332 Rui Moutinho J1 15 10   12
14 38615 Ricardo Pontes F2       F
  38599 Ana Rodrigues F2       F
  38579 Celina Ribeiro F2       F
15 33705 João C. Pinto G2 14 R 10 11
    Manuel Mendes G2       F
    Arnaldino Pinto G2       F
Extra 30696 Alexandre Barbosa   * 15   15
  13737 Mário Afonso Silva     R   R

-- LuisSoaresBarbosa - 30 Jul 2005

MP4Sum 21 Feb 2006 - 14:34 - r9 LuisSoaresBarbosa
T (2006.02.21): Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento dos autómatos determinísticos.

-- LuisSoaresBarbosa - 21 Feb 2006

MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC
AFP
CA
CriptoBio
EDFS
EC
DSI
ELP1
ELP2
ELP3
IJ
LAD
LabMF
LI1
LC
MFP1
MFP2
MP1
MP2
MP4
Opcao III
PF
PP1
PP2
Estágios
Projectos
PhD@DI
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas:

2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada).

4a.fa. 16 Fev 10:00, com possibilidade de consulta dos exames (2a. chamada).

-- JorgeSousaPinto - 06 Jan 2005

Disponíveis nesta página (com a preciosa ajuda de Nuno Rodrigues) alguns exercícios resolvidos.

-- JorgeSousaPinto - 08 Jan 2005

Já disponível nesta página a versão final dos slides das aulas teóricas.

-- JorgeSousaPinto - 2 Dec 2004

Disponível nesta página a versão 5 dos exercícios da disciplina. A menos de correcções de erros e algum rearranjo de estrutura, esta é a versão final deste documento

-- JorgeSousaPinto - 11 Dec 2004

MetodosFormaisProgramacaoI 04 Mar 2005 - 16:51 - r13 LuisSoaresBarbosa
SumáriosAulas

T (2004.09.23): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

TP (2004.09.22): Apresentação: marcação de turnos.

TP (2004.09.22): Apresentação: marcação de turnos.

T (2004.09.30): Motivação para a especificação relacional. Introdução ao Cálculo Relacional. Operadores básicos e propriedades.

TP (2004.09.29): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório(Modelling with Sequences).

TP (2004.09.30): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório (Modelling with Sequences).

T (2004.10.07): Cálculo Relacional: Lei modular; técnicas de prova; exemplos.

TP (2004.10.06): Resolução do problema 03 dos guiões (Modelling with Sets).

TP (2004.10.07): Resolução do problema 03 dos guiões (Modelling with Sets).

T (2004.10.14): Dispensa de aulas concedida pelo Senhor Reitor

TP (2004.10.13): Resolução do problema 06 dos guiões (Modelling with Mappings).

TP (2004.10.14): Resolução do problema 06 dos guiões (Modelling with Mappings).

T (2004.10.21): Raciocínio com funções: regras de shunting; especialização de leis. Conexões de Galois: motivação, definição e exemplos. Propriedades básicas associadas a uma conexão de Galois. Prova da preservação de supremos (infimos) pelo adjunto inferior (superior).

TP (2004.10.20): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

TP (2004.10.21): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

T (2004.10.28): Continuação da aula anterior: análise de diversos exemplos de conexões de Galois e derivação de propriedades. Noção de either e split relacionais.

TP (2004.10.27): Resolução da Ficha 1 (Cálculo Relacional).

TP (2004.10.28): Resolução da Ficha 1 (Cálculo Relacional).

T (2004.11.04): Faltou o docente (por deslocação em serviço). Em substituição foi dada uma aula TP a cargo da Prof. Olga Pacheco.

TP (2004.11.03): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

TP (2004.11.04): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

T (2004.11.11): Semântica relacional da meta-linguagem de VDM. Definição recursiva de relações. Noção de hilomorfismo relacional. Incursão na semântica das definições recursivas. Teorema de Knaster-Tarski.

TP (2004.11.10): Faltou a docente (deslocação em serviço).

TP (2004.11.11): Faltou a docente (deslocação em serviço).

T (2004.11.18): Faltou o docente (deslocação em serviço).

Esta aula será reposta no dia 14 Dez (terça-feira) pelas 14.30 h.

TP (2004.11.17): Faltou a docente. (Aula de substituição).

TP (2004.11.18): Faltou a docente. (Aula de substituição).

T (2004.11.25): Cálculo de pontos fixos. Leis básicas e exemplos. Aplicação ao cálculo de hilomorfismos relacionais.

TP (2004.11.24): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

TP (2004.11.25): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

T (2004.12.02): Propriedades dos hilomorfismos relacionais. Aplicação ao estudo dos tipos colectivos (não indutivos) de VDM (conjuntos e corresponências).

TP (2004.12.01): Feriado Nacional.

TP (2004.12.02): Resolução da Ficha 4 (Conexões de Galois). Continuação da resolução do problema 09 dos guiões.

T (2004.12.09): Relação de acessibilidade e pertença em tipos de dados. Factorização em equações-hilo. Condições para a existência de soluções únicas. Aplicações.

TP (2004.12.08): Feriado Nacional.

TP (2004.12.09): (Aulas de dúvidas)

T (2004.12.14): (Reposição aula de 18 Nov) Discussão de exercícios de aplicação.

T (2004.12.16): Conclusão da disciplina. Preenchimento do questionário de avaliação.

TP (2004.12.15): (Aulas de dúvidas)

TP (2004.12.16): (Aulas de dúvidas)

-- LuisSoaresBarbosa - 21 Sep 2004

Métodos Formais de Programação I

2004-2005


Equipa Docente

Horários

Tipo Horário Sala
T 5as: 09-11 h DI A2
TP (Turno 1) 4as: 09-11 h DI 0.11
TP (Turno 2) 5as: 14-16 h DI 0.11

Horários de Atendimento

Docente Horário
Luís S. Barbosa 5as 13-14
Olga Pacheco 3as 15-16 e 6as 11-12

Nota: o contacto com os docentes através de email deve ser sempre feito a partir de contas institucionais da Universidade e com a indicação clara do nome da disciplina no subject.

Programa Resumido

  • Introdução ao problema do controlo de qualidade em `software' . Especificação formal -- porquê e para quê? Introdução aos binómio especificação /implementação.
  • Ciclo de vida do software usando métodos formais. Redução do risco e dos custos. Áreas típicas de aplicação. Sistemas críticos e confiáveis. Qualidade de serviços.
  • Linguagens e métodos para especificação formal. Antecendentes históricos. Do método de Viena (VDM) ao `standard' ISO/IEC 13817-1 (VDM-SL).
  • Estudo da notação VDM-SL. Modelação por conjuntos, sequências e funções finitas. Especificação por pré/pós-condições. Invariantes. Sub-especificação e não-determinismo. Relação (especificação) versus função (implementação).
  • Prototipagem e animação. Experiência com a utilização do ambiente VDMTOOLS.
  • Introdução ao cálculo relacional. Combinadores relacionais básicos. Taxonomia de relações binárias. Conexões de Galois. Pontos fixos.
  • Semântica relacional para VDM-SL e cálculo de especificações.

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 80% (nota mínima de 8 valores)
    • Componente Prática: 20% em avaliação contínua e entrega de relatórios das aulas laboratoriais (nota mínima de 10 valores)
    • Recorda-se que o estatuto de Trabalhador-Estudante não isenta os alunos nessas condições da obrigatoriedade de realizar a componente experimental da disciplina.

Provas de Avaliação

  • 05.02.21 - 1a Ch (com correcção parcial) (pdf)
  • 05.02.02 - 2a Ch (com correcção parcial) (pdf)

Acetatos e Textos de Apoio

  • Formal Methods in Software Engineering (slides)
  • no ficheiro slides encontram-se cópias dos acetatos utilizados nas aulas teóricas:
    • Ficheiros ifmsl.{pdf|ps} - An Introduction to Formal Modelling (22 slides).
    • Ficheiros rfmsl*.{pdf|ps} - Relational Formal Modelling (84 slides).
    • Ficheiros irhsl*.{pdf|ps} - An Introduction to Relational Hylomorphisms (45 slides).
    • Ficheiros tffsl*.{pdf|ps} - Theorems for Free: an Introduction (22 slides).
  • Guião das sessões de laboratório sobre VDMTOOLS.
  • Aqui encontra-se a resolução de um dos exercícios discutidos na aula de 14 Dez.
  • Formulário com leis do Cálculo Relacional.
  • Formulário com leis do Cálculo Funcional.

Aulas Práticas

  • Fichas

  • Script de configuração (adaptar!):

VDMSLROOT=/home/your_account/vdmhome

LM_LICENSE_FILE=/home/your_account/vdmhome/u_minho_students4.dat

PATH=$PATH:/home/your_account/vdmhome

export VDMSLROOT LM_LICENSE_FILE PATH

Bibliografia

Classificações Exame (Época Normal)

Nr Nome Exame Recurso Laboratório NOTA FINAL
35803 Alexandra Martins Silva 19   18 19
30969 Alexandre Soares Barbosa R 8.5 14 10
28141 Arnaldino Pinto Faltou   10  
30706 Carla Sofia Carmo R   15  
35810 Carlos Moutinho Machado 13 15 17 16
32220 Carlos Manuel Pereira Faltou D 14  
30711 Dário Samico Faltou   15  
35803 Jácome Miguel Cunha 12   17 13
30655 Joana Teresa Neves Faltou   15  
28156 Jorge Soares Lima 10   10 10
  Leonel Mendonça Faltou   10  
17092 Lígia Rodrigues Teixeira 10   10 10
30662 Luís Miguel Neiva Ferros 14   14 14
25371 Luís Pedro Gomes R 11.5 10 12
29016 Marco Paulo Martins Cruz 10   14 11
26327 Maria Inês Campos Faltou   10  
30743 Maria Madalena Varzim Faria 10   15 11
28171 Marlene Silva Amorim R 9 15 10
23198 Marta Carneiro Silva R R 10  
33723 Miguel Angelo Duarte Faltou   10  
33724 Miguel Henrique Fernandes 13   17 14
23203 Paulo Alexandre Afonso Dias D R 10  
35856 Pedro Gonçalves Silva R 11.5 15 12
30748 Pedro Rui Dinis Silva Faltou   14  
24870 Pedro Silva Faltou   10  
28179 Raquel Couto Pires R Oral: 10 10 10
33730 Ricardo Pinheiro Faltou   15  
20225 Ricardo Gaspar Paz R 8.5 Sem Informação Contactar Docente
30752 Rogério Leite Costa R D 14  
20232 Sandrina Maciel Faltou   10  
23218 Susana Morais Pacheco R R 10  
20838 Vitor Sá Pereira R   14  
25403 Wagner Barretoo Faria Faltou   15  


-- LuisSoaresBarbosa - 4 Mar 2005

MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida

Métodos de Programação I 2005-2006 (anexo)

ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html. Esta página destina-se apenas a fornecer material de estudo adicional e a dar apoio aos trabalhos práticos.



Trabalhos Práticos

Notas Práticas

Apresentações do 2º Trabalho Prático

  • As apresentações do 2º trabalho prático decorrerão nos dias 4, 5 e 6 de Janeiro. Já se encontram disponíveis na recepção do DI as folhas para as marcações das apresentações orais dos trabalhos práticos.

Apresentações do 1º Trabalho Prático

  • As apresentações do 1º trabalho prático decorrerão nos dias 21, 22 e 23 de Novembro. Já se encontram disponíveis na recepção do DI as folhas para as marcações das apresentações orais dos trabalhos práticos.

Lista de notas congeladas

Enunciados

  1. Trabalho sobre utilização de monads.
    • Enunciado
    • Data/hora limite de entrega - 23:59 de 13/11/2005
  2. Trabalho sobre manipulação de expressões.
    • Enunciado
    • Data/hora limite de entrega - 23:59 de 18/12/2005

Relatórios dos Trabalhos Práticos

É obrigatório a elaboração de um pequeno relatório (1 ou 2 páginas), explicando as principais decisões tomadas na resolução dos problemas propostos. Este relatório deve também ser submetido ao sistema de recepção de trabalhos práticos. Aquando da apresentação oral, os grupos devem-se fazer acompanhar pelos respectivos relatórios impressos.

Submissão Electrónica

  • Siga este link. Os trabalhos têm de ser submetidos em formato .zip ou .tgz
  • Para efectuar a entrega do trabalho é necessário registar primeiro o grupo, registo este que so deve acontecer uma única vez. Para isso devem seleccionar a opção Registar e introduzir um username e uma password para o grupo; Depois de registado o grupo, devem fazer login com o username e password escolhidos; Uma vez dentro do sistema, devem selecionar a opção "Elementos do Grupo" e registar todos os elementos do grupo um por um; Por fim, para submeter o trabalho selecionem a opção "Submeter Trabalho" e escolham qual o trabalho a submeter bem como o ficheiro contendo o trabalho, fazendo "Submit" no final.

Se algum grupo perder a password contacte NunoRodrigues. Não tentem nunca registarem-se mais do que uma vez.

FAQ dos Trabalhos Práticos

Disponível nesta página
(faça login como TWikiGuest e coloque as suas questões)


Material Disponibilizado

Material de Apoio


MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias

Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas:

2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada).

4a.fa. 16 Fev 10:00, com possibilidade de consulta dos exames (2a. chamada).

-- JorgeSousaPinto - 06 Jan 2005

Disponíveis nesta página (com a preciosa ajuda de Nuno Rodrigues) alguns exercícios resolvidos.

-- JorgeSousaPinto - 08 Jan 2005

Já disponível nesta página a versão final dos slides das aulas teóricas.

-- JorgeSousaPinto - 2 Dec 2004

Disponível nesta página a versão 5 dos exercícios da disciplina. A menos de correcções de erros e algum rearranjo de estrutura, esta é a versão final deste documento

-- JorgeSousaPinto - 11 Dec 2004

Enunciados Exames

Notas

Época Especial (Outubro 2005)

N. Nome Curso Nota Exame Nota Final
17871 Marco Freire ESI R  
19699 Ivan Noor... ESI R  
19710 Luis Rocha ESI D  
22692 Miguel Fernandes ESI 11 12
24871 Ricardo Gonçalves ESI D  
27620 João Lopes ESI R  
27650 Paulo Braga ESI R  
27662 Ricardo Gomes ESI R  
27663 Ricardo Figueiredo ESI R  
27604 Duarte Lourenço ESI D  
27683 Sara Santos ESI 8 10
30166 António Pereira ESI R  
30185 Ernesto Festas ESI 10 12
33198 Personal.Nuno Tendais ESI R  
33232 Rui Rodrigues ESI D  
35360 Pedro Carvalho ESI R  
35375 Sérgio Miranda ESI D  
36765 Sandra Fazendeiro ESI D  
23218 Susana Pacheco MCC D
28154 João Carmo MCC D  
35862 Sofia Moreira MCC 12 12
41029 Adriana Santos MCC D  

Os exames da época de recurso poderão ser consultados na próxima semana em data a designar.


Métodos de Programação I 2004-2005

Para consultar a página antiga: MP-I


Curiosidades...

  • Uma lista coligida recentemente das artigos de investigação mais influentes no domínio das Linguagens de Programação

Equipa Docente

Horários de Atendimento

Docente Horário Horário (Época Exames)
JorgeSousaPinto 2as. 14-17, 3as. 9-12 2as. e 3as. 14:30-17:30
JoseBarros 4as. 10-12, 5as. 9-12  
NunoRodrigues 4as. 14-17, 5as. 9-12  


FAQ da Disciplina

Disponível nesta página
(faça login como TWikiGuest e coloque as suas questões)

Material Disponibilizado

Material de Apoio

  • Ficheiros contendo definições e exemplos de utilização dos padrões de recursividade de listas e árvores binárias: MP1-Libraries.tgz

Trabalhos Práticos

Submissão Electrónica

  • Siga este link. Os trabalhos têm de ser submetidos em formato .zip ou .tgz
  • Para efectuar a entrega do trabalho é necessário registar primeiro o grupo, registo este que so deve acontecer uma única vez. Para isso devem seleccionar a opção Registar e introduzir um username e uma password para o grupo; Depois de registado o grupo, devem fazer login com o username e password escolhidos; Uma vez dentro do sistema, devem selecionar a opção "Elementos do Grupo" e registar todos os elementos do grupo um por um; Por fim, para submeter o trabalho selecionem a opção "Submeter Trabalho" e escolham qual o trabalho a submeter bem como o ficheiro contendo o trabalho, fazendo "Submit" no final.

Se algum grupo perder a password contacte NunoRodrigues. Não tentem nunca registarem-se mais do que uma vez.

Enunciados

  • Trabalho 1, a ser submetido electronicamente até às 24:00 do dia 10 de Outubro.

  • Trabalho 2, a ser submetido electronicamente até às 24:00 do dia 7 de Novembro.

  • Trabalho 3, a ser submetido electronicamente até às 24:00 do dia 12 de Dezembro.


Pré-Requisitos

Não havendo pré-requisitos formais, assume-se que os alunos possuem o seguinte conjunto de conhecimentos:

  • familiaridade com conceitos básicos de Programação Funcional
  • familiaridade com a linguagem de programação Haskell

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 60% (nota mínima de 8 valores)
    • Componente Prática (Trabalhos Práticos): 40% (nota mínima de 10 valores)
  • Avaliação prática
    • A componente prática da nota resulta da avalição de três trabalhos práticos.
    • Os trabalhos serão realizados extra-aulas, por grupos de exactamente 3 alunos.
    • Datas para a entrega dos trabalhos práticos: 10 de Outubro, 7 de Novembro, e 12 de Dezembro.
    • Aqueles alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente. O CONGELAMENTO IMPLICA QUE O ALUNO NÃO SERÁ AVALIADO NA VERTENTE PRÁTICA ESTE ANO, NÃO PODENDO POR ISSO ENTREGAR QUALQUER TRABALHO.

Programa Resumido

  • Motivação. Teoria e método em programação. Cálculo e raciocínio sobre programas. Composicionalidade. Combinadores de programas. Modularidade e reutilização.

  • Programação funcional: sua motivação e antecendentes históricos. Composição de funções. Noções de abstracção e de isomorfismo.

  • Iniciação à estruturação de dados. Combinadores básicos e suas propriedades estruturais (reflexão, fusão, absorção, cancelamento e de functorialidade). Álgebra de um tipo de dados. Lei da troca.

  • Introdução às estruturas de dados indutivas regulares. Álgebras de functores. A triologia «cata-ana-hilo». Recursividade polinomial. Caso de estudo: algoritmos de ordenação.

  • Parametrização e polimorfismo. Programação genérica. Functores de tipo. Introdução ao politipismo.

  • Programação funcional com mónadas. `Input/output'. Excepções

Bibliografia

Textos de referência sobre Programação Funcional e Haskell:

  • R. Bird, Introduction to Functional Programming Using Haskell. Prentice-Hall International, 2nd edition, 1998

  • J.M. Valença e J.B. Barros, Fundamentos da Computação II: Programação Funcional. Universidade Aberta, 2000

Recomenda-se ainda, como apoio específico aos temas tratados na disciplina:

MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha

Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)?

Claro que não! Faltam todos os operadores das somas e dos exponenciais. Quanto mais provar melhor!!

No ponto 4 para a calculadora quantas expressões simplificadas são para devolver? É que tendo a função "reescreve" a devolver várias simplificações as hipóteses de aplicar novas regras vão aumentando progressivamente. Se é para devolver apenas uma simplificação qual devemos escolher?

Essa decisão fica ao vosso critério.

Na função "reescreve" pede para devolver todas as expressões possiveis resultantes da reescrita. A pergunta é: é necessário devolver expressões em que a substituião foi feita apenas num termo de nivel n? Isto é a substituição feita apenas dentro de um termo que por sua vez está dentro de outro e assim sucessivamente? Ou é necessário devolver apenas as substituições que fazem matching no primeiro nivel do termo?

Tem que devolver todas, independentemente do nível em que se encontrem na árvore. Por exemplo,

reescreve (Term Comp [Var ´f´, Term Id []], Var ´f´) (Term Comp [Term Comp [Term Fst [], (Term Comp [Term Snd [], Term Id []]], Term Id []])
deverá devolver a seguinte lista (não necessariamente na ordem apresentada). Note que existem duas subexpressões que fazem match com o lado esquerdo da regra.
[Term Comp [Term Fst [], (Term Comp [Term Snd [], Term Id []]], Term Comp [Term Comp [Term Fst [], Term Snd []], Term Id []]]

O enunciado faz referência à necessidade de definir a orientação em que vamos aplicar a equação.

Na practica, a que se refere essa orientação? Isso quer dizer que uma vez que assumimos que a orientação é sempre feita da

esquerda para a direita, a substituição vai ser sempre feita na equação (PF1,PF2)? Isto é, fazendo match com PF1, devolve sempre

PF2 (partindo do principio que as condicoes se verificam)?

Exactamente. Definir a orientação é decidir qual dos lados de uma equação vai ficar do lado esquerdo e qual vai ficar do lado direito.

Quanto às expressões genéricas, a noçao de subexpressão refere-se a todos os membros da lista de Expressões de cada termo? ou seja..

data Exp v c = Term c [SubExp v c] | Var v

data SubExp v c = Term c [SubExp v c] | Var v

e se assim é qual a vantagem da criaçao deste tipo? sendo que uma subexpressão é em si mesma uma expressão.

Na versão mais simplista uma subexpressão é efectivamente igual a uma expressão, ou seja,

type SubExp v c = Exp v c

Assumindo esta definição, a função que enumera as subexpressões deverá devolver para o exemplo

assocr :: Pointfree 
assocr = Term Split [Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []]]
a seguinte lista de subexpressões (não necessariamente nesta ordem).
[Term Split [Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []]], 
 Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []], Term Fst [], Term Snd [], Term Id []]
Por vezes pode ser conveniente distinguir subexpressões iguais, mas que ocorrem em posições diferentes da expressão original, como é o caso da subexpressão Term Fst [] do exemplo acima. Quem desejar enveredar por esta alternativa deverá incluir no tipo das subexpressões uma indicação da posição ocupada pela subexpressão em causa. Essa posição deverá ser o caminho necessário para encontrar a subexpressão na expressão original.

Achei a explicaçao da função update um tanto confusa, é possivel dar um exemplo concreto de uma invocaçao e do resultado?

Vamos supor que uma substituição s (do tipo Subst Char PF) contém as seguintes associações entre variáveis e expressões (note que não estamos a assumir nenhuma impementação concreta para este tipo):

'x' --> Term Fst []
'y' --> Term Comp [Term Snd [], Term Fst []]

Se fizermos update s 'z' (Term Snd []) será devolvida uma nova substituição que para além das expressões associadas a 'x' e 'y' contém uma nova associação entre 'z' e Term Snd []. Se fizermos update s 'x' (Term Fst []) devolve a mesma substituição sem alterações. No entanto, se fizermos update s 'x' (Term Snd []) o update falha devolvendo Nothing pois 'x' já estava associado a uma expressão diferente.

Como colocar questões?

Faça login como TWikiGuest e coloque a sua questão no topo da página em bold. Logo que possível um dos docentes responderá às suas dúvidas.

MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida

Em principio quando é que sairão as notas da primeira chamada?

Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem o vai fazer na segunda chamada.

Não, o exame será publicado apenas no fim da época de exames.

-- JorgeSousaPinto - 19 Jan 2005

Haverão mais sessoes de duvidas, nomeadamente mais perto do exame da segunda chamada? É que, visto ainda faltar muito tempo pra este, ainda nao comecamos a estudar para ele, logo nao temos muitas duvidas aínda...

É uma boa pergunta, axo que era mais vantajoso uma das sessoes de duvidas ser na semana antes do exame da 2ª chamada.

Sim, claro, As desta semana destinam-se a quem vai à primeira chamada.

-- JorgeSousaPinto - 11 Jan 2005

Porque não fomos avaliados ao primeiro trabalho? Qual foi então o seu propósito? Perdermos tempo?

Temos diversas disciplinas com vários trabalhos cada. Agora, perdermos tempo com um, que não serviu-nos de nada... é no mínimo absurdo

O primeiro trabalho foi avaliado indirectamente. Uma vez que se tratou de um trabalho preparatório para o terceiro trabalho, entendemos avaliá-lo apenas como cumprindo ou não a funcionalidade básica; esta informação será tida em conta no cálculo da nota final.

-- JorgeSousaPinto - 06 Jan 2005

Absurda é a pergunta. Se no exame não aparecer nenhuma pergunta sobre a propriedade universal do produto, aprendê-la foi uma perda de tempo? Se a sua resposta é afirmativa então devia reconsiderar a sua opção de se inscrever num curso superior.

-- JoseBarros - 11 Jan 2005


No ponto 3.3, devemos fazer operaçoes n-árias ou dar uma aridade a cada operação? por exemplo a soma continuará a ser binária ou será n-ária?

Como não é especificado no enunciado quais os operadores n-ários a utilizar, devem apresentar uma solução genérica válida para operadores arbitrários, e exemplificá-la com alguns operadores de aridades diferentes (ver também enunciado do 1o. TP). Claro que podem incluir para este fim também operadores binários, bem como generalizar um operador binário para ternário, por exemplo.

-- JorgeSousaPinto - 11 Dec 2004


Na valorização 3 pede para fazer parser do tipo Expressao? Mas este nao da pra instanciar pk ta defenido a custa de type e nao data consequentemente da erro. Podemos redefenir atraves do data?

Nas valorizações, "the sky is the limit". Desde que seja em benefício do vosso trabalho sem introduzir novas limitações, alterem o que for necessário.

-- JorgeSousaPinto - 11 Dec 2004


Podiam dar um exemplo de um catamorfismo de ordem superior, é que não estou a perceber a ecencia da questao.

Aqui vai, para quem teve o azar de não estar presente nas muitas aulas em que isto foi exemplificado. A função de inversão de listas com acumulador,

rev [] y = y
rev (x:xs) y = rev xs (x:y)

pode ser escrita como

foldr aux id
where aux h r = \y -> r(h:y)

-- JorgeSousaPinto - 11 Dec 2004


Na verdade o tipo Tree é muito traiçoeiro pois tnato podemos ter árvores: Node 1 [Node 2[Node 3[]]] como tambem podemos ter Node 1 [Node 2 [], Node 3 []]. Qual a versão correcta?

Ambos os exemplos são expressões (diferentes) do tipo Tree Int.

-- JorgeSousaPinto - 11 Dec 2004


Um Tree é por exemplo: Node 1[Node 2[Node 3[Node 4 []]]] Como fazemos uma travessia preorder disso? Nao vejo Node k [a1, a2, a3] como foi respondido numa das pergundas desta faq

O resultado da travessia pré-order desta árvore é a lista [1,2,3,4]: o conteúdo da raíz da árvore seguido (da concatenação) das travessias das sub-árvores, tal como explicado em baixo.


Na 1 da valorização qd criamos a função stExecPN é suposto dar o resultado logo tipo o função aplicada ao prog dado como exemplo no enunciado de PN deve dar logo [15]?

Como é normal neste tipo de funções com estado, haverá uma função de topo que invoca a função monádica inicializando o estado com o valor inicial. A função de topo não calcula um valor monádico, apenas a outra o faz.

-- JorgeSousaPinto - 11 Dec 2004


É necessario fazer relatorio? não é dito nada no enunciado.Se sim, é para submeter tambem? ou é para levar apenas na apresentação?

Tal como no trabalho anterior,

"é necessário a elaboração de um relatório sucinto acerca do trabalho desenvolvido. Este relatório não deve ser submetido ao sistema de submissão dos trabalhos, mas sim entregue em papel na apresentação oral do trabalho."

-- JorgeSousaPinto - 11 Dec 2004


Na 3.3 pede para fazer com os tipos dados o que se fez na 3.1 e na 3.2 mas o ponto 3.2.3 é a mesma coisa pois o tipo de prog é o mesmo em ambos os casos. Estarei enganado?

O tipo é de facto o mesmo, mas os operadores são diferentes. Por exemplo, um operador ternário necessitará de extraír 3 argumentos da stack. Sendo assim, as funções de execução serão generalizações das funções definidas para o caso binário.

-- JorgeSousaPinto - 11 Dec 2004


Referente à valorização 1

para executar programas em PN ou em RPN como catamorfismos temos de distinguir duas associações diferentes, devido à diferente construção do pograma (PN/RPN). esta distinção é marcada pela utilização de foldr/foldl para cada caso.

Correcto. Mas: não se deve utilizar foldl mas sim foldr também para o segundo caso, um catamorfismo de ordem superior.

implementando estas funçoes com monads ST como respondido em baixo será usada a função sequence_ que faz uma dada associação das monads. esta associação funciona correctamente para um caso e como é obvio n funciona para o outro.

existe alguma função que faça o ke faz a sequence_ mas associe de forma inversa as monads?

Há que investigar! Será difícil, caso esta função não exista, escrevê-la?

-- JorgeSousaPinto - 11 Dec 2004


No ponto 3.2.3 b) é suposto fazer a função execRPNt em total point free? E o que devemos entender por um catamorfismo de ordem superior. Também penso que existe uma gralha no enunciado onde diz: "definindo execRPN :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

Em todo o trabalho devem tentar definir funções o mais point free possivel. O catamorfismo a definir é de ordem superior, pois o seu gene tem de consumir um a parâmetro extra, i.e. o acumulador ([Int]) que simula a stack. Existe realmente uma gralha em

"definindo execRPN :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

devendo ler-se

"definindo execRPNt :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

-- NunoRodrigues - 09 Dec 2004

Na valorização 1 é pedido para utilizar a monad ST para executar um programa. Será suficiente ter um monad ST cujo estado é um [Instr] e cuja unica computaçao será executar execPN ou execRPN sobre o seu estado e devolver o resultado da computação??

Não. O estado deverá ser um tipo de dados que simule uma stack (p.e. [Int]). Pretende-se que façam a conversão de uma instânica de Instr para uma instância de Monad ST, que simule correctamente a operação em causa. No final desta operação irão obter uma lista de monad ST. Ai podem aplicar sequence a essa lista e executar correctamente a monad resultante.

-- NunoRodrigues - 09 Dec 2004

No ponto 2 das valorizações é necessário mostrar o estado interno da stack, que so é criado quando se faz catamorfismo de execução. Para conseguir mostrar a stack interna é necessário monades como genes do catamorfismo??

-- TWikiGuest - 09 Dec 2004

Não. Para irem mostrando o conteúdo da stack á medida que vão executando um programa, têm de trabalhar com a monad STIO. Posto isto, devem fazer a tradução de instruções (Instr) para monades STIO, monades estas que já podem efectuar IO mostrando assim o resultado interno da stack ao longo da execução do programa.

-- NunoRodrigues - 09 Dec 2004

Como posso ligar a opcao de trace de um calculo no ghc?

Podiam dar um exemplo de uma FTree com uma operação. Não é uma FBtree só com um lado, tipo uma lista, com o operador no fim???

é isto k pedem como FBTree : ftree = (FNode 1 [FNode 3 [FNode 4 [FNode 5 [FLeaf 2]]]])

Tree : tree = (Node 1 [Node 3 [Node 2 [Node 4 [Node 5[]]]]]), é isto?

Representação da expressão envolvendo um operador ternário g e um operador binário f

g(2,3,f(10,20))

FNode g [Leaf 2, Leaf 3, FNode f [Leaf 10, Leaf 20]]

-- JorgeSousaPinto - 08 Dec 2004


Tive o mesmo problema na pergunta 3.3, nao faz muito sentido pedir um preorder e um postorder de uma RTree, ou faz ?

Sim, faz, cfr. resposta à questão seguinte. Não faria sentido, isso sim, falar de uma travessia inorder de uma destas árvores.

-- JorgeSousaPinto - 08 Dec 2004


Na questão 3.3 que pede para fazer o preorder e o postorder é para o fazer do tipo Tree.?

Podiam dar o exemplo do resultado, dada uma Tree, de fazer preorder e postorder.

Sim. Por exemplo, para a árvore Node k [a1,a2,a3] (com a1, a2, a3 do tipo Tree), o resultado será uma lista com k à cabeça, seguida, por esta ordem, dos elementos resultantes das travessias de a1, a2, e a3. Na travessia pós-ordem a diferença é que k aparece no fim da lista.

-- Main.Jorg

MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias

Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02.

-- MariaJoaoFrade - 12 Jul 2005

Os testes poderão ser consultados na Quarta-feira (13 de Julho) às 9:30 na sala DI 0.02 (junto à recepção).

-- MariaJoaoFrade - 12 Jul 2005

Os alunos que vão entregar o trabalho prático apenas a MP2, deverão faze-lo na próxima 2ªfeira, 30 de Maio, da parte da manhã. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

Quem entregar trabalhos a MP2 e a PP4, apenas tem que fazer a marcação de entrega de trabalhos a PP4 (a recepção de MP2 será feita na mesma altura).

-- MariaJoaoFrade - 24 May 2005

Disponíveis as notas práticas do ano lectivo 2004/2004.

-- JoseBacelarAlmeida - 09 Mar 2005

Métodos de Programação II 2004-2005


Sugestão de Leitura

Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista, Donald Knuth.


Equipa Docente

Horários de Atendimento

Docente Horário
JoseBarros 4ª, das 10:00 às 12:00, 5ª das 10:00 às 11:00
MariaJoaoFrade 2ª das 16:00 às 18:00; 3ª 12:00 às 13:00
JoseBacelarAlmeida 2ª das 14:00 às 19:00


Material Disponibilizado

(À medida que o semestre for avançando é actualizada a informação aqui apresentada com os diferentes temas abordados.)

Aulas Teóricas

Aulas Teórico-Práticas

  • Revisões da linguagem C - faz-se uso de estruturas de dados já conhecidas (listas, stacks, queues) para recordar os seguintes conceitos:
    • Tipos Abstractos de Dados (ADTs);
    • Diferentes implementações de um ADT;
    • Modularidade na implementação em C (header files, compilação separada);
    • Ficha prática: Revisoes.pdf.

  • Slides das aulas teórico-práticas (2003).

  • Grafos: algoritmo "Shortest Path" (ficheiros em C, incompletos).
  • Grafos: algoritmos "Shortest Path" e "Minimum Spanning Tree" (ficheiros em C, completos).
  • Grafos: Slides sobre "PERT charts" e "Critical Path Method" (ficheiros em C, incompletos).

Trabalhos Práticos

FAQ da Disciplina

Disponível aqui.
(faça login como TWikiGuest e coloque as suas questões)

Outro material

Testes deste ano lectivo

Testes de anos anteriores:


Notas e Avaliação

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 60% (nota mínima de 8 valores)
    • Componente Prática (Trabalhos Práticos): (nota mínima de 10 valores)
      • 1 trabalho prático (a ser apresentado na última semana de aulas) (30%)
      • TPCs das aulas teórico práticas (facultativo) (10%)

Pré-Requisitos

Não havendo pré-requisitos formais, assume-se que os alunos possuem o seguinte conjunto de conhecimentos:

  • familiaridade com a linguagem C
  • familiaridade com a utilização de ferramentas de desenvolvimento para a linguagem C, nomeadamente de compiladores.
  • conhecimento das estruturas de dados estudadas na cadeira de PP2: listas, stacks, queues, árvores binárias, etc.
  • conhecimento dos algoritmos de ordenao estudados na disciplina de MP1: insert sort, merge sort, quick sort, etc.

Aconselham-se todos os alunos a resolver a ficha de revisões proposta.

Notas Práticas (2004/2005)

Estas notas englobam o trabalho prático e a informação das aulas Teórico-Práticas.

Notas época normal (2004/2005)

Notas época recurso (2004/2005)

Notas época especial (2004/2005)

Notas Práticas do ano lectivo 2003/2004


Programas e Bibliografia

Programa Resumido

  • Introdução à análise de algoritmos:
    • análise de tempo de execução
    • análise de correcção
    • limites assimptóticos de complexidade
    • notações O, Teta e Omega
    • classes de complexidade
    • relações de recorrência
    • estratégias algorítmicas fundamentais:
      • força bruta
      • algoritmos gananciosos
      • divisão e conquista
      • ...
    • algoritmos de ordenação
    • ordenação em tempo linear.
  • Algoritmos clássicos sobre grafos.
  • Definição das classes de problemas P e NP
    • Exemplos de problemas NP-completos
  • Estruturas de dados fundamentais:
    • questões de eficiência na pesquisa
    • árvores AVL
    • tabelas de hash
    • realização na linguagem C
    • Realização de grafos em C

Bibliografia

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. MIT Press, Cambridge,Mass., second edition, 2001.

Robert L. Kruse, Bruce P. Leung, and Clovis L. Tondo. Data Structures and Program Design in C. Prentice Hall, second edition, 1997.

Donald E. Knuth. The Art of Computer Programming : (1) Fundamental Algorithms, (2) Seminumerical Algorithms, (3) Sorting and Searching. Addison/Wesley, third edition, 1997/98. 3 volumes.

MetodosProgramacaoIIFAQ 11 Jul 2005 - 14:59 - r113 TWikiGuest

FAQ de Métodos de Programação II


Índice:


Nas pautas que saíram relativamente ao ano 2004/05, alguns alunos têm como nota '*'. Em termos práticos, a que se resume esta nota?... Que nota mínima no exame escrito precisam os alunos em questão para obter aprovação à disciplina?


ALERT! Visto q o exame é na proxima semana, e existe nota prática obrigatoria, para quando a pauta da avaliação prática?

Durante os exames os horarios de atendimento dos docentes vai ser o mesmo?


Para quem congela a nota do trabalho do ano anterior, os 10% dos trabalhos das TP podem ser contabilizados?

-- TWikiGuest - 19 Mar 2005


Quem pode contribuir para esta FAQ?

Qualquer aluno inscrito na disciplina de Métodos de Programação II. Se quiser contribuir e não estiver registado use o login TWikiGuest com password guest.

-- JoseBacelarAlmeida - 19 Feb 2005


Gostaria de saber se os alunos que já efectuaram os trabalhos práticos da disciplina em anos anteriores necessitam de o fazer novamente este ano. Caso não seja necessário quais os procedimentos a seguir?

-- AlexandreCarvalho? - 28 Feb 2005

Os alunos que realizaram a componente prática da disciplina no ano passado (2003/2004) podem optar por congelar a nota prática. Para isso deverão enviar um email ao docente responsável pela disciplina ou ao docente das aulas teórico-práticas.

-- JoseBacelarAlmeida - 02 Mar 2005


Já agora, para quem é trabalhador, a nota prática é congelada por dois anos?

Não.

E já agora, quem é trabalhador não precisa de congelar a nota; nem sequer por um ano.

-- JoseBarros - 16 Mar 2005

Para "defesa" do colega que escreveu isto, deixe-me dizer-lhe que para bom entendedor meia palavra basta. Trabalhador já é uma e (neste caso) = trabalhador estudante. Às vezes nem sequer são precisas palavras para compreender certas situações. Mas para isso é preciso ser-se ainda mais inteligente. Enfim, é pena que o sr.JBB tenha sempre de mandar o seu (infeliz) comentario para o ar.

Qualquer trabalhador estudante tem direito a um regime especial de frequência de todas as disciplinas de uma licenciatura! Se este regime especial não permite o congelamento de uma nota prática durante 2 anos então qual é a diferença em relação a um regime normal?? Há professores que permitem o congelamento durante 2 anos, mas pelos vistos outros têm a mania que pode fazer tudo o que lhe apetece!

--

Mais uma vez os docentes de lesi pretendem ser diferentes... não é negando direitos aos alunos que contribuimos para que o curso seja cada vez melhor, devemos apoiar aqueles que já se encontram a trabalhar pois são eles que dão visibilidade e prestigio ao nosso curso permitindo abrir novas portas para os recem licenciados. Mas parece que alguns docentes não partilham desta opinião... não se preocupem, não estamos atrás dos vossos empregos, existe mercado para todos...

--

O trabalho não vai ser em conjunto com PPIV?? Na página de PPIV tinha isto relativamente ao congelamento de nota: CONGELAMENTO DE NOTAS PRATICAS - PPIV 2004/2005 Todos os alunos que pretendam congelar as suas notas praticas obtidas EM ANOS ANTERIORES, devem enviar um email para o endereço congelamentos_PPIV_0405@di.uminho.pt com SUBJECT: Congelamento de Nota e contendo apenas a sua identificação, ou seja, NUMERO, NOME e CURSO. A data limite para tal indicação será o dia 31 de Maio de 2005. -- M.Ferreira - 16 Mar 2005

--

Uma vez que que este assunto parece interessar alguns dos alunos, vou tentar repetir aqui o argumento apresentado na primeira aula sobre o congelamento das notas práticas.

É da minha opinião que a componente prática da disciplina não se trata de mais um obstáculo à aprovação mas antes uma ajuda na consolidação dos conhecimentos e competências que se pretende que os alunos adquiram ao frequentar (com sucesso) esta disciplina.

Daí que as notas das várias componentes não devam ser consideradas em separado mas como parte de um todo.

A situação excepcional consagrada no RIAPA dos trabalhadores estudantes efectuarem uma disciplina com duas componentes em dois anos consecutivos pode ser justificado pela falta de recursos (neste caso, disponibilidade destes alunos) para poderem frequentar a disciplina tal como ela foi desenhada.

No caso da disciplina de Métodos de Programação II, nesta edição de 2004/2005 e face à inexistência de recursos docentes suficientes, resolvi alargar a excepcionalidade desta situação aos outros alunos. Esta decisão tem custos associados. Estou convencido de estar a contribuir para que alguns alunos tomem a decisão (errada no meu ponto de vista) de congelar a nota prática do ano anterior, dificultando-lhes por isso mesmo a tarefa de atingirem os objectivos desta disciplina.

Quanto à discrepância entre os critérios usados em MP2 e PP4, apesar de o trabalho prático ser comum, esta partilha tem como objectivos: (1) pela parte dos alunos que vão apresentar os trabalhos de PP4 e de MP2, concentrarem-se apenas num enunciado, (2) pela parte das equipas docentes das duas disciplinas, poupar os poucos recursos que temos para as recepções dos trabalhos. Pelo que, para os alunos inscritos apenas numa das disciplinas ou que não pretendam realizar a parte prática de alguma delas, esta partilha é irrelevante.

Finalmente, a minha participação nesta discussão, apesar da falta de educação de algumas intervenções acima, deve-se à convicção que tenho que se tratam de excepções que não devem privar a maioria dos alunos da utilidade desta FAQ.

-- JoseBarros - 17 Mar 2005


Será possível colocarem as notas práticas do ano passado online?

Já estão na página. Em breve também estará a lista dos alunso que pediram para congelar a nota.

-- JoseBarros - 16Mar2005


Quantos trabalhos práticos vão existir este ano, para quando (+/-)? E relativamente ás apresentações para quando estão programadas?

-- AlexandreCalisto? - 16 Mar 2005

Vai existir apenas 1. Para ser entregue no final do ano. Com apresentação conjunta com o trabalho de PP4. Adicionalmente, serão pedidos pequenos trabalhos (facultativos) para serem entregues nas aulas TPráticas. O peso desta componente facultativa é de 10% da nota final.

-- JoseBarros - 16-Marco-2005


Sendo esta componente facultativa (mas que vale 10%), porquê prejudicar quem não pode assistir às aulas práticas e fazer os respectivos trabalhos - por exemplo alunos com sobreposição de horários ou trabalhadores estudante? Porque não considerar 40% o valor do trabalho prático nestes casos?

-- TWikiGuest - 26 Mar 2005


A professora das teórico-práticas disse que irá haver um trabalho para o qual teremos 3 semanas para fazer, que será para entregar nas tp e no qual terá-se de aplicar tudo o que se aprendeu nessas aulas. Gostaria de saber se haverá mais alguma informação disponibilizada na página da cadeira sobre esse trabalho e se sim, quando mais ou menos é que estará disponível.

-- TWikiGuest - 05 Apr 2005

Esse trabalho que foi proposto era um trabalho facultativo, daqueles que contam 10% para a nota. Também gostaria de obter mais informação sobre ele.

-- TWikiGuest - 06 Apr 2005


Quanto ao Trabalho Prático, como vêm expressas as horas de partida? 4 digitos seguidos (por exemplo, 1659) ? separados por 2 pontos (16:59) ?

-- AlexandreCarvalho?

Qualquer uma das alternativas. Isto é, fica ao vosso critério. -- JoseBarros - 06 May 2005

As durações dos voos serão expressas em minutos ou horas:minutos?

-- AlexandreCarvalho?

Idem. -- JoseBarros - 06 May 2005

No ponto 3, quando assume que a ordem da lista estabelece a prioridade das cargas o que é que devemos inferir disto? que as capacidades de peso e volume dos voos vão-se alterando consoante a alocação das cargas?

-- AlexandreCarvalho?

Não. O que quer dizer é que se eu tiver a alternativa de colocar uma de duas cargas, coloco aquela que aparece em primeiro lugar na lista. -- JoseBarros - 06 May 2005

Os dois ficheiros de texto que serão usados nos testes vão ser disponibilizados pelo professor?

... ou seremos nós a criar um exemplo? Digo isto porque o volume de dados que o meu ficheiro tem neste momento é pequeno para testar o desempenho da aplicação. Já agora uma dúvida simples para o meu caso de testes: podemos ter voos com a mesma origem e mesmo destino, nas mesmas horas, com designações diferentes? Por exemplo TP1201 e TP1202 ??

-- Alvaro Silva - 06 May 2005

No ponto 3, a lista de cargas dada, como sabemos qual é a origem da carga?

Suponho que a origem será comum para todas as cargas. Eu não sei como os professores pretendem, por aqui a origem está a ser especificada na linha de comandos. Exemplo: ./mp2 -origem=Lisboa ... -- AlexandreCarvalho? - 16 May 2005

Quando não é dito nada, e como se trata de uma extensão do trabalho de PP4, estamos a falar de uma mesma origem -- aquela cuja gestão é proposta em PP4. Mas a sugestão de isso ser feito da linha de comando também me parece reazoável. -- JoseBarros - 25 May 2005

Um Voo pode comportar mais que uma carga, isto é, se o avião tiver espaço pode levar 1+ cargas? ou apenas uma unica?

Pode e deve levar as cargas que lá couberem. -- JoseBarros - 25 May 2005

Será que podiam disponibilizar o exame da primeira chamada?

Quando é que irão sair as notas do exame?

-- TWikiGuest - 11 Jul 2005
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas

T (2006.02.21): Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento dos autómatos determinísticos.

-- LuisSoaresBarbosa - 21 Feb 2006

Métodos de Programação IV

(Modelação e Cálculo de Sistemas Reactivos)

2005-2006


Responsável pela Disciplina

Aula Extra

Em substituição das aulas da semana 22-26, será realizada uma sessão de dúvidas/exercícios no dia 13 de Junho (terça-feira) às 14.30. Ponto de encontro na sala de atendimento do DI.

Questões a Abordar

  • Como se caracteriza o paradigma de computação reactivo e qual o interesse do seu estudo?
  • Como modelar sistemas reactivos e estudar a sua composicionalidade?
  • Em que condições dois sistemas reactivos podem ser considerados equivalentes ou similares?
  • Como captar as noções de mobilidade e reconfiguração dinâmica de sistemas reactivos?
  • Como analisar e prototipar modelos de sistemas reactivos?
  • Qual a relevância deste paradigma e cálculos associados para a Engenharia do Software?

Programa Resumido

  • Interação e Comportamento

a. Introdução aos sistemas reactivos. Noção de interacção e comportamento.
b. Caso 1: sequências infinitas (de acções) como tipo dos comportamento de autómatos determinísticos.
c. Noção de tipo coindutivo. Definição e prova por coindução. Cálculo de estruturas coindutivas. Comparação com os tipos indutivos.
d. Cálculo de sequências infinitas. Codificação em Haskell.
e. Caso 2: comportamento de autómatos não determinísticos e sistemas de transição de estados.
f. Definição de morfismo, simulação e bissimulação. Propriedades da bissimulação
g. Caso 3: dos autómatos aos processos.

  • Sistemas Reactivos
a. Estado, interação e concorrência. Noção de processo, traço e comportamento.
b. Operadores sobre processos. O cálculo CCS: sintaxe e semântica operacional.
c. Equivalência estrita, equivalência observacional e igualdade de processos. Leis.
d. Concorrência e não determinismo: o teorema da expansão.
e. Discussão de exemplos. Modelação e análise de problemas no CWB
f. Prototipagem funcional de sistemas reactivos

* Sistemas Reactivos com Mobilidade

a. Noção de mobilidade e reconfiguração dinâmica de processos. Exemplos e aplicações.
b. Introdução ao cálculo Pi: sintaxe, semântica.
c. Equivalências para processos móveis. Leis.
f. Discussão de exemplos. Modelação e análise de problemas no MWB

Roteiro das Lições

Sessões Laboratoriais

Bibliografia

  • Communicating and Mobile Processes: the Pi-Calculus, Robin Milner, Cambridge University Press, 1999. Trata-se do livro base para a disciplina. A primeira parte introduz o cálculo base de sistemas reactivos, popularizado sob a designação de Ccs, enquanto a segunda parte aborda o problema da mobilidade e reconfiguração dinâmica de sistemas, constituindo a referência base para o Pi-calculus.

  • Communication and Concurrency. Robin Milner,Prentice Hall (Hoare Series in Computer Science), 1989. Obra anterior do mesmo autor, é suficiente como introdução a Ccs, mas omissa no que concerne à mobilidade. Se consultar a primeira edição deste livro (1989), tenha à mão a seguinte errata (ps.gz)

  • The Pi-calculus: A theory of mobile processes, Sangiorgi, D. and Walker, D., Cambridge University Press, 2001.

  • An Introduction to the _Pi-calculus. J. Parrow, draft (ps.gz) de capítulo análogo no Handbook of Process Algebra, Elsevier, 2001.

  • O Concurrency Workbench será uma das ferramentas de suporte à disciplina. Neste site pode obter executáveis para Linux e Windows. Ao utilizar o CWB-NC, poderá ainda fazer uso do ccs2dot (tar.gz) paravisualização dos grafos de transição sobre GraphViz por alunos desta disciplina (João Ferreira, Alexandra Mendes e José Proença) em 2002-03.

  • Supõe-se familiaridade com a linguagem Haskell e com o cálculo de programas funcionais estudado em Métodos de Programação 1. A primeira parte do livro Algebra of Programming (R. Bird e O. de Moor, Prentice-Hall, 1997) é uma excelente introdução a esse cálculo.

Critérios de Avaliação

  • Componente Teórica (Exame): 70% (nota mínima de 8 valores)
  • Componente Prática: 30%
  • A componente prática da nota resulta da avaliação do desempenho nas aulas TP e da realização de uma Ficha de Trabalho, de resolução individual e fora do tempo lectivo, de acordo com o calendário seguinte:

Proposta Entrega Enunciado Informação Complementar
22 Abril 2006 29 Maio 2006 (pdf) (pdf)

Resultados da Avaliação (26 Julho 2006)

Classificações dos Exames, Prática e Nota Final (Época Normal) (pdf)

Classificações dos Exames, Prática e Nota Final (Época Recurso) (pdf)


-- LuisSoaresBarbosa - 26 Jul 2006

OlgaPacheco 16 Dec 2004 - 16:32 - NEW OlgaPacheco
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção).

-- MariaJoaoFrade - 08 Mar 2006

Os exames estarão disponíveis para consulta, 4ªfeira (8 Fev.) entre as 14h30 e as 15h30, no anfitiatro DI A1.

-- MariaJoaoFrade - 07 Feb 2006

Já sairam as notas dos exames da Época Normal.

-- MariaJoaoFrade - 06 Feb 2006

AVISO DE PROVAS ORAIS (para melhoria de nota)

Os exames orais para melhoria de nota serão realizados no dia 8 de Fevereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

-- MariaJoaoFrade - 03 Feb 2006

Está aqui (zip) a resolução da ficha 9 (aula prática).

-- MariaJoaoFrade - 05 Dec 2005

Já está disponível o enunciado do 2º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

-- MariaJoaoFrade - 17 Nov 2005

Já está disponível o enunciado do projecto prático para melhoria de nota. Ver secção Melhorias de Nota.

-- MariaJoaoFrade - 25 Oct 2005

Já está disponível o enunciado do 1º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na quarta-feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

-- MariaJoaoFrade - 18 Oct 2005

4ªfeira (dia 28) às 10h00 aula de apresentação no CP1 A3.

-- MariaJoaoFrade - 23 Sep 2005

As aulas práticas começam no dia 3 de Outubro.

-- MariaJoaoFrade - 20 Sep 2005

PP1News 01 Mar 2005 - 18:30 - r12 MariaJoaoFrade
AVISO PROVAS ORAIS

As provas orais irão realizar-se na 6ªfeira dia 4 de Março, às 10:00. Ponto de encontro: junto à secretaria do DI (piso 2).

AVISO TURNOS 6 e 7 (MBB)

Alteração nas datas de entrega para os turnos 6 e 7. Ficheiro actualizado: Datas das entregas para os alunos dos Turnos 2,3,6 e 7 (MBB)

-- ManuelBernardoBarbosa - 3 Jan 2004

Informações sobre entrega dos trabalhos

A entrega de trabalhos para os alunos dos Turnos 4 e 5 (OMP) será nos dias 3,4 e 5 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- OlgaPacheco - 16 Dec 2004

A entrega de trabalhos para os alunos repetentes que pretendem subir a nota prática, será no dia 3 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- MariaJoaoFrade - 13 Dec 2004

Está já disponível o enunciado dos trabalhos práticos para os alunos inscritos para melhoria de nota.

-- ManuelBernardoBarbosa - 4 Nov 2004

As inscrições nos turnos práticos para os alunos repetentes, serão 3a feira (dia 28 Set) às 11:00 na recepção do DI (piso 0). A inscrição é individual e por ordem de chegada.

-- MariaJoaoFrade - 23 Sep 2004

ParadigmasProgramacaoI0405 12 Feb 2007 - 19:15 - r57 JoseBacelarAlmeida
Notícias

AVISO PROVAS ORAIS

As provas orais irão realizar-se na 6ªfeira dia 4 de Março, às 10:00. Ponto de encontro: junto à secretaria do DI (piso 2).

AVISO TURNOS 6 e 7 (MBB)

Alteração nas datas de entrega para os turnos 6 e 7. Ficheiro actualizado: Datas das entregas para os alunos dos Turnos 2,3,6 e 7 (MBB)

-- ManuelBernardoBarbosa - 3 Jan 2004

Informações sobre entrega dos trabalhos

A entrega de trabalhos para os alunos dos Turnos 4 e 5 (OMP) será nos dias 3,4 e 5 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- OlgaPacheco - 16 Dec 2004

A entrega de trabalhos para os alunos repetentes que pretendem subir a nota prática, será no dia 3 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- MariaJoaoFrade - 13 Dec 2004

Está já disponível o enunciado dos trabalhos práticos para os alunos inscritos para melhoria de nota.

-- ManuelBernardoBarbosa - 4 Nov 2004

As inscrições nos turnos práticos para os alunos repetentes, serão 3a feira (dia 28 Set) às 11:00 na recepção do DI (piso 0). A inscrição é individual e por ordem de chegada.

-- MariaJoaoFrade - 23 Sep 2004

Paradigma da Programação I

_Licenciatura em Engenharia de Sistemas e Informática_
1º Ano - 1º Semestre (5301P3)
Ano lectivo 2004/2005 (Anos anteriores)


Notas

Programa

Na actual estrutura da Licenciatura em Engenharia de Sistemas e Informática, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Programa detalhado

Bibliografia

  • Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo Barros. Universidade Aberta, 1999.

  • Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.

  • Haskell: the craft of functional programming. Simon Thompson. Addison-Wesley.

  • Introduction to Functional Programming. Richard Bird and Philip Wadler. Prentice-Hall, 1988.

Critérios de Avaliação

A avaliação tem uma componente teórica e uma componente prática, ambas obrigatórias. A nota final será calculada com base na seguinte fórmula:

Nota Final = NT * 0.6 + NP * 0.4

sendo

  • NT a nota teórica (nota mínima de 9 valores), obtida através da realização de uma prova individual escrita;

  • NP a nota prática (nota mínima de 10 valores), resultante da avaliação obtida ao longo das aulas laboratoriais e que terá por base a realização de trabalhos práticos.

Regime de Avaliação Prática

Alunos inscritos para melhoria de nota A avaliação prática será efectuada através de um trabalho prático a entregar no final do semestre em data a agendar. O enunciado correspondente está disponível aqui (Enunciado para alunos inscritos para melhoria).

Novos alunos e alunos repetentes sem nota prática. A inscrição nos turnos laboratoriais é obrigatória (e será feito controlo de presenças nas aulas). A nota prática resulta da avaliação obtida ao longo das aulas laboratoriais (avaliação contínua) e terá por base a realização de 3 fichas de trabalho e 2 trabalhos práticos.

Estudantes trabalhadores. A inscrição destes alunos nos turnos laboratoriais é opcional. Caso o aluno opte por não se inscrever nas aulas laboratoriais, a nota prática será obtida através da realização de um trabalho prático global (e as aulas laboratorias poderão ser frequentadas em regime livre).

Alunos repetentes com nota prática positiva. Os alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente. Para os alunos nestas condições que optem por não congelar a nota prática, a (nova) nota prática será obtida através da realização de um trabalho prático global. As aulas laboratorias poderão ser frequentadas em regime livre.

O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2003-2004 (LESI). A decisão de congelar a nota deverá ser comunicada por e-mail a ManuelBernardoBarbosa.

Metodologia de Inscrições e Formação de Grupos de Trabalho

  • Cada turno prático terá no máximo 36 alunos inscritos (em regime de avaliação contínua), havendo ainda 3 máquinas (9 lugares) que poderão ser usados (em regime livre) pelos alunos sem inscrição obrigatória nos turnos.

  • As inscrições dos alunos nos turnos são individuais.
  • Dentro de cada turno serão formados grupos de 3 alunos.
  • O trabalho na aula é feito em grupo (fora da aula é como quizerem).
  • A nota prática é individual.

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP1.A4 mjf
Teórica 5ªfeira 8:00-9:00 CP1.A5 mjf
Turnos Horário Sala Docente
TP1 3ªfeira 11:00-13:00 DI 0.11 omp
TP2 3ªfeira 14:00-16:00 DI 0.11 mbb
TP3 3ªfeira 16:00-18:00 DI 0.11 mbb
TP4 4ªfeira 11:00-13:00 DI 0.11 omp
TP5 6ªfeira 09:00-11:00 DI 0.11 jbb
TP6 6ªfeira 14:00-16:00 DI 0.11 mbb
TP7 6ªfeira 16:00-18:00 DI 0.11 mbb

Horário de Atendimento

Docente Horário
mjf 2as. 12-13 e 14-18
mbb 2as. 11-13 e 18-20, 3as. 18-20
omp 6as. 12-16
jbb  

Material Disponibilizado

Aulas Teóricas

Sumários

Aulas Práticas

  • Ficha de trabalho número 1: Ficha1
  • Ficha de trabalho número 2: Ficha2
  • Ficha de trabalho número 3: Ficha3
  • Ficha de trabalho número 4: Ficha4
  • Ficha de trabalho número 5: Ficha5

Links Úteis

Exames

ProgramacaoFuncional 23 Feb 2007 - 17:59 - r48 MariaJoaoFrade
Notícias

Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção).

-- MariaJoaoFrade - 08 Mar 2006

Os exames estarão disponíveis para consulta, 4ªfeira (8 Fev.) entre as 14h30 e as 15h30, no anfitiatro DI A1.

-- MariaJoaoFrade - 07 Feb 2006

Já sairam as notas dos exames da Época Normal.

-- MariaJoaoFrade - 06 Feb 2006

AVISO DE PROVAS ORAIS (para melhoria de nota)

Os exames orais para melhoria de nota serão realizados no dia 8 de Fevereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

-- MariaJoaoFrade - 03 Feb 2006

Está aqui (zip) a resolução da ficha 9 (aula prática).

-- MariaJoaoFrade - 05 Dec 2005

Já está disponível o enunciado do 2º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

-- MariaJoaoFrade - 17 Nov 2005

Já está disponível o enunciado do projecto prático para melhoria de nota. Ver secção Melhorias de Nota.

-- MariaJoaoFrade - 25 Oct 2005

Já está disponível o enunciado do 1º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na quarta-feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

-- MariaJoaoFrade - 18 Oct 2005

4ªfeira (dia 28) às 10h00 aula de apresentação no CP1 A3.

-- MariaJoaoFrade - 23 Sep 2005

As aulas práticas começam no dia 3 de Outubro.

-- MariaJoaoFrade - 20 Sep 2005

Programação Funcional

Licenciatura em Matemática e Ciências de Computação
1º Ano - 1º Semestre (7001N7)
Ano lectivo 2005/2006 (Ano anterior)


Programa

Na actual estrutura da Licenciatura em Matemática e Ciências de Computação, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Programa detalhado

Bibliografia

Critérios de Avaliação

A avaliação desta disciplina tem duas componentes obrigatórias.

  • A componente teórica tem um peso de 60% e consiste na realização de uma prova individual escrita (exame)

  • A componente prática, com um peso de 40%, consiste na realização de dois trabalhos e na avaliação do desempenho nas aulas laboratoriais.

  • A nota mínima em cada uma das componentes é de 9,5 valores.

Os trabalhos práticos são resolvidos em grupos de 3 alunos (todos do mesmo turno prático).

Os alunos com aprovação na componente prática no ano anterior, podem pedir para essa nota ser congelada. O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2004-2005 (LMCC).

A decisão de congelar a nota deverá ser comunicada por e-mail a Maria João Frade, até ao dia 31 de Outubro de 2005.

Melhorias de Nota

Os alunos que pretendam melhorar a nota a esta disciplina terão de se inscrever nos SAUM para o efeito e realizar um trabalho cujo enunciado está disponível AQUI (ou aqui: enunciado e ficheiros de exemplo). Este trabalho é individual.

A avaliação destes alunos será feita através de um exame oral, onde será apresentado o trabalho e onde serão colocadas questões sobre a generalidade da matéria. Estes exames orais decorrerão na data prevista para os restantes exames orais da disciplina, i.e., depois das duas chamadas da época normal (data a anunciar nesta página). Até 3 dias antes da oral deverá ser entrege um relatório do trabalho com a listagem do código do programa em anexo, e deverá também ser enviado por mail o .zip do trabalho.

AVISO: Estes exames orais serão realizados no dia 8 de FEvereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP2.104 mjf
Teórica 4ªfeira 10:00-11:00 CP2.104 mjf
Turnos Horário Sala Docente
TP1 3ªfeira 8:00-9:00 CP3.204 jbb
TP2 3ªfeira 14:00-16:00 CP3.202 jcr
TP3 2ªfeira 12:00-13:00 DI 0.11 mjf
P1 2ªfeira 10:00-12:00 DI 0.11 mjf
P2 3ªfeira 9:00-11:00 DI 0.11 jcr
P3 5ªfeira 11:00-13:00 DI 0.11 omp
P4 6ªfeira 11:00-13:00 DI 0.11 omp

Horário de Atendimento

Docente Horário
mjf 4ªf 14:00-16:00
jcr ...
omp 2ªf, 3ªf e 4ªf 12:00-13:00
jbb 2ªf 9:00-12:00

Material Disponibilizado

Aulas Teóricas

  • Haskell: slides 1-52 (pdf)
  • Haskell: slides 53-64 (pdf)
  • Haskell: slides 65-80 (pdf)
  • Haskell: slides 81-96 (pdf)
  • Haskell: slides 97-132 (pdf)
  • Haskell: slides 133-168 (pdf)
  • Haskell: slides 169-184 (pdf)

Aulas Práticas

Guiões:

  • Aula 1 (semana de 3 a 7 de Outubro)
  • Aula 2 (semana de 10 a 14 de Outubro)
  • Aula 3 (semana de 17 a 21 de Outubro)
  • Aula 4 (semana de 24 a 28 de Outubro)
  • Aula 5 (semana de 7 a 11 de Novembro)
  • Aula 6 (semana de 14 a 18 de Novembro)
  • Aula 7 (semana de 21 a 25 de Novembro)
  • Aula 8 (semana de 28 de Novembro a 2 de Dezembro)
  • Aula 9 (semana de 5 a 9 de Dezembro) - Ficheiros (zip)

Trabalhos Práticos:

  • Enunciado do 1º trabalho prático.
    • Os grupos terão obrigatoriamente 3 elementos.
    • As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na 4ª feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

  • Enunciado do 2º trabalho prático.
    • Os grupos terão obrigatoriamente 3 elementos.
    • As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

Notas

Exames

Links Úteis

ProgramacaoFuncional0405 12 Feb 2007 - 19:15 - r41 JoseBacelarAlmeida

Programação Funcional

_Licenciatura em Matemática e Ciências de Computação_
1º Ano - 1º Semestre
Ano lectivo 2004/2005


Notas

Programa

Na actual estrutura da Licenciatura em Matemática e Ciências de Computação, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Bibliografia

Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo Barros. Universidade Aberta, 1999.

Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.

Haskell: the craft of functional programming. Simon Thompson. Addison-Wesley.

Introduction to Functional Programming. Richard Bird and Philip Wadler. Prentice-Hall, 1988.

A Gentle Introduction to Haskell. Paul Hudak, John Peterson and Joseph Fasel.

Critérios de Avaliação

A avaliação tem uma componente teórica e uma componente prática, ambas obrigatórias. A nota final será calculada com base na seguinte fórmula:

Nota Final = NT * 0.6 + NP * 0.4

sendo

  • NT a nota teórica (nota mínima de 9 valores), obtida através da realização de uma prova individual escrita;

  • NP a nota prática (nota mínima de 10 valores), resultante da avaliação obtida ao longo das aulas laboratoriais e que terá por base a realização de trabalhos práticos.

Regime de Avaliação Prática

Alunos inscritos para melhoria de nota A avaliação prática será efectuada através de um trabalho prático a entregar no final do semestre em data a agendar. O enunciado correspondente está disponível aqui (Enunciado para alunos inscritos para melhoria).

Novos alunos e alunos repetentes sem nota prática. A inscrição nos turnos laboratoriais é obrigatória (e será feito controlo de presenças nas aulas). A nota prática resulta da avaliação obtida ao longo das aulas laboratoriais (avaliação contínua) e terá por base a realização de 3 fichas de trabalho e 2 trabalhos práticos.

Estudantes trabalhadores. A inscrição destes alunos nos turnos laboratoriais é opcional. Caso o aluno opte por não se inscrever nas aulas laboratoriais, a nota prática será obtida através da realização de um trabalho prático global (e as aulas laboratorias poderão ser frequentadas em regime livre).

Alunos repetentes com nota prática positiva. Os alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente (deverão avisar os docentes). Para os alunos nestas condições que optem por não congelar a nota prática, a (nova) nota prática será obtida através da realização de um trabalho prático global. As aulas laboratorias poderão ser frequentadas em regime livre.

O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2003-2004 (LMCC). A decisão de congelar a nota deverá ser comunicada por e-mail a ManuelBernardoBarbosa.

Metodologia de Inscrições e Formação de Grupos de Trabalho

  • Cada turno prático terá no máximo 36 alunos inscritos (em regime de avaliação contínua), havendo ainda 3 máquinas (9 lugares) que poderão ser usados (em regime livre) pelos alunos sem inscrição obrigatória nos turnos.

  • As inscrições dos alunos nos turnos são individuais.
  • Dentro de cada turno serão formados grupos de 3 alunos.
  • O trabalho na aula é feito em grupo (fora da aula é como quizerem).
  • A nota prática é individual.

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP2.104 jmv
Teórica 4ªfeira 10:00-11:00 CP2.111 jmv
Turnos TP Horário Sala Docente
TP1 2ªfeira 17:00-18:00 CP3.402 jsp
TP2 3ªfeira 8:00-9:00 CP3.202 jsp
TP3 3ªfeira 12:00-13:00 CP1.215 jsp
Turnos P Horário Sala Docente
P1 2ªfeira 11:00-13:00 DI 0.11 mjf
P2 2ªfeira 18:00-20:00 DI 0.11 mjf
P3 3ªfeira 9:00-11:00 DI 0.11  
P4 5ªfeira 11:00-13:00 DI 0.11 omp
P5 6ªfeira 11:00-13:00 DI 0.11 mbb

Horário de Atendimento

Docente Horário
jmv 2as. 15-18, 3as. 15-18
jsp 2as. 14-17, 3as. 9-12
omp  
mjf 2as. 12-13 e 14-18
mbb 2as. 11-13 e 18-20, 3as. 18-20

Material Disponibilizado

Aulas Teóricas

Aulas Teórico-Práticas

Aulas Práticas

  • Ficha de trabalho número 1: Ficha1
  • Ficha de trabalho número 2: Ficha2
  • Ficha de trabalho número 3: Ficha3
  • Ficha de trabalho número 4: Ficha4
  • Ficha de trabalho número 5: Ficha5

Links Úteis

Exames

RTp1 07 Apr 2005 - 11:08 - NEW OlgaPacheco
++Resultados do Trabalho Prático nº 1

Grupo Trabalho nº1
G1 Sistema de Informação do Centro de Saúde de Amares
G2 Sistema de Informação da Câmara Municipal de Braga
G3 Sistema de Informação da Ponte da Barca
G4 Os Tribunais e os seus Sistemas de Informação
G5 Sistema de Informação da AGERE
G6 Sistema de Informação da Direcção Distrital de Finanças de Braga
G7 Sistema de Informação da Associação Académica da Universidade do Minho
G8 Sistemas de Informação do Ministério das Finanças
G9 Sistema de Informação da Repartição de Finanças do Concelho de Barcelos
G10 Sistema de Informação da Direcção Regional de Agricultura de Entre Douro e Minho
SpreadsheetUnderScrutinyAFPProject 04 Mar 2005 - 11:43 - r3 CupertinoMiranda

SpreadSheet under Scrutiny

Student: Cupertino Miranda

In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming environments for non-programmers. Their language of cell references and formulas offers only low-level expressiveness compared to regular programming languages. Still, huge numbers of large and often complex spreadsheets are created and maintained every day in all companies around the world. You will apply program understanding techniques to uncover the secrets of spreadsheets, and their potential flaws.
The UMinho Haskell Libraries already provide support for:

  • a. reading and parsing spreadsheets
  • b. analyzing the data flow in a spreadsheet
  • c. program understanding algorithms, such as slicing,formal concept analysis, and type reconstruction.

You will combine and extend this functionality into a tool that provides insight into spreadsheets beyond Excel's capabilities.

Presentations

Presentation from Cupertino Miranda about following papers:

  1. Header and Unit Inference for Spreadsheets Through Spatial Analyses, Robin Abraham and Martin Erwig. 2004
  2. A User-Centred Approach to Functions in Excel, Simon Peyton-Jones, Alan Blackwell and Margaret Burnett, 2003
  3. Slicing Spreadsheets: An Integrated Methodology for Spreadsheet Testing and Debugging, James Reichwein, Gregg Rothermel, Margaret Burnett, 1999

Final Presentation about Cupertino Miranda AFP Project:

-- CupertinoMiranda - 15 Dec 2004

SpreadsheetUnderScrutinyAFPProjectReport

SpreadsheetUnderScrutinyAFPProjectReport 05 Mar 2005 - 16:45 - r5 CupertinoMiranda
Spreadsheet Under Scrutiny - Project Report

Under construction

Introduction

Spreadsheet tools can be viewed as programming environments for non-programmers. Their language of cell references and formulas offers only low-level expressiveness compared to regular programming languages. Still, huge numbers of large and often complex spreadsheets are created and maintained every day in all companies around the world.

In this project i have developed a few tools and respective API for Spreadsheet Analysis.

Project Objectives

  • Completely read and create a data structure to Spreadsheet understanding.
  • Add more capabilities to Data-flow graph
  • Add slicing and chopping analysis
  • Implement a type inference system using the already implemented algorithm.

Data Structure

Basic Notions

At the beginning of the project there already exist a Schema for the Gnumeric XML file, and a little of this was already been converted to DTD. With this DTD file was already being generated (by DTDtoHaskell) a Haskell Structure for representation of the Gnumeric content. In this structure the cell content was represented as a String, and for that reason it was converted to a type Formula.

data Formula
  = Var String                      -- ^ Variables
  | Fun String [Formula]            -- ^ Function applications
  | Ref CellRef (Maybe CellRef)     -- ^ Cell or cell block reference

This modification to the data structure is made in the Makefile that generates the file with all the structure and that instances for XmlContent? (Syntax.hs). Equally in the make file is possible to generate the file SyntaxTermInstances.hs that contains instances for Term and Typeable.

For reading gnumeric files there is the function

readGnumeric :: (Term a, XmlContent a) => FilePath -> IO a
that given the file name it returns the Gmr'Workbook (root element) with cells content as Formulas This conversion is made by a type unifying strategic function that applies to every cell content the function 'parseFormula'.

In this part of the project i have totally (expected) convert the Schema to DTD and now every possible element of the Gnumeric file is represented in the data structure.

All this processed can be reverted so we can pretty print all the structure. For that already HaXML? already has the function showXML and Formula is instance of Show.

Dataflow Graph

The data-flow graph was one of the things that were previously made.

This graph is generated by a traversal function that for every Reference it creates a relation between the cell that contains the formula and the element referenced.

This was the first approach to data-flow graph, but it has a few problems because it doesn't support References to elements in diferent Sheets. I have resolved the problem by adding Sheet notion to

data CellRef
  = CellRef {
      sheet :: String,     -- ^ Sheet name
      colNr :: Int,        -- ^ Column index
      rowNr :: Int         -- ^ Row index
    }
and creating a new traversal function that for every Gmr'Sheet runs the previous explained data-flow function.

For the next slicing and chopping was important to have a expanded data-flow graph. For that reason i generalised the previous explained functions to accept as parameter the following functions

collectBlockRefs :: Term a => a -> [CellBlock] collectCellRefs :: Term a => a -> [CellRef]

that will be applied in all the formulas generating a Gph CellBlock? or a Gph CellRef? respectively.

Results

(under Construction)

Slicing and Chopping

For the slicing and chopping i already had generic functions and the only thing i have implemented was the filtering functions. This functions

filterExpandedDataflow :: Set CellRef -> Gmr'Workbook -> Gmr'Workbook
filterCells :: Set CellBlock -> Gmr'Workbook -> Gmr'Workbook
were created to filter Spreadsheets by some list of cells. This two functions were created so it would be possible to filter by CellRef? and CellBlock? for expanded and normal graphs respectively.

  • Slicing
    • Forward - group of cells that contribute to a specified group of cells.
    • Backward - group of cells that have value contribution from a specified group of cells.
  • Chopping - Is the interception between a Forward and Backward Slice.

For building the slicing/chopping already exist the sliceOrChopWith function that given a list of elements for sources and sinks and the dataflow graph it returns the list of elements that represent the slice/chop. This function was already defined in the Haskell Uminho Library.

Results

(under construction)

Type Inference

Future Work

Conclusion

-- CupertinoMiranda - 04 Mar 2005

StrategicQueryingXMLReport 28 Feb 2005 - 06:40 - r3 VitorRodrigues?

Project Report

This report presents the developed work on the project "Strategic Querying of XML Documents".

The results of this project are based on two generic traversal functions, based on Strafunski. One of this functions traverses the child nodes, while the other is a deep traversal function.

One Level Traversal Deep Traversal
One level traversal collection Deep Traversal collection
XPath: /X/A XPath: /X//A
Yellow circles represent collected 'A' items.

Mapping from XPATH, we have "/" as child traversing, and "//" as a deep traversal function. What as done was to create haskell functions (using Strafunski) to represent "/" and "//".

Traversal Functions

As explained before, the solution of te problem was mostly obtained defining twa major functions, as show next:

One Level Traversal Function

taagg cond a= maybe [] id (applyTU strategy a)
        where
                strategy = allTU (++) [] (adhocTU (constTU []) flp)
                flp x = if (cond x) then (return [x]) else (mzero)

Deep Traversal Function

deep::  (Term a, Term [a]) => (Element -> Bool) -> [a] -> [Element]
deep cond = runIdentity.applyTU strategy
        where
                strategy= collect (adhocTU (constTU []) flp)
                flp x=if (cond x) then (return [x]) else (return [])

Query Types

As you can see on the traversal functions defitinion, we only have to define the filtering function for each datatype that a Query can have. The filtering function behaves according to the Query data type received. Query datatypes are defined as follows:

data Query =    Tag String
                | PrefTag String
                | PostTag String
                | Attr [Attrib]
                | PredTag String SFilter
                | AttrTag String [Attrib]
                | PosTag Query [Posicoes]

The possible queries have different means, as explained in next table:

Query Description
Tag Name get an element with the name 'Name'
Attr [Atts] get an element if it has all attributes in the list '[Atts]'
PosTag T [Pos] returns the positions '[Pos]' of the result of querying T
PredTag Name Pred returns all elements with name 'Name' and wich query Pred returns with success
PrefTag Name returns elements started by the string 'Name'
PrefTag Name returns elements that end with the string 'Name'
AttrTag Name [Atts] returns elements of name 'Name' with attributes '[Atts]'

The function function gives us the filter we need to apply to each of the Element intercepted in the traversal function. An example of a filter is:

...
function (Tag str) x@(Elem n a c) = (str=="*" || n==str)
...

As you can see, function returns a boolean, and it is applied as a filter on traversing functions (cond parameter on traversal functions).

Examples of queries:

The next examples show the mapping between Haskell+Strafunski queries and XPath queries:
Haskell+Strafunski XPath
(-/) Tag "alunos" / Tag "curso" /alunos/curso
(-/) Tag "curso" // PosTag (Attr "sobrenome") [pos 3] /curso//@sobrenome[3]
(-//) PrefTag "al" / Tag "nome" //al*/nome
(-/) Tag "curso" // PredTag "aluno" ((./) Tag "nome") /curso//aluno[./nome]

Future Work:

  • improve context based selection
  • implement text value selections
  • implement attribute value operations

Go back to StrategicXMLQueryingAFPProject

-- VitorRodrigues? - 27 Feb 2005

StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida

Strategic Querying of XML Documents

Student: VitorRodrigues?

In this project you will develop a set of combinators for querying XML documents expressed in the strafunski library. In particular we would like to embed the HaQuery language - devoled in the DI/UM - as a set of strafunski library. As a result, we will be able to define queries directly in Haskell/Strafunski whithout having to define/update a language processor for HaQuery as done before.
The Strafunski library already provides support for:

  • a. Parse/Unparse XML documents via the HaXml library
  • b. A set of basic combinators to express traversal functions over any data type
  • c. A prototype implementation of HaQuery and a library of Query combinators (defined by a group of AFP students last year).

You will express the existant HaQuery combinators directly in Strafunski.

  • The first step will be to express the HaXml cmbinators in Strafusnki, using the HaQuery combinators to generate the query tree.
  • The second step is to express the HaQuery combinators, directly with Strafunski, avoind the unnecessary creation of the query tree structure.

Recomended Literature

  1. XQuery: a typed functional language for querying XML, Philip Wadler, 2002
  2. A Strafunski Application Letter, Joost Visser and Ralf Laemmel, 2003 This paper presents the Strafunski libraries, and explains how it works, presenting some examples of Strafunski utilization, namely, in Haskell to Cobol reverse engineering, Java code metrics and Haskell re-engineering.
  3. The XQuery Formal Semantics: A Foundation for Implementation and Optimisation, Byron Choi, Mary Fernandez and Jrme Simon, 2002

Project Report: StrategicQueryingXMLReport

Download Project Source (See README for instructions.)

OtherProjects

-- JoaoSaraiva - 27 Oct 2004

StudentProjects 10 Mar 2004 - 10:37 - NEW RokPurkeljc

Ongoing projects

Project proposals

VitorRodrigues 09 Nov 2004 - 20:12 - NEW VitorRodrigues?

-- VitorRodrigues? - 09 Nov 2004

WebChanges 16 Aug 2001 - 19:56 - r2 PeterThoeny?

50 Recent Changes in TWiki Web retrieved at 16:24 (GMT)

MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros
Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ...
LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco
Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ...
LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ...
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida
Statistics for Education/Archive Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21) : Apresentação da Disciplina. Noção de refinamento. TP (2005.02.22, 2005.02.24) : Apresentação e marcação de turnos. Generalização das construções ...
MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida
Em principio quando é que sairão as notas da primeira chamada? Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem ...
MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias Enunciados Exames 1a. chamada 2a. chamada 3a. chamada Notas Época Especial (Outubro 2005) N. Nome Curso Nota Exame Nota Final ...
MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida
Métodos de Programação I 2005 2006 (anexo) ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html . Esta página destina ...
XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ...
EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project Grammar Engineering Location: Vrije Universiteit or CWI ...
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida
Haskell Biding to GraphViz Student : João Paulo Barbosa Overview This project consists of creating a Haskell binding to AT T's library. This involves using a Foreign ...
WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida
TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ...
StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida
Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ...
WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ...
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas: 2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada ...
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida
Sessão Laboratorial 3 Assuntos abordados nesta sessão: Obs.: Este guião tem seguimento no da próxima sessão. Definição de funções recursivas A recursividade é um ...
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida
Sessão Laboratorial 4 Este Guião é a continuação do da sessão anterior. Assuntos abordados nesta sessão: Funções de ordem superior simples Nas funções realizadas ...
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas Métodos de Programação IV (Modelação e Cálculo de Sistemas Reactivos) 2005 2006 Responsável pela Disciplina LuisSoaresBarbosa http ...
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção). MariaJoaoFrade ...
MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha
Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)? Claro que não! Faltam todos os operadores das somas ...
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial. 27 Jul Já saíram as notas das orais. 22 Jul Já saíram as notas do exame de recurso. As orais serão no dia ...
ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias Elementos Lógicos da Programação 3 Licenciatura em Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2004 2005 Responsável ...
MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias Métodos de Programação II 2004 2005 Sugestão de Leitura Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista ...
FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home Navegação Disciplinas MP1 MP2 PFA
InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca
Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes A criminalidade Informática nos tribunais Gestão do Conhecimento Pay Pal Voto Electrónico Segurança da Informa ...
InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca
Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva Sindicância de Dados Pessoais Formas de sindicância do cidadão comum sob os seus dados pessoais constantes ...
InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca
Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva A ASSINATURA DIGITAL Cartões Inteligentes Voto Electrónico Protecção dos Dados Pessoais Correio Electr ...
InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca
Ensaios de Silvia Vilas Boas Dias, Ana Rita Freitas e Angélica Sofia Campos Preservação da Proriedade Industrial Privacidade dos Dados Clínicos Voto Electrónico ...
InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca
Ensaios de Bruno Silva Voto Electrónico A Democracia nos dedos dos Cidadãos. Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito ...
InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca
Ensaios de Andreia Leite, Angela Santos e Vera Silva Base de Dados de Recolha Genética (2ª versão) Trabalho bem apresentado focando os argumentos essenciais deste ...
InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
Ensaios de Ana Pereira e Daniela Seixas Ética Hacker trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos JoseManuelValenca ...
InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca
Ensaios de Albina Pinheiro A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA ...
InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca
Ensaios de Sofia Silva Segurança na Net JoseManuelValenca 09 Jun 2005
InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães Esteganografia no Processo Civi MafaldaMagalhaes 08 Jun 2005 MafaldaMagalhaes 08 Jun 2005 ...
InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?
Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva Cartão Único AngelicaCampos 06 Jun 2005 Assinatura Digital Voto Electrónico O avanço tecnológico no ...
InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca
Ensaios de Susana Dias Tecnologias da Informação e Comunicação na Saúde A Progressiva Informatização no Direito (RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICA ...
InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins A informática na saúde Assinatura Digital Cartão Único do Cidadão Criptografia O perfil gen ...
InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca
Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto Identificação de dados pessoais sob o ponto vista financeiro Cartão Único Voto Electrónico Violação de Direitos ...
InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca
Ensaios de Adelaide Cerqueira e Sandra Pereira Criptografia e Assinatura Digital AdelaideCerqueira 23 May 2005 Segurança Informática Dados Pessoais Escritura ...
InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
Ensaios de Casimiro Rosa e Abilio Ribeiro A INternet e os Direitos de Autor Assinatura Digital Internet: Meio de Ultrapassar Barreiras Phishing: Alerta Máximo ...
InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca
Ensaios de Vitor Novo, Manuel Almeida e João Varela Privacidade dos Dados Clínicos Agentes e Eventos A Questão Humana na Segurança da Informacão (parte 1) Faz ...
InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca
Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede Bilhete de Identidade Electrónico BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA” OS DIREITOS DE ...
InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca
Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes Criptografia de Chave Pública: Confidencialidade e Autenticação A Internet: Um Espaço de Comunicação ...
InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca
Ensaios de Karina Silva e Eva Mendes Privacidade dos dados clínicos O voto electrónico A assinatura digital O correio electrónico A sociedade da informação ...
InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito "trabalho completo" JoseManuelValenca 25 May 2005
InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca
Ensaios de Eunice Coelho Titulo1 resumo1 Titulo1 Titulo2 resumo2 Titulo2
ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha
Elementos Lógicos da Programação III Projecto Prático Pretende se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model ...
Found 50 topics.

See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News

Feb. 17, 2004

May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004

Feb 6, 2004

Students interested in the Overture Project please contact to JNO. (NB: the Overture Modelling Language has great resemblance with VDM++)

Jan 31, 2004

Novas propostas para estágios curriculares em EstagiosProfisionais

January 29, 2004

Invitation to Wiki.

January 21, 2004

We have a new Wiki server for educational purposes!

Welcome to our Education.Archive Wiki!

This Wiki is maintained by the LMF research group.

If you need help using the Wiki goto the TWiki Web. If you want to contribute please register here (this is the case, for instance, for students who have been invited to maintain the pages of a course).

To navigate this Wiki use the links in the side bar.

Powered by TWiki

WebIndex 24 Nov 2001 - 11:36 - r2 PeterThoeny?
Education/Archive Web Changed Changed by
AdvancedFunctionalProgramming 20 Sep 2005 - 14:48 - r10 MariaJoaoFrade
Programação Funcional Avançada 2004 / 2005 AKA: Advanced Functional Programming General information Advanced Functional Programming is an optional course made available ...
AlgoritmosComplexidade 04 Mar 2006 - 01:48 - r18 JorgeSousaPinto
Notícias LMCC Algoritmos e Complexidade 2005 2006 Notas Notas Época Normal Notas Época Recurso Programa Resumido 1. Grafos: Conceitos e Algoritmos ...
AlgoritmosComplexidadeNews 04 Mar 2006 - 01:50 - r7 JorgeSousaPinto
Notas da época de recurso disponibilizadas nesta página JorgeSousaPinto 04 Mar 2006 Notas da época normal disponibilizadas nesta página JorgeSousaPinto ...
AnAnt0405 02 Mar 2006 - 09:44 - NEW OlgaPacheco
Desenvolvimento de Sistemas de Informação Licenciatura em Administração Pública 3º Ano 2º Semestre Ano lectivo 2004/2005 Avisos Os exames podem ...
AttackOnTheClones 16 Feb 2007 - 17:48 - r9 JoostVisser
The Attack On The Clones project is about the creation of a software clone detection portal. Phase 1 (Opção 3, sep 2003 feb 2004) The first edition of the Attack ...
AulDuv 19 Jan 2005 - 10:24 - r4 OlgaPacheco
Aulas de Dúvidas Dia Hora Local 20 de Janeiro 14h 18h DI A2 31 de Janeiro 14h a definir 1 de Fevereiro 14h a definir
ChopaChopsAFPProject 04 Mar 2005 - 19:36 - r5 JoaoPBarbosa
ChopaChops: view and manipulate Java program graphs Powered by Chocapic! Student : Patrick Machado In this project you will develop an interactive tool to view ...
ChopaChopsAFPProjectReport 04 Mar 2005 - 19:36 - r7 PatrickMachado?
Chopachops Report This page is under construction... Introdution !ChopaChops is a project for slicing and chopping in program graphs. Starting from the Java program ...
CloneDetectionAFPProject 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Home Page for the AdvancedFunctionalProgramming Project "Clone Detection in Haskell". To be filled with abundant and pertinent information. smile Work in progress ...
ComputacaoNatural 28 Feb 2005 - 20:56 - NEW RuiMendes
Eis a página da disciplina: http://colombo.di.uminho.pt/cnat RuiMendes 28 Feb 2005
DSINews 15 May 2006 - 09:30 - r10 OlgaPacheco
Aula 1 23 de Fevereiro Não houve aula. Motivo: Simpósio doutoral do DI. Aula 2 2 de Março Apresentação da disciplina. Apresentação do trabalho prático ...
DesenvolvimentoSistemasInformacao 21 Jul 2006 - 10:44 - r30 OlgaPacheco
Sumários Desenvolvimento de Sistemas de Informação Licenciatura em Administração Pública 3º Ano 2º Semestre Ano lectivo 2005/2006 ................ ...
DisambiguationGLR 03 Mar 2005 - 16:27 - r2 JoostVisser
Embedding Disambiguation Rules in the HaGLR System Student : Luís Pedro Machado In this project we will embed a domain specific language to express disambiguation ...
EDFS 26 Jan 2007 - 18:04 - r11 LuisSoaresBarbosa
SumáriosAulas Especificação e Desenvolvimento Formal de Software 2006 2007 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/ ...
EDFSSum 26 Jan 2007 - 18:00 - r13 LuisSoaresBarbosa
T (2006.10.21a) : Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação implementação ...
EducationNews 17 Feb 2004 - 13:55 - r7 JoseNunoOliveira
Feb. 17, 2004 May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004 Feb 6, 2004 Students interested ...
ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias Elementos Lógicos da Programação 3 Licenciatura em Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2004 2005 Responsável ...
ElementosLogicosProgramacaoIII0304 12 Feb 2007 - 19:15 - r12 JoseBacelarAlmeida
Elementos Lógicos da Programação III Licenciatura de Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2003/2004 Ùltima alteração: 12 ...
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial. 27 Jul Já saíram as notas das orais. 22 Jul Já saíram as notas do exame de recurso. As orais serão no dia ...
ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha
Elementos Lógicos da Programação III Projecto Prático Pretende se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model ...
EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project Grammar Engineering Location: Vrije Universiteit or CWI ...
FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home Navegação Disciplinas MP1 MP2 PFA
FlexibleSkinStyleSheet 21 Jan 2004 - 22:20 - r2 AlcinoCunha
body { background color : lightgray; font family: Verdana, Arial, Helvetica, sans serif; font size: 12px ; } a:link { text decoration : none ; color : darkblue ...
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
FlexibleSkinTopicFooter 21 Jan 2004 - 22:16 - NEW AlcinoCunha
{ Edit Attach Ref By Printable Diffs More... }
FlexibleSkinTopicHeader 21 Jan 2004 - 22:08 - NEW AlcinoCunha
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida
Haskell Biding to GraphViz Student : João Paulo Barbosa Overview This project consists of creating a Haskell binding to AT T's library. This involves using a Foreign ...
IJBib 11 Apr 2005 - 14:57 - r3 JoanaBoas?
fornecida por todos Sobre as ideias básicas de Criptografia (exigindo um pouco de Matemática) um livro importante é o Applied Cryptography de Bruce Schneier. ...
IJNews 05 Jul 2005 - 16:08 - r7 JoseManuelValenca
1 de Março início das aulas JoseManuelValenca 8 de Março devido à minha presença num júri não é possível dar a aula deste dia; nesta semana funciona só o turno ...
InformaticaJuridica 22 Feb 2007 - 11:54 - r64 JoseManuelValenca
Informática Jurídica Licenciatura em Direito 4º Ano 2º Semestre Ano lectivo 2005/2006 Programa Segurança Informática Programa detalhado Bibliografia ...
InformaticaJuridicaT10 25 May 2005 - 15:04 - r4 JoseManuelValenca
Ensaios de Helena Ribeiro, Arlindo Barros e Liliana Correia Sociedade de Informação – Cartão Único de Saúde Voto Electrónico Digitaliação de Livros Comércio Electr ...
InformaticaJuridicaT11 07 Jun 2005 - 22:29 - r4 TeresaBizarro?
Ensaios de Regina Fernandes, Teresa Bizarro e Monica Lourenço Operações bancárias on line: insegurança ou desconfiança TeresaBizarro 07 Jun 2005 Declarações ...
InformaticaJuridicaT12 11 Jun 2005 - 14:53 - r3 JoseManuelValenca
Ensaios de Ana Ferreira, Alexandra Cruz e Michelle Pinto A Avaliação de cada trabalho é feita numa escala de D (insatisfatório), C ou C (satisfatório), B ou B (bom ...
InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca
Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva A ASSINATURA DIGITAL Cartões Inteligentes Voto Electrónico Protecção dos Dados Pessoais Correio Electr ...
InformaticaJuridicaT14 01 Jun 2005 - 10:02 - r6 JoseManuelValenca
Ensaios de Joana Vilas Boas e Ana Daniela Barbosa Que força probatória terá uma mensagem de correio electrónico? O Voto Electrónico eCash Cifra Cartão Único do ...
InformaticaJuridicaT15 09 Jun 2005 - 10:51 - r6 JoseManuelValenca
Ensaios de Rosa Ribeiro, Claudia Cunha e Eva Fanzeres Assinatura Digital Bases de Dados Genéticos Partilha de Dados Pessoais Novas tecnologias: impacto na sociedade ...
InformaticaJuridicaT16 09 Jun 2005 - 10:53 - r2 JoseManuelValenca
Ensaios de Carlos Macedo Criptografia Direito vs Informática JoseManuelValenca 06 May 2005
InformaticaJuridicaT17 27 May 2005 - 14:37 - r2 JoseManuelValenca
Ensaios de Ana Peixoto e Paula Lopes O Uso das Tecnologias de Informação no âmbito do Direito Processual Penal A Utilização das Novas Tecnologias no Local de Trabalho ...
InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca
Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede Bilhete de Identidade Electrónico BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA” OS DIREITOS DE ...
InformaticaJuridicaT19 25 May 2005 - 16:02 - r4 JoseManuelValenca
Ensaios de Angela Peixoto e Liliana Lourenço Assinatura Digital Sigilio Bancário Receita Electrónica Estampilhas Temporais Voto Electrónico JoseManuelValenca ...
InformaticaJuridicaT1A 12 Jun 2005 - 09:34 - r6 JoseManuelValenca
Ensaios de Ana Araújo Silva e Filipe Macedo Vigilância electrónica: Ponderação de princípios Este tema só perifericamente toca os objectivos deste curso; a exposi ...
InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca
Ensaios de Silvia Vilas Boas Dias, Ana Rita Freitas e Angélica Sofia Campos Preservação da Proriedade Industrial Privacidade dos Dados Clínicos Voto Electrónico ...
InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca
Ensaios de Vitor Novo, Manuel Almeida e João Varela Privacidade dos Dados Clínicos Agentes e Eventos A Questão Humana na Segurança da Informacão (parte 1) Faz ...
InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca
Ensaios de Albina Pinheiro A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA ...
InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca
Ensaios de Adelaide Cerqueira e Sandra Pereira Criptografia e Assinatura Digital AdelaideCerqueira 23 May 2005 Segurança Informática Dados Pessoais Escritura ...
InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?
Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva Cartão Único AngelicaCampos 06 Jun 2005 Assinatura Digital Voto Electrónico O avanço tecnológico no ...
InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca
Ensaios de Eunice Coelho Titulo1 resumo1 Titulo1 Titulo2 resumo2 Titulo2
InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito "trabalho completo" JoseManuelValenca 25 May 2005
InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
Ensaios de Ana Pereira e Daniela Seixas Ética Hacker trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos JoseManuelValenca ...
InformaticaJuridicaT22 31 May 2005 - 09:14 - NEW JoseManuelValenca
Ensaios de Gloria Soares, Joana Carvalho e Raquel Gomes A Sociedade da Informação A segurança informática A criptografia ... ... JoseManuelValenca 31 May ...
InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães Esteganografia no Processo Civi MafaldaMagalhaes 08 Jun 2005 MafaldaMagalhaes 08 Jun 2005 ...
InformaticaJuridicaT24 31 May 2005 - 14:42 - r2 JoseManuelValenca
Ensaios de Manuel Ferreira, Vania Rodrigues e Helena Silva O problema dos direitos de autor no mundo informático.. Software LIvre CRIMINALIDADE INFORMÁTICA: SPAM ...
InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
Ensaios de Casimiro Rosa e Abilio Ribeiro A INternet e os Direitos de Autor Assinatura Digital Internet: Meio de Ultrapassar Barreiras Phishing: Alerta Máximo ...
InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins A informática na saúde Assinatura Digital Cartão Único do Cidadão Criptografia O perfil gen ...
InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca
Ensaios de Sofia Silva Segurança na Net JoseManuelValenca 09 Jun 2005
InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca
Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes A criminalidade Informática nos tribunais Gestão do Conhecimento Pay Pal Voto Electrónico Segurança da Informa ...
InformaticaJuridicaT3 30 Jun 2005 - 16:11 - r12 JoseManuelValenca
Ensaios de Eunice Coelho Dados Pessoais Video Vigilância Trabalho 3 Trabalho 4 Trabalho 5
InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca
Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva Sindicância de Dados Pessoais Formas de sindicância do cidadão comum sob os seus dados pessoais constantes ...
InformaticaJuridicaT5 25 May 2005 - 16:32 - r6 JoseManuelValenca
Ensaios de Isabel Nunes, Claudia Pereira e Ana Tavares Voto Electrónico Vantagens da implementação de um sistema de voto alternativo ao tradicional sistema de voto ...
InformaticaJuridicaT6 18 May 2005 - 09:53 - r2 JoseManuelValenca
Ensaios de Silvia Pinto e Tania Costa Informática Jurídica Voto Electrónico Assinaturas Digitais Teoria dos Sistemas Cartão Único do Cidadão JoseManuelValenca ...
InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca
Ensaios de Karina Silva e Eva Mendes Privacidade dos dados clínicos O voto electrónico A assinatura digital O correio electrónico A sociedade da informação ...
InformaticaJuridicaT8 10 Jun 2005 - 17:58 - r5 JoseManuelValenca
Ensaios de Alvaro Amorim, Carla Costa e Simone Marreiros Bases de Dados com Informação Genética Bom trabalho; claramente exposto e defendido; não tenho a certeza ...
InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca
Ensaios de Andreia Leite, Angela Santos e Vera Silva Base de Dados de Recolha Genética (2ª versão) Trabalho bem apresentado focando os argumentos essenciais deste ...
InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca
Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto Identificação de dados pessoais sob o ponto vista financeiro Cartão Único Voto Electrónico Violação de Direitos ...
InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca
Ensaios de Bruno Silva Voto Electrónico A Democracia nos dedos dos Cidadãos. Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito ...
InformaticaJuridicaTC 31 May 2005 - 14:12 - r4 JoseManuelValenca
Ensaios de Helder Oliveira e Luis OLiveira Pirataria Informática (doc) Cartão Comum do Cidadão Contratos na Internet O Preço da Segurança Violação da Correspond ...
InformaticaJuridicaTD 31 May 2005 - 10:57 - r3 JoseManuelValenca
Ensaios de Vanessa Freitas e Magda Nunes Assinatura Digital Identificação Retinal Ensino Electrónico Comércio Electrónico Voto Electrónico JoseManuelValenca ...
InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca
Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes Criptografia de Chave Pública: Confidencialidade e Autenticação A Internet: Um Espaço de Comunicação ...
InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca
Ensaios de Susana Dias Tecnologias da Informação e Comunicação na Saúde A Progressiva Informatização no Direito (RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICA ...
LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco
Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ...
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros
Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ...
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida
Sessão Laboratorial 3 Assuntos abordados nesta sessão: Obs.: Este guião tem seguimento no da próxima sessão. Definição de funções recursivas A recursividade é um ...
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida
Sessão Laboratorial 4 Este Guião é a continuação do da sessão anterior. Assuntos abordados nesta sessão: Funções de ordem superior simples Nas funções realizadas ...
LI1News 23 Feb 2007 - 22:46 - r8 JoseBacelarAlmeida
23/02/2007 : Já disponíveis as notas da época de recurso. 19/02/2007 : O exame de recurso será realizado na 4ª feira, às 14:30 no DI0.11. O exame incluirá as componentes ...
LabMF 26 Oct 2004 - 06:56 - r2 LuisSoaresBarbosa
SumáriosAulas Laboratório de Métodos Formais 2004 2005 Docente Coordenador Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Horário ...
LabMFGru 21 Sep 2004 - 14:58 - NEW LuisSoaresBarbosa
Grupos e Classificações Grupo Nr Nome Curso Data Apresentação Classificação ...
LabMFSum 21 Sep 2004 - 14:55 - NEW LuisSoaresBarbosa
T (2004.09.29) : Apresentação da Disciplina. Discussão das propostas de projectos. LuisSoaresBarbosa 21 Sep 2004
LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ...
MFIGru 10 Feb 2005 - 02:18 - r2 LuisSoaresBarbosa
Classificações Exame (Época Normal) Nr Nome Exame Recurso Laboratório NOTA FINAL 35803 Alexandra Martins Silva 19 30969 Alexandre ...
MFISum 16 Dec 2004 - 16:54 - r6 OlgaPacheco
T (2004.09.23) : Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação implementação. ...
MFPII0405 26 Feb 2007 - 00:31 - r11 JoseBacelarAlmeida
SumáriosAulas Métodos Formais de Programação II 2004 2005 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Te ...
MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21) : Apresentação da Disciplina. Noção de refinamento. TP (2005.02.22, 2005.02.24) : Apresentação e marcação de turnos. Generalização das construções ...
MP2News 12 Jul 2005 - 15:22 - r34 MariaJoaoFrade
Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02 . MariaJoaoFrade 12 Jul 2005 Os testes poderão ser consultados na ...
MP4Gru 02 Aug 2005 - 10:30 - r17 LuisSoaresBarbosa
Grupo Nr Nome Tema Class. PRÁTICA Exame (N) Exame (R) CLASS. FINAL 1 35840 José Tércio Soares D 15 13 14 35743 Pedro Machado D ...
MP4Sum 21 Feb 2006 - 14:34 - r9 LuisSoaresBarbosa
T (2006.02.21) : Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento ...
MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas: 2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada ...
MetodosFormaisProgramacaoI 04 Mar 2005 - 16:51 - r13 LuisSoaresBarbosa
SumáriosAulas Métodos Formais de Programação I 2004 2005 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Te ...
MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida
Métodos de Programação I 2005 2006 (anexo) ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html . Esta página destina ...
MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias Enunciados Exames 1a. chamada 2a. chamada 3a. chamada Notas Época Especial (Outubro 2005) N. Nome Curso Nota Exame Nota Final ...
MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha
Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)? Claro que não! Faltam todos os operadores das somas ...
MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida
Em principio quando é que sairão as notas da primeira chamada? Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem ...
MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias Métodos de Programação II 2004 2005 Sugestão de Leitura Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista ...
MetodosProgramacaoIIFAQ 11 Jul 2005 - 14:59 - r113 TWikiGuest
FAQ de Métodos de Programação II Índice: Nas pautas que saíram relativamente ao ano 2004/05, alguns alunos têm como nota ' '. Em termos práticos, a que se resume ...
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas Métodos de Programação IV (Modelação e Cálculo de Sistemas Reactivos) 2005 2006 Responsável pela Disciplina LuisSoaresBarbosa http ...
OlgaPacheco 16 Dec 2004 - 16:32 - NEW OlgaPacheco
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção). MariaJoaoFrade ...
PP1News 01 Mar 2005 - 18:30 - r12 MariaJoaoFrade
AVISO PROVAS ORAIS As provas orais irão realizar se na 6ªfeira dia 4 de Março, às 10:00 . Ponto de encontro: junto à secretaria do DI (piso 2). AVISO TURNOS ...
ParadigmasProgramacaoI0405 12 Feb 2007 - 19:15 - r57 JoseBacelarAlmeida
Notícias Paradigma da Programação I em Engenharia de Sistemas e Informática 1º Ano 1º Semestre (5301P3) Ano lectivo 2004/2005 (anteriores) Notas ...
ProgramacaoFuncional 23 Feb 2007 - 17:59 - r48 MariaJoaoFrade
Notícias Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre (7001N7) Ano lectivo 2005/2006 (anterior) Programa Na actual ...
ProgramacaoFuncional0405 12 Feb 2007 - 19:15 - r41 JoseBacelarAlmeida
Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre Ano lectivo 2004/2005 Notas Notas do exame de Recurso Notas ...
RTp1 07 Apr 2005 - 11:08 - NEW OlgaPacheco
Resultados do Trabalho Prático nº 1 Grupo Trabalho nº1 G1 de Informação do Centro de Saúde de Amares G2 de Informação da Câmara Municipal de Braga G3 ...
SpreadsheetUnderScrutinyAFPProject 04 Mar 2005 - 11:43 - r3 CupertinoMiranda
SpreadSheet under Scrutiny Student : Cupertino Miranda In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming ...
SpreadsheetUnderScrutinyAFPProjectReport 05 Mar 2005 - 16:45 - r5 CupertinoMiranda
Spreadsheet Under Scrutiny Project Report Under construction Introduction Spreadsheet tools can be viewed as programming environments for non programmers. Their ...
StrategicQueryingXMLReport 28 Feb 2005 - 06:40 - r3 VitorRodrigues?
Project Report This report presents the developed work on the project "Strategic Querying of XML Documents". The results of this project are based on two generic traversal ...
StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida
Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ...
StudentProjects 10 Mar 2004 - 10:37 - NEW RokPurkeljc
Ongoing projects AttackOnTheClones Project proposals EstagiosProfisionais SIGInternshipProjects
VitorRodrigues 09 Nov 2004 - 20:12 - NEW VitorRodrigues?
VitorRodrigues 09 Nov 2004
WebChanges 16 Aug 2001 - 19:56 - r2 PeterThoeny?
WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ...
WebIndex 24 Nov 2001 - 11:36 - r2 PeterThoeny?
See also the faster WebTopicList
WebLeftBar 13 Feb 2007 - 02:58 - r2 JoseBacelarAlmeida
Topics:
WebNotify 15 Mar 2004 - 10:55 - r8 JorgeSousaPinto
This is a subscription service to be automatically notified by e mail when topics change in this Education/Archive web. This is a convenient service, so you do not ...
WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida
TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ...
WebRss 30 Jan 2003 - 08:14 - NEW PeterThoeny?
TWiki's Education/Archive web /view/Education/Archive The web for users, groups and offices. TWiki is a Web Based Collaboration Platform for the Corporate World ...
WebSearch 08 Aug 2001 - 05:57 - r8 PeterThoeny?
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida
Statistics for Education/Archive Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicList 24 Nov 2001 - 11:36 - NEW PeterThoeny?
See also the verbose WebIndex.
XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ...
Found 120 topics.

See also the faster WebTopicList

WebLeftBar 13 Feb 2007 - 02:58 - r2 JoseBacelarAlmeida
  • Topics:

AeC
AFP
CA
CriptoBio
EDFS
EC
DSI
ELP1
ELP2
ELP3
IJ
LAD
LabMF
LI1
LC
MFP1
MFP2
MP1
MP2
MP4
Opcao III
PF
PP1
PP2
Estágios
Projectos
PhD@DI


  • Main Webs

WebNotify 15 Mar 2004 - 10:55 - r8 JorgeSousaPinto
This is a subscription service to be automatically notified by e-mail when topics change in this Education/Archive 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:

Format: <space><space><space>, followed by:
* Main.yourWikiName (if you want that the e-mail address in your home page is used)
* Main.yourWikiName - yourEmailAddress (if you want to specify a different e-mail address)
* Main.anyTWikiGroup (if you want to notify all members of a particular TWikiGroup)

Related topics: TWikiUsers, TWikiRegistration

WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida

TWiki.Education/Archive Web Preferences

The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, i.e. TWikiGuest in the TWiki.Main web)

Preferences:

  • List of topics of the TWiki.Education/Archive web:
    • Set WEBTITLE = Education.Archive
    • Set WEBBGCOLOR = %6699CC

  • Web specific background color: (Pick a lighter one of the StandardColors)
    • Set WEBBGCOLOR = #6699CC

  • List this web in the SiteMap:
    • If yes, Set SITEMAPLIST = on, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Education/Archive.Topic links.
    • Set SITEMAPLIST = on
    • Set SITEMAPWHAT = Education.Archive Wiki.
    • Set SITEMAPUSETO = ...collaborate on

  • Exclude web from a web="all" search: (Set to on for hidden webs)
    • Set NOSEARCHALL =

  • Default template for new topics and form(s) for this web:
    • WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
    • TWiki.WebTopicEditTemplate: Site-level default template
    • TWikiForms: How to enable form(s)
    • Set WEBFORMS =

  • Web preferences that are not allowed to be overridden by user preferences:
    • Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

Notes:

  • A preference is defined as:
    6 spaces * Set NAME = value
    Example:
    • Set WEBBGCOLOR = #FFFFC0
  • Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
    • When you write variable %WEBBGCOLOR% , it gets expanded to #6699CC .
  • 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 new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).

Related Topics:

WebRss 30 Jan 2003 - 08:14 - NEW PeterThoeny?
TWiki's Education/Archive web http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive The web for users, groups and offices. TWiki is a Web-Based Collaboration Platform for the Corporate World. en-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/Archive http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive /twiki/pub/Main/LocalLogos/um_eengP.jpg MenuTopics http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/MenuTopics AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI (last changed by JoseBacelarAlmeida) 2008-09-19T13:37:28Z JoseBacelarAlmeida LI1Aula2 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LI1Aula2 Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ... (last changed by JoseBarros) 2007-10-09T12:28:47Z JoseBarros LI1Aula1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LI1Aula1 Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ... (last changed by OlgaPacheco) 2007-10-04T11:06:18Z OlgaPacheco LaboratoriosInformatica1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LaboratoriosInformatica1 Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ... (last changed by JoseBarros) 2007-10-03T09:39:08Z JoseBarros WebSearchAdvanced http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebSearchAdvanced (last changed by TWikiGuest) 2007-05-17T14:51:41Z guest ProgramacaoFuncional http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ProgramacaoFuncional Notícias Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre (7001N7) Ano lectivo 2005/2006 (anterior) Programa Na actual ... (last changed by MariaJoaoFrade) 2007-02-23T17:59:36Z MariaJoaoFrade WebLeftBar http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebLeftBar Topics: (last changed by JoseBacelarAlmeida) 2007-02-13T02:58:01Z JoseBacelarAlmeida XMLtoSQLConversionToolAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/XMLtoSQLConversionToolAFPProject XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:32:09Z JoseBacelarAlmeida WebPreferences http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebPreferences TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:19Z JoseBacelarAlmeida WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebHome News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:18Z JoseBacelarAlmeida StrategicXMLQueryingAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/StrategicXMLQueryingAFPProject Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:18Z JoseBacelarAlmeida ProgramacaoFuncional0405 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ProgramacaoFuncional0405 Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre Ano lectivo 2004/2005 Notas Notas do exame de Recurso Notas ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:15:22Z JoseBacelarAlmeida ParadigmasProgramacaoI0405 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ParadigmasProgramacaoI0405 Notícias Paradigma da Programação I em Engenharia de Sistemas e Informática 1º Ano 1º Semestre (5301P3) Ano lectivo 2004/2005 (anteriores) Notas ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:15:21Z JoseBacelarAlmeida RTp1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/RTp1 Resultados do Trabalho Prático nº 1 Grupo Trabalho nº1 G1 de Informação do Centro de Saúde de Amares G2 de Informação da Câmara Municipal de Braga G3 ... (last changed by OlgaPacheco) 2005-04-07T11:08:21Z OlgaPacheco SpreadsheetUnderScrutinyAFPProjectReport http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/SpreadsheetUnderScrutinyAFPProjectReport Spreadsheet Under Scrutiny Project Report Under construction Introduction Spreadsheet tools can be viewed as programming environments for non programmers. Their ... (last changed by CupertinoMiranda) 2005-03-05T16:45:42Z CupertinoMiranda SpreadsheetUnderScrutinyAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/SpreadsheetUnderScrutinyAFPProject SpreadSheet under Scrutiny Student : Cupertino Miranda In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming ... (last changed by CupertinoMiranda) 2005-03-04T11:43:25Z CupertinoMiranda
WebSearch 08 Aug 2001 - 05:57 - r8 PeterThoeny?

Web Search

Search: \.*

Found 0 topics.

  Advanced search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:       
(otherwise search Education/Archive Web only)

Other search options:
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest

Advanced Search

Search: \.*

Education/Archive Web Changed Changed by
AdvancedFunctionalProgramming 20 Sep 2005 - 14:48 - r10 MariaJoaoFrade

Programação Funcional Avançada 2004 / 2005

AKA: Advanced Functional Programming


General information

Advanced Functional Programming is an optional course made available for 5th year students of the following degrees:

  • 5309?? - Licenciatura em Engenharia de Sistemas e Informática
  • 7009?? - Licenciatura em Matemática e Ciências da Computação


Course Staff

(Alphabetically ordered by surname) J.C. Bacelar, J.B. Barros, M.A. Cunha, J.N. Oliveira J.S. Pinto, J.A. Saraiva (course leader), Joost Visser,


Structure of the Course

The course is organised into two parts:

  1. A set of seminars introducing relevant topics to be covered. This seminars will be primarily given by the students. Some more advanced material, however, can/will be presented by the course lecturers or by guests visiting the department.
  2. In the second, more substantial part of the course, students will develop a project (see List of Projects Available).

Number of students: Minimum 5, maximum 10.


Assessment

The following three items will be taken into account for student evaluation:

A - Background lecture

The students will deliver a short lecture (20m) introducing one of the topics covered in the course.

B - Brief Project/Tool Presentation

The different groups will give a lecture (30m) presenting the project they have chosen for development and the tool(s) that will be used in this task.

C - Project Presentation and Report

Each group will give a lecture presenting the project.

The final mark is computed according to the formula:

A * 0.2 + B * 0.3 + C * 0.5


Program synopsis

Main topics of the course are:

  • Imperative Functional Programming
    • Monads and Effects
    • Robots
    • Graphical User Interfaces
      • Functional Programming for the Web
        • Scripting Combinators (Wash-CGI)
        • HaXML? /XQuery
        • Language Processing in Strafunski
        • HASKELL development tools
    • Advanced Functional Data Structures
    • Program transformation techniques


Program in detail

  • Week 1 (2004.10.06): kick off: definition of topics and projects

  • Week 2 (2004.10.13): meetings with supervisors

  • Week 3 (2004.10.17): talk by Simon Thompson
    • When/Where: Oct 20nd, 3pm, room DI-A1
    • Title: Refactoring Functional Programs
    • Abstract: Refactoring is about improving the design of existing computer programs and systems; as such it is familiar to every programmer, software engineer and designer. Its key characteristic is the focus on structural change, strictly separated from changes in functionality. A structural change can make a program simpler, by removing duplicate code, say, or can be the preparatory step for an upgrade or extension of a system.
      It is characteristic of refactorings that they are 'diffuse' and 'bureaucratic': consider the example of the simplest possible refactoring: renaming a component of a program. To effect this change requires not only the component definition to be changed, but also every use of the component must be similiarly modified. This involves changing every file/module which might use the component, potentially tens or hundreds of modules. Moreover, it is equally vital not to change any components hidden in other parts of the system which happen to share the same name. Of course, it is possible to do refactorings 'by hand', but this process is tedious and, more importantly, error-prone. Automated support for refactorings makes them safe and easy to perform and also secure in their implementation.
      The 'Refactoring Functional Programs' project comprising Huiqing Li, Claus Reinke and Simon Thompson is building the HaRe system to support refactorings for Haskell programs. HaRe is designed as a serious tool for use by practising programmers: HaRe supports the whole of the Haskell; it is integrated into standard development environments and it preserves the 'look and feel' of refactored programs. HaRe is built using a number of existing libraries: 'Programatica' provides tools on which to build the language-analysis components, and 'Strafunski' gives general support for tree transformations.
    • Links: http://www.cs.kent.ac.uk/projects/refactor-fp

  • Week 4 (2003.10.24): students project presentations (item B)

  • Week 5 (2004.11.31): talk by Joost Visser
    • When/Where: Oct 28, 16:00-18:00, room DI-1.04
    • Title: Strafunski: a Haskell-centered bundle for generic programming and language processing
    • Abstract: Strafunski is a bundle of a combinator library and various generative tools that support key tasks in language processing: parser generation and traversal. The traversal support is based on the notion of functional strategies: generic functions that can traverse into terms of any type while mixing type-specific and uniform behaviour. The parsing support is involves connectivity to the Generalized LR parser SGLR. Finally, an enhanced version of DrIFT ensures that traversal and parsing support can easily be deployed for (extremely) large languages such as Java or Cobol. The following will be covered in the talk:
      • Essentials of Strafunski: concepts and architecture, relationship to GHC's Data.Generics.
      • Hands-on session of strategic programming with Strafunski.
      • Design patterns for programming with Strafunski.
    • Slides: http://www.di.uminho.pt/~jno/html/StrafunskiAFP.pdf
    • Links:

  • Week 7 (2003.11.17): meetings with supervisors

  • Week 8 (2003.11.24): Tutorials by Doaitse Swierstra
    • When/Where: Nov 23, 14:00-16:00, room Sala de Reuniões
    • Title: Linear, Online, Functional Pretty Printing
    • Abstract: We present an implementation of Oppen's Pretty printing solution in Haskell. The algorithm is linear in the size of the input, independent of the line width, uses limited look ahead, and has online behaviour.
    • Title: Parsing permutation phrases
    • Abstract: A permutation phrase is a sequence of elements (possibly of different types) in which each element occurs exactly once and the order is irrelevant. Some of the permutable elements may be optional. We show how to extend a parser combinator library with support for parsing such free-order constructs. A user of the library can easily write parsers for permutation phrases and does not need to care about checking and reordering the recognized elements. Applications include the generation of parsers for attributes of XML tags and Haskell's record syntax.

  • Week 9 (2003.12.01):
    • Luís Pedro Machado presents the project: Embedding Disambiguation Rules in the HaGLR System
    • meetings with supervisors

  • Week 10 (2003.12.08): J.M.Valença
    • Monadic Strategies - the teachers allocation problem
    • program files here

  • Week 11 (2003.12.15):
    • Students present the studied papers (see literature section in projects).

  • January 2004: project presentations (item C)


List of Projects Available

List of projects announced so far :


Final Marks

Information to become available in due time.


Outras disciplinas leccionadas pelo DIUM:
AlgoritmosComplexidade 04 Mar 2006 - 01:48 - r18 JorgeSousaPinto
Notícias

Notas da época de recurso disponibilizadas nesta página

-- JorgeSousaPinto - 04 Mar 2006

Notas da época normal disponibilizadas nesta página

-- JorgeSousaPinto - 07 Feb 2006

Disponíveis nesta página:

  • Notas do TP
  • Slides relativos ao 3o. capítulo da matéria (Problemas NP-completos)

-- JorgeSousaPinto - 15 Dec 2005

Disponíveis nesta página os slides relativos ao primeiro capítulo da matéria (Análise de Algoritmos) e um conjunto de enunciados de exercícios sobre este tema.

-- JorgeSousaPinto - 19 Nov 2005

Disponível nesta página o enunciado do trabalho prático

-- JorgeSousaPinto - 29 Oct 2005

Já disponíveies os slides relativos ao primeiro capítulo da matéria (Grafos)

-- JorgeSousaPinto - 26 Sep 2005

[LMCC]

Algoritmos e Complexidade 2005-2006


Notas


Programa Resumido

  1. Grafos: Conceitos e Algoritmos Fundamentais
  2. Introdução à Análise de Algoritmos
    Casos de Estudo:
    • Algoritmos de Ordenação
    • Algoritmos de Grafos
  3. Problemas NP-completos
  4. [P] Estruturas de Dados Fundamentais: Questões de Eficiência na Pesquisa;
    Árvores AVL e Tabelas de “Hash”; sua Realização na Linguagem C;


Programa Detalhado

  1. Grafos: Conceitos e Algoritmos Fundamentais
    • Grafos: conceitos básicos e representação em memória de computador
    • Algoritmos elementares: pesquisas (em largura e em profundidade)
    • Algoritmos para determinação de árvores geradoras mínimas
    • Algoritmos para determinação de caminhos mais curtos
    • Estratégias algorítmicas: algoritmos "greedy''
    • Algoritmos para determinação do fecho transitivo de um grafo
  2. Introdução à Análise de Algoritmos
    Casos de Estudo:
    • Algoritmos de Ordenação
    • Algoritmos de Grafos
  3. Problemas NP-completos
  4. [P] Estruturas de Dados Fundamentais: Questões de Eficiência na Pesquisa;
    Árvores AVL e Tabelas de “Hash”; sua Realização na Linguagem C;


Bibliografia

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. MIT Press, Cambridge,Mass., second edition, 2001.

  • Robert L. Kruse, Bruce P. Leung, and Clovis L. Tondo. Data Structures and Program Design in C. Prentice Hall, second edition, 1997.

  • Donald E. Knuth. The Art of Computer Programming : (1) Fundamental Algorithms, (2) Seminumerical Algorithms, (3) Sorting and Searching. Addison/Wesley, third edition, 1997/98. 3 volumes.


Equipa Docente

Docente Horário de Atendimento
JorgeSousaPinto 2a.fa. 10:00-12:00, 5a.fa. 10:00-13:00
JoseBacelarAlmeida 2a.fa. 14:00-16:00
JoseBarros  


Critérios de Avaliação

  • Componente Teórica (Exame): 60% (nota mínima de 8.5 valores)
  • Componente Prática (Trabalhos Práticos): 40% (nota mínima de 10 valores)
    • Trabalho prático (a ser apresentado na semana de 21 a 25 de Novembro)
    • Informação das aulas práticas


Exames

Material Disponibilizado

Aulas Práticas:

  1. Árvores Binárias - BinTree.h
  2. Árvores AVL (inserção balanceada) - avl-part.c
  3. Tabelas de Hash (chaining address) - hashCh.h; hashCh-part.c
  4. Representação de Grafos - graph.h; graph-part.c; test.c
  5. Uma implementação de Queues de inteiros - QueueInt.h; QueueInt.c
  6. Codificação do algoritmo Prim para cálculo da árvore geradora de custo mínimo - mst.c


Trabalho Prático

Observação: Os alunos com nota prática de 9 valores serão admitidos a exame.

Notas
Num Nome Nota
35847 Maria Madalena da Silva Lopes 16
32738 Paulo Sérgio Azevedo Magalhães 16
35862 Sofia Helena Roriz Moreira 16
45340 Ana Sofia Duarte 16
43525 Alice Monteiro Marques 16
43535 Nélio Marins Guimarães 16
38584 Rui Dinis da Silva 13
42201 Humberto Longo 13
43511 Paulo Renato Ribeiro Xavier 13
33629 Carla Marisa Dias da Costa 15
33643 Isabel Maria Afonso Fernandes 15
43547 Carlos Eduardo da Silva Pereira 13
43549 Nuno Ernesto Salgado Oliveira 13
39846 Hélder Teixeira 17
43488 Paula Silva 17
33729 Renato Ivo Ribeiro 14
30481 Maria de Fátima Monteiro 14
35828 João Cerqueira 14
38621 Simão Cunha 9
39837 Rui Almeida 9
43542 Bruno Lopes 17
37074 Patrícia Ribeiro 15
41025 Pedro Baltarejo 15
43523 Susana Silva 15
40998 Otília Carvalho 12
41045 Miguel Veiga 12
40999 Carlos Baptista 14
39431 Marco Martins 14
35867 Vitor Magalhães 14
41021 Nuno Costa 12
43503 Rui Pedro Alves de Carvalho 9
43509 Dave Lage Moderno 10
40997 André Coelho 10
41007 Luís Horta Nova 10
41009 Miguel Filipe Dias Pinto 13
41020 Carlos Manuel Ferreira Lopes 9
41038 Helder Nuno Ribeiro Macedo 9
42237 Luís Miguel Cruz Duarte 17
35830 João Paulo Lopes Oliveira 17
43514 César Carlos Martins Gomes 17
38572 João Pedro Domingues Cadinha 11
41010 Marta Sofia Vilaça Oliveira 9
35805 Arnaldo Nuno Gonçalves Monteiro 9
39838 Bruno Edgar Soares 12
20225 Ricardo Paz 14
28179 Raquel Pires 14

  • Enunciado
  • Entrega e apresentação: semana de 21 a 25 de Novembro

AlgoritmosComplexidadeNews 04 Mar 2006 - 01:50 - r7 JorgeSousaPinto
Notas da época de recurso disponibilizadas nesta página

-- JorgeSousaPinto - 04 Mar 2006

Notas da época normal disponibilizadas nesta página

-- JorgeSousaPinto - 07 Feb 2006

Disponíveis nesta página:

  • Notas do TP
  • Slides relativos ao 3o. capítulo da matéria (Problemas NP-completos)

-- JorgeSousaPinto - 15 Dec 2005

Disponíveis nesta página os slides relativos ao primeiro capítulo da matéria (Análise de Algoritmos) e um conjunto de enunciados de exercícios sobre este tema.

-- JorgeSousaPinto - 19 Nov 2005

Disponível nesta página o enunciado do trabalho prático

-- JorgeSousaPinto - 29 Oct 2005

Já disponíveies os slides relativos ao primeiro capítulo da matéria (Grafos)

-- JorgeSousaPinto - 26 Sep 2005

AnAnt0405 02 Mar 2006 - 09:44 - NEW OlgaPacheco

Desenvolvimento de Sistemas de Informação

Licenciatura em Administração Pública
3º Ano - 2º Semestre
Ano lectivo 2004/2005


Avisos

  • Os exames podem ser consultados no dia 25 de Julho (2.a-feira), das 11h - 13h.

Programa Resumido

  • Open Source Software (OSS)
    • Que oportunidades para a Administração Pública?
    • Alguns produtos.
    • Experiências de utilização.

  • UML (Unified Modelling Language).
    • Diagramas de Use Case.
    • Diagramas de Classe.
    • Diagramas de Comportamento.
    • Casos de Estudo.
  • Discussão: Desenvolvimento de Sistemas de Informação para a Administração Pública: (que desafios / que propostas)?.

Programa detalhado

Bibliografia

  • G. Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1998.
  • J. Rumbaugh, I. Jacobson, G. Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999.
  • M. Fowler. UML Distilled, Third Edition. Addison-Wesley,2004.

Critérios de Avaliação

  • Nota Final = 40% Nota Prática + 60% Nota Teórica.
    • Nota Prática: 2 trabalhos práticos realizados em grupos de 3 pessoas.
    • Nota Teórica: exame escrito individual (nota teórica mínima: 8 valores).

Equipa Docente

Olga Pacheco (contacto)

Horário Lectivo

Turnos Horário Sala
TP 5ªfeira 14:00-17:00 DI - Lab 0.04

Horário de Atendimento

Docente Horário
Olga Pacheco 6ªfeira 10:00-12:00

Fontes de Informação Adicionais

Slides das Aulas

Leituras Recomendadas

Links Úteis

Trabalhos Práticos

Exames

Avaliação

Grupo Aluno TP nº1 TP nº2 Exame Ex. Recurso Nota Final
G1 Celina Cruz 15 15 10.5   12
Cecília Fernandes 15 15 15.6   16
Joana Gonçalves 15 15 12.2   13
G2 Cristiano Costa 13 14 10.3   12
Martinho Pereira 13 14 11.5   12
Paulo Sá 13 14 9   11
G3 Manuela Sá 14 15 9.3   11
Regina Cerqueira 14 15 14.8   15
Sandra Costa 14 15 < 8 10 12
G4 Gustavo Fernandes 14 13 8   10
Ivan Ribeiro 14 13 10.5   12
Mário Maciel 14 13 10   12
G5 Claudia Sousa 14 11 8   10
António Fortes 14 11 10.8   12
G7 Pedro Monteiro 14 13 14   14
Ana Ribeiro 14 13 13.1   13
G8 David Belo 13 13 < 8 10.5 12
Olimpia Silva 13 13 DES   REP
G9 Bruno Lima 14 14 9   11
Pedro Peira 14 14 < 8 8.5 11
Filipe Dias 14 14 < 8 8 10
G10 Georgina Ferreira 15 14 < 8 8.5 11
Natália Costa 15 14 11.8   13
Sérgio Pedrosa 15 14 12   13

Nota: <8 - nota inferior a 8 valores


(Ultima Actualização: 2005/07/22)
AttackOnTheClones 16 Feb 2007 - 17:48 - r9 JoostVisser
The Attack On The Clones project is about the creation of a software clone detection portal.

Phase 1 (Opção 3, sep 2003 -- feb 2004)

The first edition of the Attack On The Clones project was a project carried out in the context of Opção 3 of LESI.

Status: finished

Project description

Create a Clone Detection Portal. Clones are duplicate pieces of software that generally result from copy-paste techniques in programming. Clones can differ slightly, for instance in the names of variables or in the exact order of statements and declarations. A pragmatic technique for detecting clones is to compute metrics over the code, and compare the metrics. If the metrics for two pieces are (almost) identical, they are clones. In this project you will create a web site where one can (i) upload Java source code to be subjected to metric-based clone detection, and (ii) inspect the detection results.

Team

  • Bruno Silva (30174)
  • RuiAbreu? (30257)

Supervision

Phase 2 (continuation)

Status: finished

Objectives

  • Support for more projects
  • "Project to itself" comparison
  • Improve the user interface

Project description

The project is based on the detection of similar source code in Java source code files. One of the major reasons why clones occur is code reuse by copying a pre-existing program fragment. Code clones are one of the factors that degrade the structure of the software and lower the software quality. If one changes a code clone, he/she must also update all other copies and that can raise the maintenance cost. It is also useful to know wich parts of different source codes are clones to each other. The result of the project is the next step of the 1. edition of the clone detection portal. Because the 1. edition was designed for testing only two Java projects in one "detection", this was changed and now the portal supports the submition of more projects. Therefore the way of metrics extraction had to be changed; metrics are extracted from each project directly after the submition. The time needed to calculate metrics remains the same as in the previous version-can increase drastically when computing large projects source code. Because it is very useful to know which parts of a project are similar to other ones-contain similar source code, the option of comparing the project to itself was added also. The problem of finding out if duplicated source code is spread out over a single project shouldn't be one anymore. After the metrics have been computed, the detection of clones can be initialised either by comparing projects metrics (overlap of projects metrics and overlap of class comparison between two projects) and/or by a line-by-line comparison with the later also supporting a graphical representation of the cloned lines. When detecting clones, both ways should be taken in account. For validation purposes different editions of the JJTraveler tool and some students projects were used.

Team

Supervision

AulDuv 19 Jan 2005 - 10:24 - r4 OlgaPacheco

Aulas de Dúvidas

Dia Hora Local
20 de Janeiro 14h-18h DI-A2
31 de Janeiro 14h a definir
1 de Fevereiro 14h a definir
ChopaChopsAFPProject 04 Mar 2005 - 19:36 - r5 JoaoPBarbosa

ChopaChops: view and manipulate Java program graphs

Powered by Chocapic!

Student: Patrick Machado

In this project you will develop an interactive tool to view and manipulate various kinds of graphical representations of Java programs. Your starting point is an initial version of the tool (called ChopaChops) that can already:

  • a. parse Java
  • b. derive inheritance, import, and nesting relations
  • c. display these relations in a graph
  • d. perform slicing and chopping on this graph
Starting from this basis, you can make improvements such as:
  • e. derive data flow and control flow relations
  • f. compute some graph-based program metrics
  • g. support more graph manipulations
  • h. improve the interactive interface

You will be using and extending functionality offered by the UMinho Haskell Libraries to accomplish these tasks.

Paper Presentation

Project Report

Presentations

-- PatrickMachado? - 15 Dec 2004

Recomended Literature

  1. A Survey of Program Slicing Techniques, Frank Tip, 1994
  2. The Use of Program Dependence Graphs in Software Engineering, Susan Horwits and Thomas Reps, 1992
  3. Graph Theoretic Foundations of Program Slicing and Integration, Arun Lakhotia, 1993

-- JoaoSaraiva - 27 Oct 2004

ChopaChopsAFPProjectReport 04 Mar 2005 - 19:36 - r7 PatrickMachado?

Chopachops Report

This page is under construction...

Introdution

ChopaChops is a project for slicing and chopping in program graphs. Starting from the Java program source code, this tool can generate graphs with relation information.

Objectives

Work already done - PackageGraphs

On the moment I took the project, much work was already done. ChopaChops could already do things like:

  • Java parsing to an haskell abstract syntax tree
  • Creation of Package Graphs, which contains class-based relations like:
    • Imports
    • Inheritance
    • Implementation
    • Nesting
  • Visualization of these relations in a graph
  • Metrics on graphs
  • Implementation of slicing and chopping on the graphs

My Extension - Call Graphs

Starting from the work done, I extended the libraries, adding some method-based relations:

  • Method invocation
  • Method nesting in classes

Call Graphs in haskell

-- | Call Graphs are labeled relations
type TWiki.CallGraph
  = LRel CGNode CGNode TWiki.CGEdgeType

-- | A node may be either a Class or a Method
data CGNode = CGClass TWiki.ClassName
            | CGMethod  TWiki.ClassName TWiki.MethodName [ParameterType]
...
-- | Function to create a TWiki.CallGraph for an AST
java2ccg :: (Term a, TWiki.MonadPlus m) 
           => CGNode                     -- Current node  
           -> Declarations               -- Declarations context
           -> a                                -- Term to convert to Call Graph
           -> m TWiki.CallGraph

-- | Function to convert a Call Graph to dot format, ready to feed the TWiki.GraphViz tool
cg2dot :: String -> TWiki.CallGraph -> String

Declarations Environment

I provide a basic API for Declarations manipulation

Here is an extract of it:

emptyDec :: Declarations
appendDec :: Declarations -> Declarations -> Declarations
addGlobalDec :: Declarations -> (TWiki.ClassName, TWiki.MemberName) -> TWiki.TypeName -> Declarations
...
-- | General funcion for getting a variable's/member's type
getType :: (TWiki.MonadPlus m) => Declarations -> TWiki.ClassName -> TWiki.MemberName -> m TWiki.TypeName

-- | Generic function to collect global variable declarations, providing the AST
collectMembers :: (Term a, TWiki.MonadPlus m) => TWiki.ClassName -> a -> m Declarations

Type Inference System

To determine which classes were getting method invocations, it was necessary to buid a type inference system. To accomplish that task I used strafunsky to do generic AST traversals. So, I came up wit a function called findTypeOf which has the flollowing type signature:

findTypeOf :: (Term a, MonadPlus m) => Declarations -> ClassName -> a -> m TypeName

This function (tries) to find out the type of any entity, provided it is an instance of Term. We have to provide the environment (Declarations) and the class name on wich we are trying to find the type of an entity.

The Tool - ChopaChopsOnline

ChopaChopsOnline is a tool, developed with WASH, wich interfaces the developed librarires with the user. Basicaly, it is a web , wich can be run from a Web Server. The user, with this tool, can perform operations like:

  • Upload zip archives, containing Java source files (all other filetypes are simply discarded)
  • Visualize both Package and Call Graphs
  • Visualize some graph metrics such as:
    • Tree impurity
    • Level count (strongly connected components)
    • Non singleton levels
    • Size of the largest level
    • ...

  • Perform slicing and chopping on these graphs (Package and Call graphs), given the sources and sinks sets

Web interface:
Web interface

Chopping:
Chpping

Example

  • Class Foo:
    Code foo

  • Class Bar:
    Code bar

  • Callgraph:
    Callgraph

Future Work

Although much progress has been done regarding program slicing, I must state that this project is far from being a complete approach to Java Program Slicing.

So, there is still much work to do in the future, to extend this tool. I will enumerate some ways to evolve, although there may be others:

  • Extend the type inference system to support more types
  • Compute more graph metrics
  • Continue to move to lower level relations:
    • Data flow
    • Control

Problems

  • Hard to understand big graphs (real world java programs)
  • Type inference system not fully implemented
  • Not working with compiled classes
  • Does not handle some java features
    • Inheritance / Implementation
    • Static methods
    • Exception handling

Conclusion

  • Nice progresses towards full program slicing in Java
  • At the moment there is no support for many Java features
  • Easy to extend
  • Part of the UMinho Haskell Library
    • ChopaChopsOnline (tools)
    • CallGraph?
  • Much work to be done in the future...
CloneDetectionAFPProject 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Home Page for the AdvancedFunctionalProgramming Project "Clone Detection in Haskell".

To be filled with abundant and pertinent information. smile

Work-in-progress project page: http://www.patanisca.com/clones/

-- GuilhermeLopes - 28 Oct 2005

ComputacaoNatural 28 Feb 2005 - 20:56 - NEW RuiMendes
Eis a página da disciplina: http://colombo.di.uminho.pt/cnat

-- RuiMendes - 28 Feb 2005

DSINews 15 May 2006 - 09:30 - r10 OlgaPacheco
Aula 1 -- 23 de Fevereiro
Não houve aula. Motivo: Simpósio doutoral do DI.

Aula 2 -- 2 de Março
Apresentação da disciplina. Apresentação do trabalho prático 1.

Aula 3 -- 9 de Março
E-learning. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 4 -- 16 de Março
Open Source Software. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 5 -- 23 de Março
Introdução ao Latex. Apresentação de exemplos.

Aula 6 -- 30 de Março
Realização do trabalho prático 1.

Aula 7 -- 6 de Abril
Introdução ao UML. Diagramas de casos de uso. Realização do trabalho prático 1.

Aula 8 -- 20 de Abril
Não houve aula. Motivo: doença.

Aula 9 -- 27 de Abril
Apresentação oral do trabalho nº 1.

Aula 10 -- 4 de Maio
UML: Diagramas de actividade e diagramas de transição de estados. Resolução de exercícios.

Aula 11 -- 11 de Maio
UML: Diagramas de classes. Resolução de exercícios.

Aula 12 -- 18 de Maio
Não há aula. Motivo: Enterro da Gata.

Aula 13 -- 25 de Maio
UML: Resolução de exercícios.

Aula 14 -- 1 de Junho
Apresentação oral do trabalho nº 2.

DesenvolvimentoSistemasInformacao 21 Jul 2006 - 10:44 - r30 OlgaPacheco
Sumários

Aula 1 -- 23 de Fevereiro
Não houve aula. Motivo: Simpósio doutoral do DI.

Aula 2 -- 2 de Março
Apresentação da disciplina. Apresentação do trabalho prático 1.

Aula 3 -- 9 de Março
E-learning. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 4 -- 16 de Março
Open Source Software. Apresentação do conceito e análise de alguns documentos sobre o tema.

Aula 5 -- 23 de Março
Introdução ao Latex. Apresentação de exemplos.

Aula 6 -- 30 de Março
Realização do trabalho prático 1.

Aula 7 -- 6 de Abril
Introdução ao UML. Diagramas de casos de uso. Realização do trabalho prático 1.

Aula 8 -- 20 de Abril
Não houve aula. Motivo: doença.

Aula 9 -- 27 de Abril
Apresentação oral do trabalho nº 1.

Aula 10 -- 4 de Maio
UML: Diagramas de actividade e diagramas de transição de estados. Resolução de exercícios.

Aula 11 -- 11 de Maio
UML: Diagramas de classes. Resolução de exercícios.

Aula 12 -- 18 de Maio
Não há aula. Motivo: Enterro da Gata.

Aula 13 -- 25 de Maio
UML: Resolução de exercícios.

Aula 14 -- 1 de Junho
Apresentação oral do trabalho nº 2.

Desenvolvimento de Sistemas de Informação

Licenciatura em Administração Pública
3º Ano - 2º Semestre
Ano lectivo 2005/2006

........................................................................................................Anos Anteriores


Avisos

  • Dúvidas sobre as notas: contactar docente no dia 17 de Julho (a partir das 11h).

Programa Resumido

  • Open Source Software (OSS)
    • Que oportunidades para a Administração Pública?
    • Alguns produtos.
    • Experiências de utilização.

  • E-Learning na Administração Pública.

  • UML (Unified Modelling Language).
    • Diagramas de Casos de Uso.
    • Diagramas de Classes.
    • Diagramas de Actividade.
    • Diagramas de Transição de Estados.
    • Casos de Estudo.

  • Discussão: Desenvolvimento de Sistemas de Informação para a Administração Pública: (que desafios / que propostas)?.

Programa detalhado

Bibliografia

  • G. Booch, J. Rumbaugh, I. Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, 1998.
  • J. Rumbaugh, I. Jacobson, G. Booch. The Unified Modeling Language Reference Manual. Addison-Wesley, 1999.
  • M. Fowler. UML Distilled, Third Edition. Addison-Wesley,2004.

Critérios de Avaliação

  • Nota Final = 80% Nota Prática + 20% Avaliação Continua.
    • Nota Prática: 2 trabalhos práticos realizados em grupos de 2 elementos.

Equipa Docente

Olga Pacheco (contacto)

Horário Lectivo

Turnos Horário Sala
TP 5ªfeira 14:00-17:00 DI - 0.02

Horário de Atendimento

Docente Horário
Olga Pacheco 5ªfeira 10:00-12:00

Fontes de Informação Adicionais

Slides das Aulas

Leituras Recomendadas

OSS

eLearning

Latex

Links Úteis

e-learning

UML

OSS

Trabalhos Práticos

Exames

Avaliação

Grupo Aluno TP nº1 TP nº2 Exame de Recurso Nota Final
1 37404 David Moreira Martins - - 12 12
1 37648 Valter Bruno Ferreira Martins - - 14 14
2 37547 Paulo Tiago Pinto Leal Martins 15 15   15
2 37629 Marta Maia Sá 15 15   15
3 37408 Óscar José Silva da Oliveira Vaz 18 15   17
3 37414 Sérgio Filipe Ferreira Araújo 16 15   16
4 41209 Marta Mariana Oliveira Campelo Silva 13 16   15
4 39978 Adérito Filipe de Sá Fernandes 13 16   15
5 37128 Andreia Marisa Alves da Silva 15 13   14
5 34668 Filipa Margarida Fagundes Guia 15 13   14
6 39986 Daniela Maria Miranda 16 12   14
6 39970 Ricardo Jorge Gonçalves Vilela 16 12   14
7 39380 Sónia Elisabete Fernandes Lopes 15 15   15
7 39979 Odete da Conceição Ribeiro da Silva 15 15   15
8 39505 José Tiago Saleiro Almeida Costa 17 12   15
9 39992 Christine Maria Pires Carreiro 16 16   16
9 31418 Maria Teresa Vieira da Costa 16 16   16


(Ultima Actualização: 2006/07/10)
DisambiguationGLR 03 Mar 2005 - 16:27 - r2 JoostVisser

Embedding Disambiguation Rules in the HaGLR System

Student: Luís Pedro Machado

In this project we will embed a domain specific language to express disambiguation rules in the HaGLR system: A Generalised LR parser generator. Such disambiguation rules "work" very much like precedence and priority rules used by YACC-like systems. Traditional techniques use a language processor for processing the disambiguation "language" and, then, combine them with the parser (either buy applying such rules at parse time , or by applying them as a filter over the resulting set of abstract syntax trees).
The UMinho Haskell Libraries already provide support for:

  • a. Generalised LR parsing. The HaGLR system is a GLR parser generator.
  • b. Parsing SDF grammars, that includes a large set of real programming language grammars defintions.
  • c. The construction and visualization of the resulting XML parse trees.

You will define a language to express disambiguation rules (based on exiting ones). Then you will implement a function that given a sentence of that langauge (ie, a set of rules) and the resulting parse forest and it selects the right tree(s).

Recomended Literature

  1. Disambiguation Filters for Scannerless Generalized LR Parsers, M.G.J. van den Brand, J. Scheerder, J.J. Vinju, and E. Visser, 2002
  2. Pure Functional Parsing, Peter Ljunglof, 2002
  3. Parser Generation for Interactive Environments, J. Rekers, 1992
EDFS 26 Jan 2007 - 18:04 - r11 LuisSoaresBarbosa
SumáriosAulas

T (2006.10.21a): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

T (2006.10.21b): Introdução à modelação de sistemas computacionais em VDM-SL. Tipos e invariantes. Especificação de operações. Estudo de um caso.

T (2006.11.04a): Conclusão da aula anterior. Apresentação da ferramenta VDMTools.

T (2006.11.04b): A linguagem de especificação VDM-SL: expressão de propriedades em lógica de 1a ordem. Problemas de definição.

T (2006.11.11a e 11b): Não houve aula.

T (2006.12.9a): A linguagem de especificação VDM-SL: modelação de problemas com conjuntos e sequências. Polimorfismo e ordem superior (exemplos). Especificação ímplicita vs explícita. Funções vs operações. Exemplo: cálculo da raíz quadrada (especificação disponível aqui).

T (2006.12.9b): A linguagem de especificação VDM-SL: modelação de problemas com correspondências. O caso do sistema de gestão de contas bancárias. Especificação funcional (BAMS) e orientada ao estado (SBAMS).

T (2006.12.16a): Aula laboratorial em VDMTools.

T (2006.12.16b): Aula laboratorial em VDMTools.

T (2007.01.20a): Estudo de caso em modelação VDM: multiconjuntos.

T (2007.01.20b): Discussão dos projectos individuais de modelação.

T (2007.01.27a): Estudo de caso em modelação VDM: o espaço de endereçamento web.

T (2007.01.27b): Acompanhamento dos projectos individuais de modelação.

-- LuisSoaresBarbosa - 27 Jan 2007

Especificação e Desenvolvimento Formal de Software

2006-2007


Equipa Docente

Horário

Tipo Horário Sala
T Sab: 09-13 h DI 022

Horário de Atendimento

Docente Horário
Luís S. Barbosa 6as 8.30-10

Nota: sujeito a marcação prévia (verbal ou por email) com o docente.

Programa Resumido

  • Introdução ao problema do controlo de qualidade em `software' . Especificação formal -- porquê e para quê? Introdução aos binómio especificação /implementação.
  • Ciclo de vida do software usando métodos formais. Redução do risco e dos custos. Áreas típicas de aplicação. Sistemas críticos e confiáveis. Qualidade de serviços.
  • Linguagens e métodos para especificação formal. Antecendentes históricos. Do método de Viena (VDM) ao `standard' ISO/IEC 13817-1 (VDM-SL).
  • Estudo da notação VDM-SL. Modelação por conjuntos, sequências e funções finitas. Especificação por pré/pós-condições. Invariantes. Obrigações de prova.
  • Prototipagem e animação. Experiência com a utilização do ambiente VDMTOOLS.
  • Especificação por modelos orientada aos objectos. Estudo de VDM++.

Critérios de Avaliação

Projecto individual ou exame final de acordo com o regulamento aplicável. A opção por um projecto está dependente da concordância do docente. Os temas deverão ser propostos pelos alunos.

Acetatos e Textos de Apoio

  • Formal Methods in Software Engineering (slides)
  • An Introduction to Formal Modelling (slides)
  • Guião para treino individualizado em VDMTOOLS.
  • A Brief Introduction to VDM-SL (slides)

  • Lição 1: Modelling in VDM-SL (slides)
  • Lição 2: Expressing Logic Constraints (slides)
  • Lição 3: Model Construction (slides)
  • Lição 4: Modelling with Sets (slides)
  • Lição 5: Modelling with Mappings (slides)
  • Lição 6: Modelling with Sequences (slides)
  • Lição 7: Recursion in Specifications (slides)

VDMTOOLS

  • Uma versão pública da ferramenta VDMTools está disponível aqui

Bibliografia


-- LuisSoaresBarbosa - 26 Jan 2007

EDFSSum 26 Jan 2007 - 18:00 - r13 LuisSoaresBarbosa
T (2006.10.21a): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

T (2006.10.21b): Introdução à modelação de sistemas computacionais em VDM-SL. Tipos e invariantes. Especificação de operações. Estudo de um caso.

T (2006.11.04a): Conclusão da aula anterior. Apresentação da ferramenta VDMTools.

T (2006.11.04b): A linguagem de especificação VDM-SL: expressão de propriedades em lógica de 1a ordem. Problemas de definição.

T (2006.11.11a e 11b): Não houve aula.

T (2006.12.9a): A linguagem de especificação VDM-SL: modelação de problemas com conjuntos e sequências. Polimorfismo e ordem superior (exemplos). Especificação ímplicita vs explícita. Funções vs operações. Exemplo: cálculo da raíz quadrada (especificação disponível aqui).

T (2006.12.9b): A linguagem de especificação VDM-SL: modelação de problemas com correspondências. O caso do sistema de gestão de contas bancárias. Especificação funcional (BAMS) e orientada ao estado (SBAMS).

T (2006.12.16a): Aula laboratorial em VDMTools.

T (2006.12.16b): Aula laboratorial em VDMTools.

T (2007.01.20a): Estudo de caso em modelação VDM: multiconjuntos.

T (2007.01.20b): Discussão dos projectos individuais de modelação.

T (2007.01.27a): Estudo de caso em modelação VDM: o espaço de endereçamento web.

T (2007.01.27b): Acompanhamento dos projectos individuais de modelação.

-- LuisSoaresBarbosa - 27 Jan 2007

EducationNews 17 Feb 2004 - 13:55 - r7 JoseNunoOliveira
Feb. 17, 2004

May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004

Feb 6, 2004

Students interested in the Overture Project please contact to JNO. (NB: the Overture Modelling Language has great resemblance with VDM++)

Jan 31, 2004

Novas propostas para estágios curriculares em EstagiosProfisionais

January 29, 2004

Invitation to Wiki.

January 21, 2004

We have a new Wiki server for educational purposes!

ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias

18 Out Já saíram as notas do exame da época especial.

27 Jul Já saíram as notas das orais.

22 Jul Já saíram as notas do exame de recurso. As orais serão no dia 27 às 10h00.

11 Jul Já saíram as notas finais da época normal.

5 Jul Quem quiser entregar o projecto prático deverá fazê-lo até ao dia 8 de Julho.

5 Jul As notas da 2a chamada já saíram.

28 Jun As notas da 1a chamada já saíram. As orais serão no dia 7 Julho às 10h00.

5 Abr O enunciado do projecto prático pode ser consultado aqui.

9 Mar Os exemplos das aulas práticas já estão disponíveis para download.

7 Mar A ferramenta DaNAMiCS já está disponível para download.

Elementos Lógicos da Programação 3

Licenciatura em Matemática e Ciências da Computação
3º Ano - 2º Semestre
Ano lectivo 2004-2005


Responsável

Equipa Docente

Docente Atendimento
JoseManuelValenca (T)  
AlcinoCunha (TP) 2a das 9:00 às 11:00, 6a das 10:00 às 12:00

Horário das Aulas

  • Teórica: 3a das 11:00 às 13:00 (DI A1)
  • Teórico-prática:
    • TP1 - 2a das 11:00 às 13:00 (DI 0.11)
    • TP2 - 5a das 11:00 às 13:00 (DI 0.11)

Programa Detalhado

  • Redes de Petri
    • Modelação de sistemas concorrentes com redes de Petri.
    • Cálculo de matrizes de incidência.
    • Semântica operacional baseada em sistemas de transição de estados.
    • Propriedades fundamentais de redes: finitude, animação e invertibilidade.
    • Cálculo de invariantes de estado.
    • Extensões às redes não coloridas: lugares com capacidade explicita e arcos inibidores.
    • Redes coloridas.
    • Ferramentas para especificação e animação de redes de Petri (DaNAMiCS, PEP).
  • Verificação de modelos
    • Especificação de propriedades de segurança e animação usando lógica temporal.
    • Lógicas CTL*, CTL e LTL.
    • Representação mínima de fórmulas CTL.
    • Verificação directa de modelos para a lógica CTL.
    • Representação da relação de acessibilidade usando lógica proposicional.
    • Verificação simbólica de modelos para a lógica CTL baseada em OBDDs.
    • Ferramentas para verificação simbólica de modelos (SMV).

Critério de Avaliação

  • Hipótese 1
    • Exame Teórico (100%)
  • Hipótese 2

  • Notas finais época recurso (notas)
  • Notas finais época normal (notas)
  • Notas finais época especial (notas)

Exames

Exemplos

  • Aula 2
    • Partida (bim) e Corrida (bim)
    • Semáforo seguro (bim) e justo (bim)
  • Aula 3
    • Produtor consumidor (bim)
  • Aula 4
    • Produtor consumidor com 2 buffers sequenciais (bim) e paralelos (bim)
    • Bolas vermelhas e pretas (bim)
  • Aula 5
    • 2 produtores com prioridade (bim) e depois do unfold (bim).
    • Biblioteca (bim, bim, bim) e depois do unfold (bim)
    • Conferência (bim)
  • SMV
    • Exclusão mútua (smv), biblioteca (smv) e cache (smv)
  • Exames
    • Rãs e Princesa normal (bim) e de 3 em 3 (bim).
    • Elevador (smv)
    • Slot machine (bim) sem moedeiro temporário (bim).
    • Braço mecânico (bim)
    • Exercício 3 da 2a chamada (smv).

Bibliografia

  • Petri Nets for Systems Engineering: A Guide to Modeling, Verification, and Applications, Claude Girault and Rüdiger Valk (editors). Springer-Verlag 2003.
  • Elements of Distributed Algorithms: modeling and analysis with petri nets, Wolfgang Reisig. Springer-Verlag 1998.
  • Model Checking, Edmund M. Clarke Jr., Orna Grumberg, and Doron A. Peled. MIT Press 2001.

Apontadores WEB

Edições Anteriores

ElementosLogicosProgramacaoIII0304 12 Feb 2007 - 19:15 - r12 JoseBacelarAlmeida

Elementos Lógicos da Programação III

Licenciatura de Matemática e Ciências da Computação
3º Ano - 2º Semestre
Ano lectivo 2003/2004

Ùltima alteração: 12/07/2004


Avisos

  • 29/07: Já disponíveis as notas da época de recurso (Notas).
  • 12/07: Já disponíveis as notas da 1ª e 2ª chamadas (Notas).
  • 07/05: Já disponível o enunciado dos projectos práticos.
  • 22/03: Disponíveis duas novas secções nesta página: Elementos de Estudo e Apontadores WEB.
  • 25/02: Nos dias 2 e 3 de Março (segunda e terça) não haverá aulas Teórico-Práticas de ElementosLogicosProgramacaoIII0304.
  • 25/02: Este ano a página da disciplina é alojada no WIKI. Contacte um docente se pretender colaborar na manutenção da página.

Programa

Programa Resumido

  • Redes de Petri
  • Introdução aos modelos da concorrência
    • Sistemas de transição de estados: bissimulação.
    • Estruturas de eventos/redes de ocorrências.
  • Redes de Petri coloridas
  • Verificação de Modelos
    • Lógicas temporais: CTL e CTL+
    • Verificação simbólica

Programa Detalhado

Bibliografia

Bibliografia Recomendada:

  • Elements of Distributed Algorithms: modeling and analysis with petri nets; Wolfgang Reisig. Springer-Verlag 1998.
  • Model Checking; Edmund M. Clarke Jr., Orna Grumberg, and Doron A. Peled. MIT Press 2001.

Elementos de Estudo

  • 16/04 Uma nova versão do Animador que já suporta redes coloridas (Net2.tgz)
  • 05/04 Nova verão dos módulos do Animador que fazem uso de multi-parameter type classes para permitir um maior nível de abstracção. (Net.tgz) --- Obs.: Para executar estes módulos devem-se passar as seguintes opções ao GHC: "-fglasgow-exts -fallow-undecidable-instances".
  • 05/04 Versões simplificadas do animador de redes de Petri apresentado na teórica:
    • Versão I - Não define novas classes; utiliza o transformador de estados da biblioteca. (RPetri.hs)
    • Versão II - Evita a utilização do monad de estado. (RPetri2.hs)
  • 05/04 Várias resoluções para os exercícios da aula sobre o Monad de Estado:
    • Versão I - Monad definido explicitamente (como foi apresentado na aula prática). (StateEx1.hs)
    • Versão II - Usando a biblioteca standard. (StateEx2.hs)
    • Versão III - Usando State threads. (StateEx3.hs)
  • 22/03 Programa em Haskell para animação de Redes de Petri demonstrado nas aulas teóricas: (rp-jmv.tgz)

Apontadores WEB

Projectos Práticos

Horário e Equipa docente

Horário Lectivo:

Teóricas Práticas
  2ª, das 10:00 às 11:00 (sala CP1.A2)   TP1 , 2ª, das 14:00 às 16:00 (sala DI 0.11)  
5ª, das 9:00 às 10:00 (sala CP2.103) TP2 , 3ª, das 9:00 às 11:00 (sala DI 0.11)

Horário de Atendimento:

JMV JBA
    2ª, das 11:00 às 13:00  
    2ª, das 16:00 às 19:00  

Critério de Avaliação

Nota final é calculada com base nas seguintes componentes:

Componente Teórica (Exame) - OBRIGATÓRIA - peso nunca inferior a 60% (nota mínima de 8 valores).
Componente Prática - FACULTATIVA - com peso máximo de 30%.

A componente prática consiste na realização de um projecto.

Notas

  • Notas das épocas normais e de recurso (PDF)
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial.

27 Jul Já saíram as notas das orais.

22 Jul Já saíram as notas do exame de recurso. As orais serão no dia 27 às 10h00.

11 Jul Já saíram as notas finais da época normal.

5 Jul Quem quiser entregar o projecto prático deverá fazê-lo até ao dia 8 de Julho.

5 Jul As notas da 2a chamada já saíram.

28 Jun As notas da 1a chamada já saíram. As orais serão no dia 7 Julho às 10h00.

5 Abr O enunciado do projecto prático pode ser consultado aqui.

9 Mar Os exemplos das aulas práticas já estão disponíveis para download.

7 Mar A ferramenta DaNAMiCS já está disponível para download.

ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha

Elementos Lógicos da Programação III

Projecto Prático

Pretende-se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model checking SMV. Na modelação deve começar por usar uma rede colorida e depois fazer a seu expansão para uma rede normal. Nesta operação pode começar por usar capacidades e arcos inibidores, que depois deverão ser eliminados usando as regras de transformação já ensinadas. Para cada problema são enumeradas algumas propriedades que devem ser verificadas pela solução apresentada. Sempre que possível devem ser demonstradas usando técnicas estruturais (como invariantes de lugar), mas também usando model checking. Para tal terão que ser traduzidas em fórmulas CTL equivalentes. Sempre que desejarem, podem enriquecer a especificação adicionando novas características ao modelo ou novas propriedades para verificar. Naturalmente, tal será valorizado na nota final.

O projecto é facultativo. Deverá ser realizado em grupos com o máximo de dois alunos. A apresentação será em data a combinar, devendo na mesma ser entregue um pequeno relatório com a descrição das tarefas realizadas.

ATENÇÃO: esta página será alterada consoante a necessidade de clarificar o enunciado.

Sistema de Transporte

Pretende-se modelar um sistema de transporte de uma linha de produção. Esta é constítuida por uma série de mesas, existindo um braço robotizado entre cada par de mesas. O braço robotizado pode estar em três posições diferentes (A, B e C), podendo mover-se para a esquerda ou para a direita. Também possui uma garra que lhe permtite apanhar uma peça numa mesa e transportá-la para a seguinte. Considere também que existe um produtor que coloca as peças na primeira mesa e um consumidor que as retira da última.

Trans.jpg

Algumas das propriedades que a sistema modelado deve verificar são:

  • Cada mesa pode conter no máximo uma peça.
  • Não deve possível colocar uma peça na mesa i se o robot i está na posição A.
  • Nomeadamente, nunca deve ser possível o robot i estar na posição C e o robot i+1 na posição A.
  • Os motores de deslocamento para a esquerda e para a direita não podem estar activos simultaneamente.
  • Qualquer peça que seja colocada na primeira mesa deve eventualmente chegar à última.
  • Não existem deadlocks.

Exclusão Mútua Distribuída

Pretende-se implementar um algoritmo de exclusão mútua distribuído, ou seja sem nenhum controlador centralizado. O mesmo será baseado no conceito token ring. As diversas unidades funcionais estão ligadas através de um anel de comunicação onde circula uma marca. Sempre que uma unidade pretende entrar na zona crítica deverá retirar esta marca do anel, devendo a mesma ser propagada para a unidade seguinte quando não for necessária. A seguinte imagem apresenta um esquema da rede de petri que modela este problema, para o caso em que temos três unidades funcionais, estando uma delas detalhada.

Ring.jpg

Cada unidade é constituída por dois módulos:

  • O primeiro, cuja rede se encontra detalhada, representa o componente que pretende usar o recurso crítico. Tem três estados possíveis: Idle, quando está a realizar tarefas que não envolvem o recurso crítico; Waiting, quando está à espera de usar o recurso crítico; e Critical, quando está na zona de exclusão mútua.
  • O segundo é o controlador que irá implementar o protocolo, e cuja especificação é o objectivo deste projecto.

A comunicação entre os dois componentes é feita assincronamente usando os lugares Req (request), Prm (permission), e Rdy (ready). O primeiro é usado para sinalizar a vontade de usar o recurso crítico. O segundo é usado pelo controlador para dar autorização ao outro componente para entrar na zona crítica, e o último serve para este indicar que já terminou a utilização do recurso crítico. O controlador também tem acesso ao anel onde circula a marca. Sempre que deseje, pode retirar a mesma da sua porta de entrada (Tok) ou transferi-la para a unidade funcional que lhe sucede no anel.

Algumas das propriedades que a solução deve verificar são:

  • Não existem duas unidades simultaneamente na zona crítica.
  • Não existem deadlocks.
  • Nunca existe mais do que uma marca a circular no anel.
  • Qualquer unidade que pretenda utilizar o recurso crítico poderá eventualmente fazê-lo.
  • Uma unidade não poderá utilizar o recurso crítico duas vezes seguidas se outra unidade também o pretender utilizar.
  • A marca não deve circular desnecessariamente pelo anel. Só o deverá fazer se alguma unidade requisitar o acesso à zona crítica.

Para poder satisfazer esta última propriedade poderá ser necessário adicionar um segundo anel de comunicação (com sentido inverso) onde circulam pedidos para libertar a marca.

EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project



Grammar Engineering

Location: Vrije Universiteit or CWI in Amsterdam, The Netherlands.

In many areas of computing, languages play a central role. Programming languages, data definition languages, scripting languages, mark-up-languages, query languages, etc. Unfortunately, it is common practise in software engineering to apply mostly ad-hoc techniques when dealing with language syntaxes. Grammar Engineering seeks to remedy this situation by regarding grammars as valueable software artifacts, and applying good engineering practises to their development, deployment, and maintenance.

In this project you will implement a tool-suite for Grammar Engineering. The tool-suite will include (i) support for grammar reconstruction from language reference manuals, (ii) a combinator library for reshaping grammars, and (iii) support for generating parsers, XML shema's, transformation libraries, and other software components from grammars. Your tool-suite will use the Syntax Definition Formalism (SDF) as internal representation format. To design your tool-suite you will take inspiration from published work and previously developed prototypes.

The implementation of this tool-suite will normally require some technology that it is fit to implement all of the above components while this technology should then also benefit from the provided components. Here are some options:

  • A Haskell-centric approach with combinator parsing.
  • An ASF+SDF Meta-Environment approach with its SGLR parsing technology.
  • General-purpose programming languages and main-stream parser generators like ANTLR.

For example, in the Haskell scenario, the tool-suite is implemented in Haskell and it would be useful for the Haskell programmer. That is, the tool-suite would then help with deploying Haskell-based parsers, XML components and others while processing SDF grammars as input.

See also: the Grammar Ware page.

Supervisors: Ralf Laemmel (VU & CWI, The Netherlands), JoostVisser (UMinho)


Benchmarking Generic Programs

Location: Vrije Universiteit or CWI in Amsterdam, The Netherlands.

Generic Programming encompasses programming techniques that allow the construction of programs that work for just about any kind of data type. Examples of generic programming solutions are Strafunski, traversal functions in ASF+SDF, Generic Haskell, Polytypic Programming, and visitor combinators.

In this project you will perform thorough benchmarking of various generic programming approaches, and investigate some options for improving the efficiency of generic programs. To this end, you will develop a benchmark suite of generic programming problems, and corresponding solutions for each approach under scrutiny. You will investigate both time and space consumption by the various approaches. You will publish your benchmark suite and the results of running it on the internet, such that in future others can take advantage of it when comparing and evaluating generic programming approaches in future.

Supervisors: Ralf Laemmel (VU & CWI, The Netherlands), JoostVisser (UMinho)

FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home

Navegação

Changes | Index | Search | Go

Disciplinas

MP1
MP2
PFA?

FlexibleSkinStyleSheet 21 Jan 2004 - 22:20 - r2 AlcinoCunha
%STARTINCLUDE%

body {
  background-color : lightgray;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 12px ;
}

a:link    { text-decoration : none ; color : darkblue ; }
a:visited { text-decoration : none ; color : darkblue ; }
a:hover   { text-decoration : none ; color : darkred ; }
a:active  { text-decoration : none ; color : darkred ; }

div.WebLeftBar a:link    { text-decoration : none ; color : #444444 ; }
div.WebLeftBar a:visited { text-decoration : none ; color : #444444 ; }
div.WebLeftBar a:hover   { text-decoration : none ; color : darkred ; }
div.WebLeftBar a:active  { text-decoration : none ; color : darkred ; }

hr { color : black ; border : solid 0 ; padding : 0 ; background-color : darkgray; height : 1px}

div.WebTopBar {
  background : white ;
  border : solid ;  
  border-width : 1px ;
  border-color : darkgray; 
  font-size : 200% ;
  font-style : italic ;
  margin: 0em ;
  padding : 0.5em ;
}

.WebTopMenuBar {
  background : %WEBBGCOLOR%;
  border : solid ;
  border-width : 1px;  
  border-color : %WEBBGCOLOR%; 
/*  width : 100% ; */
  margin: 0em ;
  padding : 0.5em ;
}

.WebContentCanvas {
  background : %WEBBGCOLOR% ;
  border: solid ;
  border-right-width : 1px;  
  border-left-width : 1px;  
  border-bottom-width : 1px;  
  border-top-width : 0em;  
  border-color: darkgray; 
  margin: 0em ;
  padding : 0em ;
}

.ContentTopicTitle {
  font-size : 150% ;
}

H1, H2, H3, H4, H5, H6 { 
  display: block 
}

H1 { margin-top: 0em; margin-bottom: 1em }
H2, H3, H4 { margin-top: 1em; margin-bottom: 1em }
H5, H6 { margin-top: 1em }
//H1 { text-align: center }
H1, H2, H4, H6 { font-weight: bold }
H3, H5 { font-style: italic }

H1 { font-size: xx-large }
H2 { font-size: x-large }
H3 { font-size: large }

.WebLeftBar {
  vertical-align : top ;
  background : %WEBBGCOLOR% ;
  border: 0em;
  width : 120px ; 
  font-size : 90% ;
  color : #444444 ;
  float : left; 
  margin: 0em ;
  padding-left : 10px ;
  padding-top : 10px ;
  padding-right : 10px ;
  padding-bottom : 10px ;
}

.newsbar {
  font-size : 85% ;
}

.WebContent {
  position : scroll ;
  vertical-align : top ;
  background : white ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 1px;  
  border-top-width: 1px;  
  border-bottom-width: 1px;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 140px ;;
}

.WebContentSolo {
  position : scroll ;
  vertical-align : top ;
  background : white ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 0em;  
  border-top-width: 0em;  
  border-bottom-width: 0em;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 0px ;;
}

/* Show the "PREVIEW" word in the background when previewing a topic: */
.WebPreview {
  background: url('%PUBURL%/TWiki/PreviewBackground/previewbg.gif');
  vertical-align : top ;
  border: solid; 
  border-left-width: 1px;  
  border-right-width: 1px;  
  border-top-width: 1px;  
  border-bottom-width: 1px;  
  border-color: darkgray; 
  padding-top : 20px ;
  padding-left : 20px ;
  padding-right : 20px ;
  padding-bottom : 10px ;
  margin-top: 0em ;
  margin-left: 140px ;;

}



/* Make warnings appear in red, bold text: */
font.warn
{
  color: red;
  font-weight: bold;
}

%STOPINCLUDE%
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
FlexibleSkinTopicFooter 21 Jan 2004 - 22:16 - NEW AlcinoCunha

{ Edit | Attach | Ref-By | Printable | Diffs | More... }

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

FlexibleSkinTopicHeader 21 Jan 2004 - 22:08 - NEW AlcinoCunha
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida

Haskell Biding to GraphViz

HaskellGraphViz

Student: João Paulo Barbosa

Overview

This project consists of creating a Haskell binding to AT&T's GraphViz library. This involves using a Foreign Function Interface (FFI) to invoke the C functions of the GraphViz library from within Haskell. To simplify the task of writing this FFI invocations, a tool named GreenCard is beeing used. Next, an abstraction layer is introduced to hide all the miscelaneous procedures of GraphViz and to provide a simple, but powerfull interface to the Haskell application.

With a minimal binding it's possible to replace the graph visualization support in the HaLex library (generating DOT) by invocations to the foreign functions specified. Also, new instances are declared of the types witch one wants to visualize. HaLex is an instance, since UMinho's Haskell Libraries uses GraphViz widely. This is of course a incremental work and hopefully in the end one could visualize and interact with data.

Implementation

To be updated soon... need to sleep... (Knock, Knock.... wake up.... :)) (Who's there?) (That's me! :))

Greencard

Graphviz

Core

Attribute

Graphable

Layoyt

Render

UI

Future Work

Download

Checkout module Graphics.Graphviz from Research.PURe CVS repository. PUReSoftware

Presentations

Recomended Literature

  1. An open graph visualization system and its applications to software engineering, Emden R. Gansner and Stephen C. North, Software - Practice and Experience, 1999.
  2. Drawing graphs with Graphviz, Emden R. Gansner, 2004.
  3. The Haskell 98 Foreign Function Interface 1.0: An Addendum to the Haskell 98 Report, Manuel Chakravarty (ed.), 2002,2003.

-- JoaoPBarbosa - 04 Mar 2005

IJBib 11 Apr 2005 - 14:57 - r3 JoanaBoas?
fornecida por todos

 
Sobre as ideias básicas de Criptografia (exigindo um pouco de Matemática) um livro importante é o Applied Cryptography de Bruce Schneier.

-- JoseManuelValenca - 08 Mar 2005

Sobre o Liberalismo Político e a Teoria da Justiça consultar o tratado fundamental de John Rawls ou a versão comentada de Jacques Bidet.

-- JoseManuelValenca - 08 Mar 2005

IJNews 05 Jul 2005 - 16:08 - r7 JoseManuelValenca

1 de Março início das aulas -- JoseManuelValenca

8 de Março devido à minha presença num júri não é possível dar a aula deste dia; nesta semana funciona só o turno de 4ª feira. -- JoseManuelValenca

22 e 23 de Março devido a uma reunião em Lisboa não posso dar aulas esta semana. -- JoseManuelValenca

21 de Abril foi criada a primeira página de ensaios que pode servir de exemplo para outras páginas. -- JoseManuelValenca

13 de Junho atenção aos critérios de avaliação dos trabalhos; está definida a escala de classificação na gama D .. A -- JoseManuelValenca

30 de Junho tendo em atenção que dificilmente se conseguirá fazer todas as apresentações nos dias 8 e 9 de Julho, continuaremos essas apresentações no dia 14 às 9:00 horas -- JoseManuelValenca

5 de Julho atendendo ao elevado número de possíveis apresentações (cerca de 90) não é logisticamente possível realiza-las como estava acordado. Por isso é necessário alterar as condições de apresentação como se indica nesta página. Ficam sem efeito as datas de apresentação de 8, 9 de Julho; as apresentações serão efectuadas numa dada a combinar com cada um dos alunos interessados. -- JoseManuelValenca

InformaticaJuridica 22 Feb 2007 - 11:54 - r64 JoseManuelValenca

Informática Jurídica

Licenciatura em Direito
4º Ano - 2º Semestre
Ano lectivo 2005/2006


Programa

  • Segurança Informática

Programa detalhado

Bibliografia

ver tópico anexo

Critérios de Avaliação

  • [Opção A] Só avaliação teórica.
  • [Opção B] Avaliação teórica e a valiação pratica.
    • Componente teórica: Exame escrito (com eventual prova oral).
    • Componente pratica: dois a cinco ensaios em cada um dos temas de estudo com as seguintes características:
      • Trabalho de grupo de 2/3 pessoas, versando a análise, levantamento de informação e bibliografia sobre um caso/exemplo referido nas aulas,
      • limitados a 2000 palavras excluindo bibliografia,
      • possibilidade (sorteada) de apresentação oral.
    • O peso relativo das duas componentes da avaliação depende do número de ensaios; o peso da componente pratica é 40% para 2 ensaios, 50% para 3 ensaios, 60% para 4 ensaios e 100% para 5 ensaios.
    • A avaliação de cada trabalho é feita tendo em atenção 3 parâmetros: FOCUS (a clareza na concretização de um problema ou questão ética), CONTEÚDO (a precisão e relevância dos factos referidos ou das fontes citadas) e POSIÇÂO (a clareza e justificação da posição ética assimida).
    • Os alunos com avaliação exclusivamente efectuada por trabalhos praticos podem, se assim entenderem e para efeitos de melhoria de nota, apresentar um dos trabalhos que, para o efeito, será seleccionado pelo docente da disciplina.
    • Os trabalhos são enviados em formato PDF, anexos a uma mensagem de correio electrónico enviada ao docente da disciplina. O endereçp de envio tem de ser o endereço institucional do aluno e o assunto deve conter a string "Informática Jurídica" e o número (ou números) do trabalho submetido.

Classificações dos Trabalhos 2007

Trabalhos 2006

Classificações de 2007

Pauta 2006

Equipa Docente

Horário Lectivo

Turnos Horário Sala Docente
TP1 3ªfeira 16:00-18:00 DI A2 jmv
TP2 4ªfeira 11:00-13:00 DI A2 jmv

Horário de Atendimento

Docente Horário
jmv 2ª feira 14:00-16:00
jmv 3ª feira 14:00-16:00
jmv 4ª feira 09:00-11:00

Material Disponibilizado

Aulas Teórico-Práticas

InformaticaJuridicaT10 25 May 2005 - 15:04 - r4 JoseManuelValenca

Ensaios de Helena Ribeiro, Arlindo Barros e Liliana Correia

Sociedade de Informação – Cartão Único de Saúde

 

Voto Electrónico

 

Digitaliação de Livros

 

Comércio Electrónico

 

Cidades Digitais

 

-- JoseManuelValenca - 02 May 2005

-

InformaticaJuridicaT11 07 Jun 2005 - 22:29 - r4 TeresaBizarro?

Ensaios de Regina Fernandes, Teresa Bizarro e Monica Lourenço

Operações bancárias on-line: insegurança ou desconfiança

 

-- TeresaBizarro? - 07 Jun 2005

Declarações Fiscais

 

Cartão Único

 

Requerimento Executivo

 

Hackers

 

-

-- JoseManuelValenca - 04 May 2005

InformaticaJuridicaT12 11 Jun 2005 - 14:53 - r3 JoseManuelValenca

Ensaios de Ana Ferreira, Alexandra Cruz e Michelle Pinto

 
A Avaliação de cada trabalho é feita numa escala de D (insatisfatório), C ou C+ (satisfatório), B ou B+ (bom), A, A+, A++ (muito bom, ...)

-- JoseManuelValenca - 11 Jun 2005

O Comércio Electrónico

 
Trabalho expositivo e um pouco confuso porque não vejo um objectivo claro. Avalio-o em C+

-- JoseManuelValenca - 11 Jun 2005

Phishing

 
Este também é um trabalho expositivo mas está melhor focado e dá alguma informação. Avalio-o como B

-- JoseManuelValenca - 11 Jun 2005

Este também é um trabalho expositivo mas está melhor focado e dá alguma informação. Avalio-o como B

-- JoseManuelValenca - 11 Jun 2005

Registos Criminais

 
Bom trabalho expositivo. Avalio-o como A

-- JoseManuelValenca - 11 Jun 2005

Sistemas de Informação Clínica

 

Voto Electrónico

 

-- JoseManuelValenca - 05 May 2005 -

InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca

Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva

A ASSINATURA DIGITAL

 

Cartões Inteligentes

 

Voto Electrónico

 

Protecção dos Dados Pessoais

 

Correio Electrónico

 

-- JoseManuelValenca - 05 May 2005

-

InformaticaJuridicaT14 01 Jun 2005 - 10:02 - r6 JoseManuelValenca

Ensaios de Joana Vilas Boas e Ana Daniela Barbosa

Que força probatória terá uma mensagem de correio electrónico?

 

O Voto Electrónico

 

eCash

 

Cifra

 

Cartão Único do Cidadão

 

-

-- JoseManuelValenca - 05 May 2005

InformaticaJuridicaT15 09 Jun 2005 - 10:51 - r6 JoseManuelValenca

Ensaios de Rosa Ribeiro, Claudia Cunha e Eva Fanzeres

Assinatura Digital

 

Bases de Dados Genéticos

 

Partilha de Dados Pessoais

 

Novas tecnologias: impacto na sociedade

 

Os Crimes Informáticos

 

-- JoseManuelValenca - 05 May 2005 -

InformaticaJuridicaT16 09 Jun 2005 - 10:53 - r2 JoseManuelValenca

Ensaios de Carlos Macedo

Criptografia

 

Direito vs Informática

 

-- JoseManuelValenca - 06 May 2005

InformaticaJuridicaT17 27 May 2005 - 14:37 - r2 JoseManuelValenca

Ensaios de Ana Peixoto e Paula Lopes

O Uso das Tecnologias de Informação no âmbito do Direito Processual Penal

 

A Utilização das Novas Tecnologias no Local de Trabalho: quais as garantias para os trabalhadores?

 

O Segredo de Justiça no Direito Processual Penal e os “Media”

 

Video-Vigilância e Dados Biométricos

 

Criminalidade Informática

 

-- JoseManuelValenca - 09 May 2005

-

InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca

Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede

Bilhete de Identidade Electrónico

 

BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA”

 

OS DIREITOS DE AUTOR NA INTERNET

 

Menores e Internet:Perigos Iminentes

 

NOVAS TECNOLGIAS E A PRIVACIDADE DO TRABALHADOR: “Big Boss ou Big Brother?”

 

-- JoseManuelValenca - 09 May 2005

InformaticaJuridicaT19 25 May 2005 - 16:02 - r4 JoseManuelValenca

Ensaios de Angela Peixoto e Liliana Lourenço

Assinatura Digital

 

Sigilio Bancário

 

Receita Electrónica

 

Estampilhas Temporais

 

Voto Electrónico

 

-

-- JoseManuelValenca - 10 May 2005

InformaticaJuridicaT1A 12 Jun 2005 - 09:34 - r6 JoseManuelValenca

Ensaios de Ana Araújo Silva e Filipe Macedo

Vigilância electrónica: Ponderação de princípios

 
Este tema só perifericamente toca os objectivos deste curso; a exposição também está um pouco confusa; podia ser melhorado.

-- JoseManuelValenca - 12 Jun 2005

A Teoria da Personalidade no Voto

 
Argumentos usados de forma razoável; bom trabalho

-- JoseManuelValenca - 12 Jun 2005

Tratamento de Dados Pessoais

 
Não vejo nada neste trabalho que seja relavante ao título; não traz informação, nem opinião útil

-- JoseManuelValenca - 12 Jun 2005

Privacidade On-Line

 
Comentário idêntico ao anterior; não vejo informação relevante ao título neste trabalho

-- JoseManuelValenca - 12 Jun 2005

Sigilio Bancário

 
O tema tratatado, apesar de importante, está apresentado nos aspectos que pouco intersectam os objectivos deste curso

-- JoseManuelValenca - 12 Jun 2005

-- JoseManuelValenca - 12 May 2005

-

InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca

Ensaios de Silvia Vilas-Boas Dias, Ana Rita Freitas e Angélica Sofia Campos

Preservação da Proriedade Industrial

 

Privacidade dos Dados Clínicos

 

Voto Electrónico

 

Comércio Electrónico

 

Cifras

 

-- JoseManuelValenca - 16 May 2005

-

InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca

Ensaios de Vitor Novo, Manuel Almeida e João Varela

Privacidade dos Dados Clínicos

 

Agentes e Eventos

 

A Questão Humana na Segurança da Informacão (parte 1)

 

Faz sentido falar em direitos específicos das SI ou basta transpor para o novo contexto os direitos actuais?

 

AS BARREIRAS IMPOSTAS PELOS GOVERNOS POLÍTICOS À LIVRE CIRCULAÇÃO DE INFORMAÇÃO NA INTERNET

 

-- JoseManuelValenca - 16 May 2005

-

InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca

Ensaios de Albina Pinheiro

A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS

ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA?

 
Trabalho de opinião, bem focado. Não me parece que apresente um argumento suficiente para inviabilizar a escritura electrónica, nem percebo como o factor "tempo" pode influenciar qualquer dos argumentos.

-- JoseManuelValenca - 10 Jun 2005

Assinatura digital

 
Descritivo. Não traz muita informação.

-- JoseManuelValenca - 10 Jun 2005

Comércio Electrónico

 
Este é um trabalho expositivo mas está bem apresentado.

-- JoseManuelValenca - 10 Jun 2005

Voto Electrónico

 
Trabalho é expositivo mas está razoalvelmente completo. As questões tecnicas do voto são complexas mas alguma coisa poderia ter sido dito.

-- JoseManuelValenca - 10 Jun 2005

Direiro Electrónico

 
A noção de "direito electrónico" parece-me mais adequadamente apresentado na perspectiva das relações que se estabelecem na Sociedade da Informação. O trabalho está interessante e revela esforço.

-- JoseManuelValenca - 10 Jun 2005

-

-- JoseManuelValenca - 18 May 2005

InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca

Ensaios de Adelaide Cerqueira e Sandra Pereira

Criptografia e Assinatura Digital

 

-- AdelaideCerqueira? - 23 May 2005

Segurança Informática

 

Dados Pessoais

 

Escritura Pública Informatizada: Uma alternativa?!

 

Informatização dos Tribunais

 

-- AdelaideCerqueira? - 23 May 2005

-

-- JoseManuelValenca - 18 May 2005

InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?

Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva

Cartão Único

 

-- AngelicaCampos? - 06 Jun 2005

Assinatura Digital

 

Voto Electrónico

 

O avanço tecnológico no Campus

 

O avanço tecnológico ao nível da Saúde

 

-- JoseManuelValenca - 25 May 2005

-

InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca

Ensaios de Eunice Coelho

Titulo1

resumo1

 

Titulo2

resumo2

 

-

InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
-

Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito

"trabalho completo"

 

-- JoseManuelValenca - 25 May 2005

InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
-

Ensaios de Ana Pereira e Daniela Seixas

Ética Hacker

 
trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos

-- JoseManuelValenca - 11 Jun 2005

Pirataria Legal

 
Este trabalho fala dos direitos de propriedade de autor mas, apesar de refeir à divulgação de obras na internet, não me parece que os analise na especificidade deste meio

-- JoseManuelValenca - 11 Jun 2005

Privaciadade de Dados Clínicos

 
bom trabalho mas podia ser mais completo já que não considera casos em que o interesse público tenha precedência sobre o interesse privado

-- JoseManuelValenca - 11 Jun 2005

Sim ao voto electrónico

 
bom trabalho mas podia ter alguma informação concreta sob a forma de resolver algumas das dificuldades levantadas por este tipo de votação

-- JoseManuelValenca - 11 Jun 2005

Vidas virtuais

 
uma alegoria da ubiquidade da sociedade da informação mas não é uma análise apropriada da noção de vida virtual pelo menos da forma como ele é aceite nas comunidades da TI's

-- JoseManuelValenca - 11 Jun 2005

-- JoseManuelValenca - 27 May 2005

InformaticaJuridicaT22 31 May 2005 - 09:14 - NEW JoseManuelValenca
-

Ensaios de Gloria Soares, Joana Carvalho e Raquel Gomes

A Sociedade da Informação

 

A segurança informática

 

A criptografia

 

...

 

...

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
-

Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães

Esteganografia no Processo Civi

 

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

Registos e Informática

 

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

-- MafaldaMagalhaes? - 08 Jun 2005

A utilização da Informática e o número único na CRP

 

O mundo jurídico e as tecnologias da informação

 

Privacidade de dados clínicos e não repúdio de actos médicos

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT24 31 May 2005 - 14:42 - r2 JoseManuelValenca
-

Ensaios de Manuel Ferreira, Vania Rodrigues e Helena Silva

O problema dos direitos de autor no mundo informático..

 

Software LIvre

 

CRIMINALIDADE INFORMÁTICA: SPAM no âmbito da tutela da privacidade e protecção dos dados pessoais

 

Segurança informática- fronteiras e alternativas no meio judicial e extrajudicial

 

O AGENTE JURÍDICO INTELIGENTE

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
-

Ensaios de Casimiro Rosa e Abilio Ribeiro

A INternet e os Direitos de Autor

 

Assinatura Digital

 

Internet: Meio de Ultrapassar Barreiras

 

Phishing: Alerta Máximo!

 

Tecnologias da Informação e Saúde

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
-

Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins

A informática na saúde

 

Assinatura Digital

 

Cartão Único do Cidadão

 

Criptografia

 

O perfil genético na investigação forense

 

-- JoseManuelValenca - 31 May 2005

InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca

Ensaios de Sofia Silva

Segurança na Net

 

-- JoseManuelValenca - 09 Jun 2005

InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca

Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes

A criminalidade Informática nos tribunais

 

Gestão do Conhecimento

 

Pay Pal

 

Voto Electrónico

 

Segurança da Informação Digital na Saúde

 

-

-- JoseManuelValenca - 13 Jul 2005

InformaticaJuridicaT3 30 Jun 2005 - 16:11 - r12 JoseManuelValenca

Ensaios de Eunice Coelho

Dados Pessoais

 

Video-Vigilância

 

Trabalho 3

 

Trabalho 4

 

Trabalho 5

 

-

InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca

Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva

Sindicância de Dados Pessoais

Formas de sindicância do cidadão comum sob os seus dados pessoais constantes nos Sistemas de Informação da Administração Pública

 

INTERNET VS PRIVACIDADE

 

Cartão Único do Cidadão

 

Correio Electrónico

 

Comércio na Internet

 

-

InformaticaJuridicaT5 25 May 2005 - 16:32 - r6 JoseManuelValenca

Ensaios de Isabel Nunes, Claudia Pereira e Ana Tavares

Voto Electrónico

Vantagens da implementação de um sistema de voto alternativo ao tradicional sistema de voto presencial: voto electrónico.

 

Privacidade dos Dados Clínicos Pessoais

 

Assinatura Digital

 

Cartão Único

 

Comércio Electrónico

 

-

InformaticaJuridicaT6 18 May 2005 - 09:53 - r2 JoseManuelValenca

Ensaios de Silvia Pinto e Tania Costa

Informática Jurídica

 

Voto Electrónico

 

Assinaturas Digitais

 

Teoria dos Sistemas

 

Cartão Único do Cidadão

 

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca

Ensaios de Karina Silva e Eva Mendes

Privacidade dos dados clínicos

 

O voto electrónico

 

A assinatura digital

 

O correio electrónico

 

A sociedade da informação

 

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT8 10 Jun 2005 - 17:58 - r5 JoseManuelValenca

Ensaios de Alvaro Amorim, Carla Costa e Simone Marreiros

Bases de Dados com Informação Genética

 
Bom trabalho; claramente exposto e defendido; não tenho a certeza quanto ao rigor de alguns dos "factos"

-- JoseManuelValenca - 10 Jun 2005

A voz dos sem voz

 
Muito bom trabalho expositivo; bastante exaustivo dadas as limitações de espaço.

-- JoseManuelValenca - 10 Jun 2005

A ESTEGANOGRAFIA, A NOVA MARCA “DIGITAL”

 
Trablaho expositivo, interessante mas por vezes pouco rigoroso

-- JoseManuelValenca - 10 Jun 2005

Eu...sou eu!

 
Original mas acho que o objectivo do trabalho mudou a "meio do caminho"

-- JoseManuelValenca - 10 Jun 2005

O principio da preservação da propriedade intelectual na Web: Uma perspectiva ética

 
O trabalho está interessante mas um pouco confuso.

-- JoseManuelValenca - 10 Jun 2005

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca

Ensaios de Andreia Leite, Angela Santos e Vera Silva

Base de Dados de Recolha Genética

(2ª versão)

 
Trabalho bem apresentado focando os argumentos essenciais deste problema complexo

-- JoseManuelValenca - 12 Jun 2005

Cartão Único do Cidadão

 
Qual é a opinião sob este tema? O trabalho contém muito pouca informação própria.

-- JoseManuelValenca - 12 Jun 2005

Factura Eletrónica

 
Trabalho razoavelmente informativo mas com algumas incorrecções tecnicas

-- JoseManuelValenca - 12 Jun 2005

Publicidade Ilicita e Abusiva na Internet

 
Bom trabalho expositivo

-- JoseManuelValenca - 12 Jun 2005

O Documento Electronico

 
Bom trabalho apresentando uma visão bastante interessante da noção juridica de documento electronico. Contém porém algumas incorrecções tecnicas

-- JoseManuelValenca - 12 Jun 2005

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca

Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto

Identificação de dados pessoais sob o ponto vista financeiro

 

Cartão Único

 

Voto Electrónico

 

Violação de Direitos na Internet

 

Assinatura Digital

 

Bibliografia

-

-- JoseManuelValenca - 27 Apr 2005

InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca

Ensaios de Bruno Silva

Voto Electrónico

A Democracia nos dedos dos Cidadãos. -

 
Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito do conteúdo da página da UMIC sobre o veoto electrónico. Não é muito original.

-- JoseManuelValenca - 13 Jun 2005

Outros trabalhos

 
Biometria: mais uma vez o trabalho é extremamente longo e reproduz a informação sobre este tema fornecida pela CNPD

-- JoseManuelValenca - 13 Jun 2005

-- JoseManuelValenca - 28 Apr 2005

InformaticaJuridicaTC 31 May 2005 - 14:12 - r4 JoseManuelValenca

Ensaios de Helder Oliveira e Luis OLiveira

Pirataria Informática

(doc)
 

Cartão Comum do Cidadão

 

Contratos na Internet

 

O Preço da Segurança

 

Violação da Correspondência Digital

 

-

-- JoseManuelValenca - 28 Apr 2005

InformaticaJuridicaTD 31 May 2005 - 10:57 - r3 JoseManuelValenca

Ensaios de Vanessa Freitas e Magda Nunes

Assinatura Digital

 

Identificação Retinal

 

Ensino Electrónico

 

Comércio Electrónico

 

Voto Electrónico

 

-

-- JoseManuelValenca - 29 Apr 2005

InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca

Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes

Criptografia de Chave Pública: Confidencialidade e Autenticação

 

A Internet: Um Espaço de Comunicação

 

Propriedade Intelectual

 

SEgurança e Saúde

 

Os dados pessoais constantes nos sistemas de informação da administração pública

 

-

-- JoseManuelValenca - 02 May 2005

InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca

Ensaios de Susana Dias

Tecnologias da Informação e Comunicação na Saúde

 

A Progressiva Informatização no Direito

 

(RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICAÇÃO

 

Teletrabalho: o futuro

 

A EDUCAÇÃO E AS T.I.C.

 

-- JoseManuelValenca - 02 May 2005

-

LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco

Sessão Laboratorial 1


Nesta primeira sessão pretende-se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite-se que os alunos já dispõem de algum tipo de contacto com a utilização de computadores.

Login e Apresentação do Sistema MacOSX

Após a introdução do login e da password (o docente informará qual é...) o computador exibe um écran como o apresentado:

finder.jpg

A barra no topo do écran - o menu - diz respeito à aplicação activa e contém funcionalidades dessa aplicação (tais como abrir um novo ficheiro, gravar, etc). Na parte inferior do écran existe a barra de ferramentas que disponibiliza o acesso rápido a algumas aplicações (inicia aplicação com um click; arrastando um ficheiro sobre o icon: inicia a aplicação abrindo imediatamente o ficheiro em causa).

Na barra de ferramentas encontramos (entre outras) as aplicações:

  • O Finder é a aplicação responsável por manter a sessão do utilizador. O seu aspecto mais visível é a interacção com o sistema de ficheiros. Por seu intermédio podemos aceder/manipular a informação contida no disco (ficheiros, directorias, etc.).
  • O Terminal é a aplicação que permite interagir, em modo de comando, com o sistema operativo MacOSX (o sistema Unix da Apple). A sua utilização requer portanto o conhecimento de alguns comandos desse sistema, tornando-se menos intuitiva do que a manipulação da interface gráfica do sistema. É no entanto muito mais flexível e permite-nos realizar operações não acessíveis pela interface gráfica.
  • O Safari é um browser WWW. Permite consultar páginas Web (e.g. a página da disciplina).
  • O Trash permite remover ficheiros/directorias, arrastando o que se pretende remover para cima do icon.

O Finder

Esta aplicação permite interagir de uma forma visual com o sistema de ficheiros. Algumas das operações básicas que se podem fazer são acessíveis na barra superior no item File.

finder_file.jpg

Podemos abrir uma nova janela de visualização ou criar uma nova directoria. Note-se que esta directoria será uma sub-directoria da que estamos neste momento a visualizar (se não estiver nenhuma janela do Finder aberta, será criada como uma sub-directoria da Desktop que contém os elementos visíveis no fundo do écran).

Note a existência de uma directoria com icon representando uma casa, que se refere à sua directoria base (Home). A própria Desktop é uma sub-directoria dessa.

Tarefa 1 - Crie na sua Home uma directoria chamada Aula1.

O Terminal

Através do Terminal também podemos interagir, de uma forma textual, com o sistema de ficheiros. Podemos por exemplo listar o conteúdo de uma directoria (ls), remover um ficheiro (rm), visualizar o conteúdo de um ficheiro (cat) ou mover/mudar o nome de um ficheiro (mv). Podemos além disso efectuar toda uma série de acções, incluindo o início de programas.

Tarefa 2 - Inicie o Terminal e usando o comando cd (change directory) vá para a directoria Aula1 criada atras. Use ainda o comando ls -la para visualizar o conteúdo dessa directoria. Note que o comando cd, quando usado sem argumentos, o posiciona na sua Home.

Vamos agora usar um editor de texto para criar um ficheiro. Nesta primeira fase vamos usar o editor vi, comum a todos os sistemas Unix.

Quando estamos a usar o vi podemos estar em dois modos de funcionamento:

  • modo comando é o modo inicial e podemos invocar comandos: (a, i, e o) servem para passar a modo inserção; :s guarda as alterações efectuadas; (:q, :x e ZZ) terminam a execução do vi.
  • modo inserção onde podemos inserir o texto. Para voltar ao modo de comando devemos usar a tecla "Esc".

Emacs

Um outro editor de texto muito utilizado em sistemas Unix é o Emacs. Tal como fizemos para o vi, vamos aqui descrever a utilização mais rudimentar deste editor de texto. Este programa pode ser encontrado na directoria Applications e tem como icon um gnu.

Aquamacs.png

Para abrir um determinado ficheiro usa-se o comando "CTRL-x CTRL-f". Alternativamente, podemos usar o item File da barra superior do ecran. Aqui, uma das opções é abrir um ficheiro (Open File) ou uma nova janela (New). No final da edição devemos guardar o ficheiro editado, usando Save ou Save As, dependendo se o ficheiro já existia ou não.

Tarefa 3: Crie na directoria Aula1 um ficheiro com nome Grupo.txt, com a identificação dos membros do grupo (número e nome). Utilize para o efeito um dos editores de texto referidos atrás (Emacs ou vi).

LaTeX

Para produzir relatórios e outros documentos, vamos utilizar o sistema LaTeX. Este "processador de texto" distingue-se de outros (como o MS Word, do Windows) por promover a separação entre conteúdo e apresentação. Assim, o processo de criação de um documento passa pelas seguintes fases:

  • o utilizador utiliza um qualquer editor de texto para criar um ficheiro com a informação que irá dar origem ao documento (com a extensão .tex, por exemplo teste.tex)
  • executa-se o comando pdflatex que processará o documento resultando um ficheiro em formato PDF (Portable Document Format) (seguindo com o exemplo, executando pdflatex teste.tex produziria o ficheiro teste.pdf).

No Mac, está disponível o TexShop - uma aplicação que contém o editor de texto próprio e que facilita a utilização do LaTeX (produzir o documento resume-se a primir no botão typeset).

TexShop.jpg

Naturalmente que o ficheiro .tex que contém a informação para o documento deve adoptar um formato específico. De facto, para além do conteúdo que queremos ver no documento final, teremos de dar indicações ao LaTeX que lho permita produzir o resultado pretendido (qual o título, o autor, quais a várias secções, etc.). Comecemos então por ver um exemplo de um tal ficheiro:

\documentclass[12pt]{article}
\usepackage[portuges]{babel}
\usepackage[mac]{inputenc}

\begin{document}

\title{Um Documento de Exemplo}
\author{Eu}
\date{\today}

\maketitle

\section{Primeira Secção}

Isto é o texto que aparece na primeira secção...

\section{Segunda Secção}

Isto já é a segunda secção. Agora vou referir:

\begin{itemize}
\item Um ponto...
\item Outro ponto...
\end{itemize}

\end{document}

Uma breve explicação do conteúdo apresentado:

  • Quando uma palavra é precedida pelo carácter \, é um comando para o LaTeX. Os argumentos para estes comando (quando existem) são envolvidos em chavetas.
  • As linhas até ao \begin{document} são designadas por preâmbulo. Este inicia-se obrigatoriamente com o comando \documentclass que serve para indicar ao LaTeX qual o estilo de documento adoptado (neste caso article, mas existem também book, letter, etc.). Os restantes comandos utilizados no preâmbulo destinam-se a preparar o LaTeX para lidar com os caracteres acentuados presentes no Português.
  • O conteúdo do documento encontra-se entre as linhas \begin{document} e \end{document} (o que designamos por o ambiente document).
  • O comando \maketitle visualiza o título do documento (com a informação previamente registada pelos comandos \title, \author e \date).
  • O comando \section marca o início de uma secção (como argumento aceita o título da secção)
  • O ambiente itemize permite enumerar vários pontos (cada um deles é precedido pelo comando \item).

Após o processamento descrito, obteríamos o seguinte documento:

teste.jpg

Obviamente que a explicação aqui apresentada é muito incompleta, e o exemplo não ilustra minimamente as enorme potencialidades do LaTeX para produzir documentos de elevada qualidade gráfica. Recomenda-se vivamente a leitura do pequeno livro Uma não tão pequena introdução ao LaTeX2e.

Tarefa 4: Crie o ficheiro teste.tex com o conteúdo acima apresentado, compile-o (comando pdflatex teste.tex) e visualize-o (comando open teste.pdf, ou com um duplo click no Finder).

Mini-projecto individual

  • Instale no seu computador pessoal uma distribuição apropriada do LaTeX (veja, na secção "links úteis" da página da disciplina, diferentes alternativas de distribuições para os vários sistemas operativos).
  • Acompanhe a leitura de "Uma não tão pequena introdução ao LaTeX2e" com experimentações na sua instalação do LaTeX (no sub-título desse livro, lê-se que bastam 137 minutos para a sua leitura. O que podemos afirmar é que vale definitivamente a pena, mesmo que demore um pouco mais...).
  • Produza um documento contendo o seu curriculum vitae (identificação pessoal, escolas onde obteve os vários graus de ensino, hobbies, etc.)
  • Envie por email o documento produzido para o (seu) docente da disciplina.
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros

Sessão Laboratorial 2


Nesta sessão pretende-se tomar conhecimento com conceitos básicos da linguagem Haskell, nomeadamente:

  • expressões e sua avaliação,
  • tipos básicos,
  • tipos estruturados,
  • utilização do interpretador ghci e do compilador ghc.

ghci: um interpretador da linguagem Haskell

Ao longo deste curso iremos utilizar o interpretador ghci para executar programas escritos na linguagem Haskell. Este interpretador pode ser invocado a partir do Terminal:

$ ghci
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.5.20060608, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base-1.0 ... linking ... done.
Prelude> 

Uma vez no interpretador, podemos realizar uma de duas tarefas:

  1. avaliar expressões
  2. executar um comando do interpretador

Avaliar Expressões: para avaliar uma expressão basta-nos digitar essa expressão no interpretador. Por exemplo:

Prelude> 5 + 3 * 2
11
Prelude> show (3 * 2 + 1)
"7"
Prelude> 2 * sin(pi/2)
2.0
Prelude> "ABC" ++ (reverse "DEF")
"ABCFED"
Prelude> if odd(3) then (1,"IMPAR") else (0,"PAR")
(1,"IMPAR")

Verificamos então que o ghci avalia as expressões introduzidas apresentando o respectivo resultado. Mesmo sem conhecermos ainda todas as funções apresentadas, podemos desde logo observar que o Haskell não se limita a avaliar expressões numéricas --- na realidade, é capaz de processar dados de natureza muito diversa (diferentes tipos de dados) como números inteiros, decimais, valores de verdade (booleanos), caracteres, sequências, etc. Por outro lado verificamos que dispõe já do conhecimento de algumas funções pré-definidas (como sin, odd, etc.). Estas funções (e muitas outras, naturalmente) estão definidas na biblioteca básica da linguagem, a que se dá o nome de Prelude. Daí o prefixo "=Prelude>=" apresentado no ghci: informa-nos que ele (só) tem carregadas as definições dessa biblioteca. (obs.: biblioteca, em programação, consiste num conjunto de definições disponibilizadas para serem (re)utilizadas pelos programadores.)

Execução de Comandos: para além de avaliar expressões, é-nos também possível executar comandos que controlam o comportamento do ghci (como carregar um ficheiro com definições de novas funções, solicitar informação de tipos, etc.). Os comandos mais utilizados serão:

  • :l (fich) - carrega ficheiro (fich),
  • :t (expr) - interroga o interpretador sobre o tipo de (expr),
  • :b (mod) - visualiza o conjunto de definições de (mod),
  • :? - comando de ajuda que fornece uma breve explicação dos comandos disponíveis
  • :q - sai do interpretador

De referir é ainda a integração existente entre o ghci/haskell e o Emacs. De facto, este último dispõe de um modo de edição próprio para a linguagem Haskell, activado automáticamente quando é carregado um ficheiro com extensão .hs, que constitui uma mais valia quando editamos programas nessa linguagem (disponibiliza indentação automática, coloração do texto, etc.).

Tarefa 1 - Verifique qual é o tipo das expressões apresentadas acima.

Tipos básicos e estruturados

O Haskell é uma linguagem fortemente tipada - com isto quer-se dizer que o Haskell força a que todas as expressões da linguagem possuam um tipo.

A linguagem oferece o seguinte conjunto de tipos básicos:

  • Bool - Booleanos: True e False
  • Char - Caracteres: 'a', 'x', 'R', '7', '\n', ...
  • Int - Inteiros de tamanho limitado: 1, -4, 23467, ...
  • Integer - Inteiros de tamanho ilimitado: 36, 37829938847736292938338283
  • Float - Números de vírgula flutuante: 3.5, -45.3, 3e-2, ...
  • Double - Números de vírgula flutuante com precisão dupla
  • () - Unit: ()

Para além dos tipos básicos, o Haskell disponibiliza formas de construir novos tipos a partir de outros existentes.

  • produto cartesiano - (a1, a2) :: (t1, t2) - um par cuja primeira componente a1 é do tipo t1 e a segunda componente a2 é do tipo t2. O produto cartesiano generaliza-se par n-tuplos (i.e. (a1, ..., an) :: (t1, ..., tn),
  • listas - [a1,a2, ..., an] :: [t] - uma lista (sequência) constituída pelos elementos a1, a2, ..., an, todos do tipo t,
  • funções f :: t1 -> t2 - f é uma função que espera um argumento de tipo t1 e cujo resultado é do tipo t2.

Para além dos tipos apresentados, o utilizador pode ainda definir novos tipos (assunto que retomaremos numa próxima sessão).

Tarefa 2:

  • Verifique o tipo das funções utilizadas nas expressões apresentadas acima (e.g. odd, sin, ...)
  • Porque é que o Haskell não aceita as seguintes expressões:
    • 3 + 'A'
    • [1,True]
    • not (0)
    • not not

Tarefa 3: * Teste as definições por compreensão apresentadas na aula teórico prática de Programação Funcional da semana anterior disponível aqui.

Definição de funções

A principa tarefa de um programador na linguagem Haskell consiste na definição de funções que realizem as tarefas pretendidas. As funções são definidas por intermédio de regras de cálculo. A título de exemplo, temos

eZero :: Int -> Bool
eZero x = if x==0 then True else False
Por vezes é conveniente (ou mesmo necessário) separar a definição da função em várias cláusulas. Por exemplo, a mesma função podia ser também ser definida como:
eZero' :: Int -> Bool
eZero' 0 = True
eZero' _ = False

As funções podem ainda possuir mais do que um argumento. Considere:

maior :: Int -> Int -> Int
maior x y = if x>y then x else y
Esta função determina o maior de dois inteiros passados como argumento (e.g. (maior 9 3) resulta em 9).

Note que as definição das funções não deve ser realizada directamente no ghci - devem antes ser definidas num ficheiro (com extensão .hs) que será depois carregado no ghci (comando :l).

Tarefa 4: Defina funções que:

  • dados dois números inteiros retorne um par onde a primeira componente é o menor número e a segunda o maior,
  • dado o comprimento dos dois lados catetos de um triângulo retorne o comprimento da hipotenusa.
  • dado o raio do círculo, retorne o perímetro e a área desse círculo.

Módulos

Um programa em Haskell é formado por um conjunto de módulos. Cada módulo contém um conjunto de definições (declarações de tipos, de funções, de classes, ...) que podem ser utilizados internamente, ou exportados para serem utilizados noutros módulos. Um módulo Haskell é armazenado num ficheiro com extensão .hs, .hs, em que representa o nome do módulo, como declarado na primeira linha do ficheiro. Por exemplo, o ficheiro Teste.hs deverá começar com a declaração seguinte:

module Teste where
   ...

Para utilizar definições contidas num outro módulo é necessário referencia-lo explicitamente. Este tipo de ligação entre módulos estabelece-se utilizando uma declaração import. Como exemplo, vejamos como podemos ter acesso às funções de manipulação de caracteres e strings (listas de caracteres) disponíveis no módulo Char.

module Main where
  import Char
  main = putStrLn ("Isto é o resultado de executar a função "++[toLower x | x <- "MAIN..."])

Uma excepção a esta regra é o módulo Prelude, que constitui a base da linguagem Haskell, e cujas definições estão disponíveis por omissão.

Compilador

Também é possível produzir uma aplicação (ficheiro executável) a partir de um ficheiro em Haskell. Para tal deve-se utilizar o compilador ghc. O módulo a compilar deve conter a função main, que corresponde ao "ponto de entrada" da aplicação (ou seja, essa função será avaliada quando executarmos o programa). A título de de exemplo, para compilar e executar o programa apresentado atrás, devíamos proceder da seguinte forma:

$ ghc -o teste Main.hs
$ ./teste
Isto é o resultado de executar a função main...
$ _

Tarefa 5:

  • Compile o programa apresentado e execute-o.
  • Crie um módulo com as funções definidas atrás (tarefa 3) e modifique o módulo Main para utilizar uma dessas funções.
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida

Sessão Laboratorial 3

Assuntos abordados nesta sessão:

Obs.: Este guião tem seguimento no da próxima sessão.


Definição de funções recursivas

A recursividade é um recurso fundamental para codificar funções não triviais numa linguagem funcional. A ideia básica consiste em permitir-se codificar uma função com recurso a ela própria, desde que com argumentos mais simples. O exemplo sempre citado é a definição da função factorial: n! = n * (n-1) * ... * 1. Observando que (n-1)!=(n-1) *...*1, verificamos que podemos definir n!=n*(n-1)! para n>0 (em que 0!=1). Em haskell poderiamos então definir:

fact :: Int -> Int
fact 0 = 1
fact n = n * (fact (n-1))
Observe que o argumento da invocação recursiva é estritamente menor do que o parâmetro da função - é por este motivo que o cálculo da função termina. De facto, para o cálculo de (fact 3), o interpretador realiza as seguintes reduções:
     (fact 3)  ---> 3 * (fact 2)  --->  3 * (2 * (fact 1))  --->
     --->  3 * (2 * (1 * (fact 0)))  --->  3 * (2 * (1 * 1))   =  6

Um outro domínio onde a recursividade surge naturalmente é ao realizar funções sobre listas (sequências). Aí, a forma mais natural de definirmos uma função consiste em explicitar qual o resultado para o caso da lista vazia [], e para o caso da lista não vazia (x:xs). Neste último caso, podemos invocar a própria função recursivamente na cauda xs porque esta é necessariamente mais pequena do que lista original. Um exemplo clássico é a função que calcula o comprimento:

len :: [a] -> Int
len [] = 0
len (x:xs) = 1 + (len xs)

Tarefa 1: Defina as seguintes funções que:

  • dado a e b determine a^b (sem utilizar a operação de exponenciação ^).
  • dado uma lista de inteiros, conte o número de zeros contidos nessa lista.
  • dado uma lista de inteiros, calcule o seu somatório.
  • dado uma lista e um elemento, verifique se esse elemento está contido na lista.

Sinónimos de tipos

O tipos pré-definidos do Haskell são suficientemente poderosos para representarem uma grande variedade de dados. A título de exemplo, considere que se pretende representar e manipular a informação relativa a alunos de um curso e as suas respectivas notas. Assim, para cada aluno pretende-se registar: o número, o nome, e a nota. Essa informação pode ser representada no tipo (Int, String, Float). Para representar a informação de todos os alunos do curso, utilizamos uma lista desse tipo.

Em casos como este, é útil fazer uso da possibilidade oferecida pelo haskell em atribuir sinómimos de tipos (declaração type) - podemos dessa forma atribuir um nome mais informativo ao tipo em questão. Uma função que verifique se o aluno está aprovado pode ficar codificada como:

type Aluno = (Int, String, Float)
type Curso = [Aluno]

verifAprov :: Aluno -> Bool
verifAprov (num, nome, nota) = (nota >=10)

Tarefa 2: Defina:

  • a lista listaAlunos contendo informação referente aos seguintes alunos
Num. Nome Nota
1234 José Azevedo 13.2
2345 Carlos Lopes 9.7
3456 Rosa Mota 17.9
  • uma funções que dado a lista de alunos, determine:
    • Uma lista só com os números dos alunos,
    • Uma lista só com os nomes dos alunos,
    • O número de alunos aprovados e reprovados,
    • Uma lista com os alunos aprovados,
    • Uma lista com os alunos reprovados,
    • A média das notas dos alunos,
    • A média das notas dos alunos aprovados,
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida

Sessão Laboratorial 4

Este Guião é a continuação do da sessão anterior.

Assuntos abordados nesta sessão:


Funções de ordem superior simples

Nas funções realizadas na última tarefa da sessão anterior é bem patente que algumas delas partilham um mesmo padrão: um exemplo será o cálculo das listas dos alunos aprovados e reprovados - em ambos os casos "filtramos" da lista original os elementos que satisfazem um dado critério. O facto de o Haskell permitir manipular funções como quaisqueres outros valores (e.g. podemos passar funções como argumentos para outras funções) permite-nos criar funções que abstraiam esses padrões comuns. Continuando com o exemplo da lista de aprovados/reprovados, podemos utilizar função pré-definida

filter :: (a->Bool) -> [a] -> [a]
que filtra todos os elementos de uma lista que satisfassam um dado predicado. As funções ficariam então:
alunosAprov :: Curso -> [Aluno]
alunosAprov xs = filter (verifAprov) xs

alunosReprov :: Curso -> [Aluno]
alunosReprov xs = filter (not . verifAprov) xs
Obs.: (not . verifAprov) é a composição de ambas as funções: not após verifAprov.

Outras funções pré-definidas no Prelude que correspondem a padrões repediamente encontrados são:

  • map::(a->b)->[a]->[b], (map f l) aplica a função f a cada elemento de l retornando a lista de resultados. Exemplo: map verifAprov listaAlunos retorna [True, False, True].
  • zip::[a]->[b]->[(a,b)], (zip l1 l2) associa os elementos das listas l1 e l2 produzindo uma lista de pares. Exemplo: (zip [1,2,3] ['A','B','C']) retorna [(1,'A'),(2,'B'),(3,'C')].
  • unzip::[(a,b)]->([a],[b]), (unzip l) separa uma lista de pares duas listas, cada uma contendo cada uma das componentes. Exemplo: (unzip [(1,'A'),(2,'B'),(3,'C')]) retorna ([1,2,3],['A','B','C'])
  • ...

Tarefa 1: Pode fazer uso de alguma(s) destas funções nas funcionalidades pedidas na sessão anterior? Experimente...

Utilização das bibliotecas

Já se referiu que a biblioteca do Haskell dispõe de um vasto conjunto de funções úteis (algumas já tem vindo a ser referidas, muitas outras o serão ao longo do semestre...). A forma última de se conhecer a oferta existente, e de obter informação para a sua utilização consiste em consultar a documentação existente. Para a tarefa que se segue pretende-se utilizar algumas funções dos seguintes módulos (para além das já referidas...):

Tarefa 2: Pretende-se realizar um programa que realize um histograma com a frequência das palavras que ocorrem nesse texto. Assim, o resultado de avaliar

hist "Um texto com palavras... um, com, palavras, palavras, dois,dois"
deverá retornar a lista:
[("um",2),("texto",1),("com",2),("palavras",3),("dois",2)]
Note que se ignora a pontuação e não se distinguem as letras maiúsculas das minúsculas.
LI1News 23 Feb 2007 - 22:46 - r8 JoseBacelarAlmeida
23/02/2007: Já disponíveis as notas da época de recurso.

19/02/2007: O exame de recurso será realizado na 4ª-feira, às 14:30 no DI0.11. O exame incluirá as componentes de Maple e Haskell. Quem desejar realizar esse exame, deve enviar um email a um docente da disciplina.

19/02/2007: Estão disponíveis as notas finais da disciplina (época normal).

13/02/2007: Já estão disponíveis as notas dos testes de Maple de todos os turnos.

07/02/2007: Foram publicadas as notas dos testes de Maple, com excepção dos alunos que realizaram o teste no dia 5 de Janeiro. Em princípio, no início da próxima semana serão publicadas as notas finais. Os alunos que reprovarem à disciplina poderão requerer um teste de recurso, que será realizado no dia 21 de Fevereiro à tarde.

21/12/2006: EXAMES de MAPLE Os exames de Maple para os turnos de sexta-feira, realizam-se em 4 sessões de 1 hora no dia 5 de Janeiro 2007. Cada sessão admite 13 slots . A inscrição nesses slots realiza-se a partir do dia 3 de Janeiro na recepção do DI.

02/12/2006: Já é possível realizar a inscrição para a apresentação dos trabalhos práticos (na recepção do departamento).

22/11/2006: Já estão disponíveis as instruções para submissão do trabalho prático.

26/10/2006: Já está disponível o enunciado do primeiro trabalho prático.

28/09/2006: Início das aulas.

LabMF 26 Oct 2004 - 06:56 - r2 LuisSoaresBarbosa
SumáriosAulas

T (2004.09.29): Apresentação da Disciplina. Discussão das propostas de projectos.

-- LuisSoaresBarbosa - 21 Sep 2004

Laboratório de Métodos Formais

2004-2005


Docente Coordenador

Horário

  • Acompanhamento dos Projectos: Quartas, 11-13 h, Sala DI 0.04.
  • Seminários PURe: Terças, 11-13, Sala de Reuniões do DI.

Objectivos

A disciplina é orientada ao projecto em engenharia de software no contexto das abordagens formais à especificação e desenvolvimento de sistemas. Assim, visa-se

  • Desenvolver competências específicas no projecto e implementação de sistemas envolvendo diversas plataformas de suporte e requisitos não triviais
  • Desenvolver um conjunto de `soft-skills' essenciais a qualquer técnico de informática dos dias de hoje: gestão de projecto, organização, comunicação e trabalho colaborativo.
  • Aprofundar o contacto com ferramentas de suporte ao desenvolvimento formal de software
  • Oferecer uma iniciação à investigação científica através da integração dos alunos em equipas de projectos de investigação em curso no Grupo de Lógica e Métodos Formais do DI.

Em 2004-05, em particular, os alunos que escolherem esta Opção são convidados a integrar a equipa do projecto PURe e a participar nos correspondentes seminários de investigação. A apresentação final dos projectos a realizar será igualmente feita no âmbito deste projecto.

Programa Resumido

Estudo e desenvolvimento de técnicas de análise de requisitos e experiência em interface/ coabitação de ferramentas de apoio ao uso de métodos formais (à escala industrial) com as tecnologias tradicionais. Casos de estudo - projectos propostos no contexto do Projecto PURe (FCT):

  • PURe Camila: re-engenharia do sistema de prototipagem Camila e sua re-implementação sobre Haskell
  • Métodos e ferremantas para slicing sobre especificações VDM

Projectos

Critérios de Avaliação

Tratando-se de uma disciplina eminentemente práticai, é adoptado o regime de avaliação contínua (sem provas escritas) que terá em conta as seguintes componentes:

  • Capacidade de organização e gestão de projectos de software
  • Capacidade de interligação de conhecimentos obtidos ao longo do curso na realização de um projecto de engenharia de software.
  • Qualidade do produto desenvolvido
  • Capacidade de comunicação e trabalho em grupo

Bibliografia

Grupos

Grupos e Classificações

Grupo Nr Nome Curso Data Apresentação Classificação
           
           
           
           
           

-- LuisSoaresBarbosa - 21 Sep 2004


-- LuisSoaresBarbosa - 21 Sep 2004

LabMFGru 21 Sep 2004 - 14:58 - NEW LuisSoaresBarbosa
Grupos e Classificações

Grupo Nr Nome Curso Data Apresentação Classificação
           
           
           
           
           

-- LuisSoaresBarbosa - 21 Sep 2004

LabMFSum 21 Sep 2004 - 14:55 - NEW LuisSoaresBarbosa
T (2004.09.29): Apresentação da Disciplina. Discussão das propostas de projectos.

-- LuisSoaresBarbosa - 21 Sep 2004

LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias

23/02/2007: Já disponíveis as notas da época de recurso.

19/02/2007: O exame de recurso será realizado na 4ª-feira, às 14:30 no DI0.11. O exame incluirá as componentes de Maple e Haskell. Quem desejar realizar esse exame, deve enviar um email a um docente da disciplina.

19/02/2007: Estão disponíveis as notas finais da disciplina (época normal).

13/02/2007: Já estão disponíveis as notas dos testes de Maple de todos os turnos.

07/02/2007: Foram publicadas as notas dos testes de Maple, com excepção dos alunos que realizaram o teste no dia 5 de Janeiro. Em princípio, no início da próxima semana serão publicadas as notas finais. Os alunos que reprovarem à disciplina poderão requerer um teste de recurso, que será realizado no dia 21 de Fevereiro à tarde.

21/12/2006: EXAMES de MAPLE Os exames de Maple para os turnos de sexta-feira, realizam-se em 4 sessões de 1 hora no dia 5 de Janeiro 2007. Cada sessão admite 13 slots . A inscrição nesses slots realiza-se a partir do dia 3 de Janeiro na recepção do DI.

02/12/2006: Já é possível realizar a inscrição para a apresentação dos trabalhos práticos (na recepção do departamento).

22/11/2006: Já estão disponíveis as instruções para submissão do trabalho prático.

26/10/2006: Já está disponível o enunciado do primeiro trabalho prático.

28/09/2006: Início das aulas.

Laboratórios Informática I

_Licenciatura em Engenharia Informática_
1º Ano - 1º Semestre
Ano lectivo 2006/2007


Apresentação

Na actual estrutura da Licenciatura em Engenharia Informática, esta é a primeira de uma série de unidades curriculares designadas por Laboratórios de Informática. Como o seu próprio nome sugere, estas unidades curriculares agregam as componentes laboratoriais (de informática) das várias temáticas leccionadas no semestre.

Nesta primeira instância, concentrar-nos-emos nos seguintes tópicos:

  • Prática de programação na linguagem Haskell.
  • Utilização do LaTeX na elaboração de relatórios e outros documentos.
  • Exploração de um sistema de manipulação simbólica (Mapple) como ferramenta na resolução de problemas de engenharia.

Horário Lectivo

Turnos Horário Sala Docente
P1 3ªfeira 14:00-16:00 DI 0.11 jba
P2 3ªfeira 16:00-18:00 DI 0.11 jba
P3 4ªfeira 11:00-13:00 DI 0.11 jba
P4 5ªfeira 11:00-13:00 DI 0.11 mac
P5 6ªfeira 14:00-16:00 DI 0.11 jmv
P6 6ªfeira 16:00-18:00 DI 0.11 jmv

Notas

  • Notas FInais da disciplina. (Inclui notas da época de recurso)
  • Notas do teste de Maple. Atenção: esta lista já contém as notas de todos os turnos.

Equipa Docente/Horário de Atendimento

Sigla Docente Horário
jba José Bacelar Almeida 2ªf 14:00-18:00
jmv José Manuel Valença 3ªf 14:00-18:00
mac Manuel Alcino Cunha 5ªf 9:00-11:00 6ªf 14:00-16:00

Critérios de Avaliação

A avaliação nesta unidade curricular divide-se nas seguintes componentes (e respectivos pesos):

  • Trabalho de grupo na linguagem Haskell 40%

  • Fichas de avaliação no sistema Mapple 40%

  • Avaliação contínua (incluindo pequenos trabalhos individuais a realizar fora do horário lectivo): 20%

Material Disponibilizado

Bibliografia de Apoio

Guiões

Trabalhos Práticos

Instruções para submissão: O trabalho deverá ser entregue AQUI. O grupo deve registar-se nesse site para poder submeter o trabalho. IMPORTANTE: o sistema só aceitará trabalhos até às 24:00 do dia 26/11/2006 (note que o prazo já foi alargado para permitir que o processo de submissão seja feito atempada e tranquilamente. Não arrisque a deixar a entrega para os últimos instantes...).

Apresentação: Os grupos deverão inscrever-se na recepção do departamento (piso 0) para realizar a apresentação do trabalho prático.

Correcção dos testes Maple

Lista dos Mini-projecto de LaTeX recebidos:

Links Úteis

MFIGru 10 Feb 2005 - 02:18 - r2 LuisSoaresBarbosa
Classificações Exame (Época Normal)

Nr Nome Exame Recurso Laboratório NOTA FINAL
35803 Alexandra Martins Silva 19      
30969 Alexandre Soares Barbosa R      
30706 Carla Sofia Carmo R      
35810 Carlos Moutinho Machado 13      
  Jácome Miguel Cunha 12      
28156 Jorge Soares Lima 10      
17092 Lígia Rodrigues Teixeira 10      
30662 Luís Miguel Neiva Ferros 14      
25371 Luís Pedro Gomes R      
29016 Marco Paulo Martins Cruz 10      
30743 Maria Madalena Varzim Faria 10      
28171 Marlene Silva Amorim R      
23198 Marta Carneiro Silva R      
33724 Miguel Henrique Fernandes 13      
  Paulo Alexandre Afonso Dias D      
35856 Pedro Gonçalves Silva R      
28179 Raquel Couto Pires R      
20225 Ricardo Gaspar Paz R      
  Rogério Leite Costa R      
23218 Susana Morais Pacheco R      
20838 Vitor Sá Pereira R      

-- LuisSoaresBarbosa - 21 Sep 2004

MFISum 16 Dec 2004 - 16:54 - r6 OlgaPacheco
T (2004.09.23): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

TP (2004.09.22): Apresentação: marcação de turnos.

TP (2004.09.22): Apresentação: marcação de turnos.

T (2004.09.30): Motivação para a especificação relacional. Introdução ao Cálculo Relacional. Operadores básicos e propriedades.

TP (2004.09.29): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório(Modelling with Sequences).

TP (2004.09.30): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório (Modelling with Sequences).

T (2004.10.07): Cálculo Relacional: Lei modular; técnicas de prova; exemplos.

TP (2004.10.06): Resolução do problema 03 dos guiões (Modelling with Sets).

TP (2004.10.07): Resolução do problema 03 dos guiões (Modelling with Sets).

T (2004.10.14): Dispensa de aulas concedida pelo Senhor Reitor

TP (2004.10.13): Resolução do problema 06 dos guiões (Modelling with Mappings).

TP (2004.10.14): Resolução do problema 06 dos guiões (Modelling with Mappings).

T (2004.10.21): Raciocínio com funções: regras de shunting; especialização de leis. Conexões de Galois: motivação, definição e exemplos. Propriedades básicas associadas a uma conexão de Galois. Prova da preservação de supremos (infimos) pelo adjunto inferior (superior).

TP (2004.10.20): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

TP (2004.10.21): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

T (2004.10.28): Continuação da aula anterior: análise de diversos exemplos de conexões de Galois e derivação de propriedades. Noção de either e split relacionais.

TP (2004.10.27): Resolução da Ficha 1 (Cálculo Relacional).

TP (2004.10.28): Resolução da Ficha 1 (Cálculo Relacional).

T (2004.11.04): Faltou o docente (por deslocação em serviço). Em substituição foi dada uma aula TP a cargo da Prof. Olga Pacheco.

TP (2004.11.03): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

TP (2004.11.04): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

T (2004.11.11): Semântica relacional da meta-linguagem de VDM. Definição recursiva de relações. Noção de hilomorfismo relacional. Incursão na semântica das definições recursivas. Teorema de Knaster-Tarski.

TP (2004.11.10): Faltou a docente (deslocação em serviço).

TP (2004.11.11): Faltou a docente (deslocação em serviço).

T (2004.11.18): Faltou o docente (deslocação em serviço).

Esta aula será reposta no dia 14 Dez (terça-feira) pelas 14.30 h.

TP (2004.11.17): Faltou a docente. (Aula de substituição).

TP (2004.11.18): Faltou a docente. (Aula de substituição).

T (2004.11.25): Cálculo de pontos fixos. Leis básicas e exemplos. Aplicação ao cálculo de hilomorfismos relacionais.

TP (2004.11.24): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

TP (2004.11.25): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

T (2004.12.02): Propriedades dos hilomorfismos relacionais. Aplicação ao estudo dos tipos colectivos (não indutivos) de VDM (conjuntos e corresponências).

TP (2004.12.01): Feriado Nacional.

TP (2004.12.02): Resolução da Ficha 4 (Conexões de Galois). Continuação da resolução do problema 09 dos guiões.

T (2004.12.09): Relação de acessibilidade e pertença em tipos de dados. Factorização em equações-hilo. Condições para a existência de soluções únicas. Aplicações.

TP (2004.12.08): Feriado Nacional.

TP (2004.12.09): (Aulas de dúvidas)

T (2004.12.14): (Reposição aula de 18 Nov) Discussão de exercícios de aplicação.

T (2004.12.16): Conclusão da disciplina. Preenchimento do questionário de avaliação.

TP (2004.12.15): (Aulas de dúvidas)

TP (2004.12.16): (Aulas de dúvidas)

-- LuisSoaresBarbosa - 21 Sep 2004

MFPII0405 26 Feb 2007 - 00:31 - r11 JoseBacelarAlmeida
SumáriosAulas

T (2005.02.21): Apresentação da Disciplina. Noção de refinamento.

TP (2005.02.22, 2005.02.24): Apresentação e marcação de turnos. Generalização das construções básicas das funções para as relações (do functor para o relator). A unidade nas relações. O produto de relações. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

T (2005.02.28): JOIN'05.

TP (2005.03.01): JOIN'05.

T (2005.03.07): Introdução ao refinamento de modelos de dados: relações de abstraçao e representação; a ordem de refinamento. Invariantes induzidos. Exemplos: algumas leis de reificação de conjuntos e correspondências.

TP (2005.03.03, 2005.03.08): Continuação da apresentação de relators: o coproduto de relações; o power relator. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

TP (2005.03.10, 2005.03.22): Catamorfismos relacionais: propriedades e exemplos.

T (2005.03.14): Estudo de algumas situações de refinamento de dados. Propriedades da relação de refinamento. Prototipagem: o legado Camila.

TP (2005.03.15): Assistir à apresentação sobre o "PURe Camila" por João Ferreira e Alexandra Mendes.

T (2005.03.21): Não houve aula (ausência do docente em reunião interna).

TP (2005.03.31, 2005.04.5): Especificação de propriedades como Catamorfismos Relacionais.

T (2005.04.04): Relacionadores e o refinamento estruturado. Leis de refinamento de conjuntos finitos, correspondências e representações por apontador. Introdução ao problema de desrecursivação de modelos de dados.

TP (2005.04.07, 2005.04.12): Utilização do Haskell na especificação do Software (comparação com VDM/Camila): abstração Set e Map; invariantes de tipo; pré e pós-condições nas operações; especificações não executáveis; características não funcionais (estado de objectos e do interpretador; operações IO; etc.). Apresentação dos projectos práticos da disciplina.

T (2005.04.11): Teorema de desrecursivação genérica: Função de abstracção e invariante concreto. Relações de pertença e acessibilidade estrutural. Cálculo da relação de acessibilidade para diversos exemplos.

TP (2005.04.14, 2005.04.19) Refinamento de Dados: caracterização abstracta; exemplos de refinamentos; exercícios sobre refinamento de dados e utilização da biblioteca CamilaPrelude? .

T (2005.04.18): Introdução ao refinamento algorítmico. Relação de satisfação de uma especificação (implícita) por uma função e sua generalização à satisfação de uma relação por outra. Enunciação e prova das propriedades básicas desta relação. Refinamento algoritmíco progressivo.

TP (2005.04.21, 2005.04.26) Refinamento de dados - exercício sobre normalização de dados para representação tabular.

T (2005.05.02): Continuação do sumário da aula anterior

TP (2005.04.28, 2005.05.03) Refinamento de dados: exercício sobre desrecursivação de dados.

T (2005.05.09): Noção de simulação. Resolução de equações de refinamento. Soluções funcionais e não funcionais.

TP (2005.05.05, 2005.05.17) Refinamento de algoritmos: Definição da relação "é implementado por". Demonstração de duas leis sobre a relação de implementação. Preenchimento dos inquéritos.

T (2005.05.16): Cálculo de simulações: análise de alguns casos de estudo.

TP (2005.05.19, 2005.05.24) Caso de estudo sobre refinamento de algoritmos: verificação da correcção do "insertion sort".

T (2005.05.23): Inter-combinação de ciclos e eliminação de recursão mútua. Teorema de Fokkinga e seus corolários. Exemplos de aplicação.

TP (2005.05.31, 2005.06.02) Recepção de trabalhos práticos.

T (2005.05.30): Conclusão da aula anterior. Introdução ao cálculo de soluções iterativas. Preenchimento dos inquéritos de avaliação e fecho da disciplina.

Métodos Formais de Programação II

2004-2005


Equipa Docente

Horários

Tipo Horário Sala
T 2as: 11-13 h DI A1
TP (Turno 1) 3as: 10-12 h DI 1.09
TP (Turno 2) 5as: 11-11 h DI 0.04

Horários de Atendimento

Docente Horário
Luís S. Barbosa a definir
Carlos Bacelar 2as 14-19

Nota: o contacto com os docentes através de email deve ser sempre feito a partir de contas institucionais da Universidade e com a indicação clara do nome da disciplina no subject.

Programa Resumido

  • Introdução ao cálculo de programas. Princípio da abstracção dos dados. Relações de abstracção e de representação. Inequações de refinamento.
  • Cálculo de refinamento formal de dados. Teorema de desrecursivação genérica. Relações de pertença estrutural e acessibilidade estrutural. Implementação de tipos indutivos polinomais em linguagens com gestão de memória dinâmica: Introdução de apontadores em linguagens tipo C/C++. Representação orientada a objectos.
  • Cálculo de refinamento algorítmico. A eficiência como principal motivação para o refinamento algorítmico. Fases do refinamento algorítmico: simulação, redução do não-determinismo, mudança de estrutura de dados virtual. Lei de refinamento funcional. Lei de refinamento relacional. Leis de fusão «vertical» e «horizontal». Lei de refinamento de simultâneo de dados e algoritmos. Cálculo de ciclos while como hilomorfismos.
  • Prototipagem rápida e integração com outras tecnologias. Introdução ao VDM++. Integração de protótipos reactivos em arquitecturas cliente-servidor. Emulação de serviços intermédios («middleware») e de serviços de dados («dataware»).

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 70% (nota mínima de 8 valores)
    • Componente Prática: Facultativa, com um peso de 30%.
    • No caso não se realizar trabalho prático, o exame teórico conta integralmente para a nota final (100%), mas essa nota fica majorada a 16 valores.

Acetatos

  • Refinamento de modelos de dados (pdf)
  • Refinamento algoritmíco (pdf)

Aulas Práticas

Notas dos Exames

As notas da 1ª e 2ª chamadas estão disponíveis aqui (pdf).

A pauta da época de recurso está disponível aqui (pdf).

Projectos Práticos

  1. Reengenharia do interpretador PUReCamila
  2. Desenho de uma hiearquia de classes para os tipos do CamilaPrelude
  3. Camila/VDM frontend para Haskell
  4. Static analysis for VDM
  5. VDM.net

Ver descrição detalhada destes projectos na página PUReCamila.

Bibliografia

  • Algebra of Programming. R. Bird and O. de Moor. Series in Computer Science. Prentice-Hall International, 1997. C. A. R. Hoare, series editor.
  • Modelling Systems: Practical Tools and Techniques J. Fitzgerald and P.G. Larsen. Cambridge University Press, 1st edition, 1998, Cambridge University Press, 1999.
  • Systematic Software Development Using VDM. Cliff Jones,Prentice Hall (Hoare Series in Computer Science), 1986.
  • Recursion in Pointfree Style, J. N. Oliveira, (capítulo de livro em preparação), 2004.
  • Data representation and Refinement, J. N. Oliveira, (capítulo de livro em preparação), 2004.
  • Operation Refinement, J. N. Oliveira, (capítulo de livro em preparação), 2004.

MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21): Apresentação da Disciplina. Noção de refinamento.

TP (2005.02.22, 2005.02.24): Apresentação e marcação de turnos. Generalização das construções básicas das funções para as relações (do functor para o relator). A unidade nas relações. O produto de relações. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

T (2005.02.28): JOIN'05.

TP (2005.03.01): JOIN'05.

T (2005.03.07): Introdução ao refinamento de modelos de dados: relações de abstraçao e representação; a ordem de refinamento. Invariantes induzidos. Exemplos: algumas leis de reificação de conjuntos e correspondências.

TP (2005.03.03, 2005.03.08): Continuação da apresentação de relators: o coproduto de relações; o power relator. Derivação de algumas das leis referidas como exercício de utilização do cálculo relacional.

TP (2005.03.10, 2005.03.22): Catamorfismos relacionais: propriedades e exemplos.

T (2005.03.14): Estudo de algumas situações de refinamento de dados. Propriedades da relação de refinamento. Prototipagem: o legado Camila.

TP (2005.03.15): Assistir à apresentação sobre o "PURe Camila" por João Ferreira e Alexandra Mendes.

T (2005.03.21): Não houve aula (ausência do docente em reunião interna).

TP (2005.03.31, 2005.04.5): Especificação de propriedades como Catamorfismos Relacionais.

T (2005.04.04): Relacionadores e o refinamento estruturado. Leis de refinamento de conjuntos finitos, correspondências e representações por apontador. Introdução ao problema de desrecursivação de modelos de dados.

TP (2005.04.07, 2005.04.12): Utilização do Haskell na especificação do Software (comparação com VDM/Camila): abstração Set e Map; invariantes de tipo; pré e pós-condições nas operações; especificações não executáveis; características não funcionais (estado de objectos e do interpretador; operações IO; etc.). Apresentação dos projectos práticos da disciplina.

T (2005.04.11): Teorema de desrecursivação genérica: Função de abstracção e invariante concreto. Relações de pertença e acessibilidade estrutural. Cálculo da relação de acessibilidade para diversos exemplos.

TP (2005.04.14, 2005.04.19) Refinamento de Dados: caracterização abstracta; exemplos de refinamentos; exercícios sobre refinamento de dados e utilização da biblioteca CamilaPrelude? .

T (2005.04.18): Introdução ao refinamento algorítmico. Relação de satisfação de uma especificação (implícita) por uma função e sua generalização à satisfação de uma relação por outra. Enunciação e prova das propriedades básicas desta relação. Refinamento algoritmíco progressivo.

TP (2005.04.21, 2005.04.26) Refinamento de dados - exercício sobre normalização de dados para representação tabular.

T (2005.05.02): Continuação do sumário da aula anterior

TP (2005.04.28, 2005.05.03) Refinamento de dados: exercício sobre desrecursivação de dados.

T (2005.05.09): Noção de simulação. Resolução de equações de refinamento. Soluções funcionais e não funcionais.

TP (2005.05.05, 2005.05.17) Refinamento de algoritmos: Definição da relação "é implementado por". Demonstração de duas leis sobre a relação de implementação. Preenchimento dos inquéritos.

T (2005.05.16): Cálculo de simulações: análise de alguns casos de estudo.

TP (2005.05.19, 2005.05.24) Caso de estudo sobre refinamento de algoritmos: verificação da correcção do "insertion sort".

T (2005.05.23): Inter-combinação de ciclos e eliminação de recursão mútua. Teorema de Fokkinga e seus corolários. Exemplos de aplicação.

TP (2005.05.31, 2005.06.02) Recepção de trabalhos práticos.

T (2005.05.30): Conclusão da aula anterior. Introdução ao cálculo de soluções iterativas. Preenchimento dos inquéritos de avaliação e fecho da disciplina.

MP2News 12 Jul 2005 - 15:22 - r34 MariaJoaoFrade
Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02.

-- MariaJoaoFrade - 12 Jul 2005

Os testes poderão ser consultados na Quarta-feira (13 de Julho) às 9:30 na sala DI 0.02 (junto à recepção).

-- MariaJoaoFrade - 12 Jul 2005

Os alunos que vão entregar o trabalho prático apenas a MP2, deverão faze-lo na próxima 2ªfeira, 30 de Maio, da parte da manhã. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

Quem entregar trabalhos a MP2 e a PP4, apenas tem que fazer a marcação de entrega de trabalhos a PP4 (a recepção de MP2 será feita na mesma altura).

-- MariaJoaoFrade - 24 May 2005

Disponíveis as notas práticas do ano lectivo 2004/2004.

-- JoseBacelarAlmeida - 09 Mar 2005

MP4Gru 02 Aug 2005 - 10:30 - r17 LuisSoaresBarbosa
Grupo Nr Nome Tema Class. PRÁTICA Exame (N) Exame (R) CLASS. FINAL
1 35840 José Tércio Soares D 15 13   14
  35743 Pedro Machado D 15 13   14
  35846 Márcio Azevedo D 15     F
2 35806 Bruno Miguel Sousa E 18 R 13 15
  38601 Mário Egídio Encarnação E 18 15   16
3 33696 Eunice Gomes J2   11   10
  33729 Renato Ribeiro J2       F
4 38621 Simão Cunha G1 14 10   11
  39493 João Pedro Barbosa G1 14 16   16
5 39834 Daniel Gomes Mendes H2 14 10   11
  33684 António Augusto Silva H2 14   R R
  35837 João Pedro Cerqueira H2 14 10   11
6 35839 José Serra Marques F1       F
  35860 Sérgio Pereira Novo F1       F
7 38589 Luis Miguel Braga E 18 16   17
  38608 Filipe Mendes E       F
8 21018 Marco Silva Machado H1       F
  36859 Anabela Carvalho Pinto H1       F
9 38619 Ana Sofia Ferreira I1       F
  38611 Ricardo Fortunas I1       F
10 38612 Daniela Carneiro da Cruz B 16 14   15
  38582 Elisabete Fonseca Ferreira B 16 17   17
  38577 Patricia Isabel Oliveira B 16 13   14
11 38588 Bárbara Vieira A 17 15   16
  38618 Marco Coelho A 17 13   14
    Hélder Teixeira A 17 15   16
  39442 Hugo Macedo A 17 19   19
12 35847 Madalena Lopes C 16 14   15
  35862 Sofia Moreira C 16 R 8 10
13 30717 Fernando Morais J1 15   R R
  25332 Rui Moutinho J1 15 10   12
14 38615 Ricardo Pontes F2       F
  38599 Ana Rodrigues F2       F
  38579 Celina Ribeiro F2       F
15 33705 João C. Pinto G2 14 R 10 11
    Manuel Mendes G2       F
    Arnaldino Pinto G2       F
Extra 30696 Alexandre Barbosa   * 15   15
  13737 Mário Afonso Silva     R   R

-- LuisSoaresBarbosa - 30 Jul 2005

MP4Sum 21 Feb 2006 - 14:34 - r9 LuisSoaresBarbosa
T (2006.02.21): Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento dos autómatos determinísticos.

-- LuisSoaresBarbosa - 21 Feb 2006

MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC
AFP
CA
CriptoBio
EDFS
EC
DSI
ELP1
ELP2
ELP3
IJ
LAD
LabMF
LI1
LC
MFP1
MFP2
MP1
MP2
MP4
Opcao III
PF
PP1
PP2
Estágios
Projectos
PhD@DI
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas:

2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada).

4a.fa. 16 Fev 10:00, com possibilidade de consulta dos exames (2a. chamada).

-- JorgeSousaPinto - 06 Jan 2005

Disponíveis nesta página (com a preciosa ajuda de Nuno Rodrigues) alguns exercícios resolvidos.

-- JorgeSousaPinto - 08 Jan 2005

Já disponível nesta página a versão final dos slides das aulas teóricas.

-- JorgeSousaPinto - 2 Dec 2004

Disponível nesta página a versão 5 dos exercícios da disciplina. A menos de correcções de erros e algum rearranjo de estrutura, esta é a versão final deste documento

-- JorgeSousaPinto - 11 Dec 2004

MetodosFormaisProgramacaoI 04 Mar 2005 - 16:51 - r13 LuisSoaresBarbosa
SumáriosAulas

T (2004.09.23): Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação-implementação. Objectivos e programa da disciplina; sua integração no plano curricular do curso.

TP (2004.09.22): Apresentação: marcação de turnos.

TP (2004.09.22): Apresentação: marcação de turnos.

T (2004.09.30): Motivação para a especificação relacional. Introdução ao Cálculo Relacional. Operadores básicos e propriedades.

TP (2004.09.29): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório(Modelling with Sequences).

TP (2004.09.30): Apresentação do VDMTools. Resolução do problema 02 do guião das sessões de laboratório (Modelling with Sequences).

T (2004.10.07): Cálculo Relacional: Lei modular; técnicas de prova; exemplos.

TP (2004.10.06): Resolução do problema 03 dos guiões (Modelling with Sets).

TP (2004.10.07): Resolução do problema 03 dos guiões (Modelling with Sets).

T (2004.10.14): Dispensa de aulas concedida pelo Senhor Reitor

TP (2004.10.13): Resolução do problema 06 dos guiões (Modelling with Mappings).

TP (2004.10.14): Resolução do problema 06 dos guiões (Modelling with Mappings).

T (2004.10.21): Raciocínio com funções: regras de shunting; especialização de leis. Conexões de Galois: motivação, definição e exemplos. Propriedades básicas associadas a uma conexão de Galois. Prova da preservação de supremos (infimos) pelo adjunto inferior (superior).

TP (2004.10.20): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

TP (2004.10.21): Resolução do problema 07 dos guiões (Multisets "are" Mappings).

T (2004.10.28): Continuação da aula anterior: análise de diversos exemplos de conexões de Galois e derivação de propriedades. Noção de either e split relacionais.

TP (2004.10.27): Resolução da Ficha 1 (Cálculo Relacional).

TP (2004.10.28): Resolução da Ficha 1 (Cálculo Relacional).

T (2004.11.04): Faltou o docente (por deslocação em serviço). Em substituição foi dada uma aula TP a cargo da Prof. Olga Pacheco.

TP (2004.11.03): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

TP (2004.11.04): Resolução da Ficha 2 (Cálculo Relacional).Resolução do problema 04 dos guiões (Datatype Invariants).

T (2004.11.11): Semântica relacional da meta-linguagem de VDM. Definição recursiva de relações. Noção de hilomorfismo relacional. Incursão na semântica das definições recursivas. Teorema de Knaster-Tarski.

TP (2004.11.10): Faltou a docente (deslocação em serviço).

TP (2004.11.11): Faltou a docente (deslocação em serviço).

T (2004.11.18): Faltou o docente (deslocação em serviço).

Esta aula será reposta no dia 14 Dez (terça-feira) pelas 14.30 h.

TP (2004.11.17): Faltou a docente. (Aula de substituição).

TP (2004.11.18): Faltou a docente. (Aula de substituição).

T (2004.11.25): Cálculo de pontos fixos. Leis básicas e exemplos. Aplicação ao cálculo de hilomorfismos relacionais.

TP (2004.11.24): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

TP (2004.11.25): Resolução da Ficha 3 (Conexões de Galois).Resolução do problema 09 dos guiões (A Toy Production Database model).

T (2004.12.02): Propriedades dos hilomorfismos relacionais. Aplicação ao estudo dos tipos colectivos (não indutivos) de VDM (conjuntos e corresponências).

TP (2004.12.01): Feriado Nacional.

TP (2004.12.02): Resolução da Ficha 4 (Conexões de Galois). Continuação da resolução do problema 09 dos guiões.

T (2004.12.09): Relação de acessibilidade e pertença em tipos de dados. Factorização em equações-hilo. Condições para a existência de soluções únicas. Aplicações.

TP (2004.12.08): Feriado Nacional.

TP (2004.12.09): (Aulas de dúvidas)

T (2004.12.14): (Reposição aula de 18 Nov) Discussão de exercícios de aplicação.

T (2004.12.16): Conclusão da disciplina. Preenchimento do questionário de avaliação.

TP (2004.12.15): (Aulas de dúvidas)

TP (2004.12.16): (Aulas de dúvidas)

-- LuisSoaresBarbosa - 21 Sep 2004

Métodos Formais de Programação I

2004-2005


Equipa Docente

Horários

Tipo Horário Sala
T 5as: 09-11 h DI A2
TP (Turno 1) 4as: 09-11 h DI 0.11
TP (Turno 2) 5as: 14-16 h DI 0.11

Horários de Atendimento

Docente Horário
Luís S. Barbosa 5as 13-14
Olga Pacheco 3as 15-16 e 6as 11-12

Nota: o contacto com os docentes através de email deve ser sempre feito a partir de contas institucionais da Universidade e com a indicação clara do nome da disciplina no subject.

Programa Resumido

  • Introdução ao problema do controlo de qualidade em `software' . Especificação formal -- porquê e para quê? Introdução aos binómio especificação /implementação.
  • Ciclo de vida do software usando métodos formais. Redução do risco e dos custos. Áreas típicas de aplicação. Sistemas críticos e confiáveis. Qualidade de serviços.
  • Linguagens e métodos para especificação formal. Antecendentes históricos. Do método de Viena (VDM) ao `standard' ISO/IEC 13817-1 (VDM-SL).
  • Estudo da notação VDM-SL. Modelação por conjuntos, sequências e funções finitas. Especificação por pré/pós-condições. Invariantes. Sub-especificação e não-determinismo. Relação (especificação) versus função (implementação).
  • Prototipagem e animação. Experiência com a utilização do ambiente VDMTOOLS.
  • Introdução ao cálculo relacional. Combinadores relacionais básicos. Taxonomia de relações binárias. Conexões de Galois. Pontos fixos.
  • Semântica relacional para VDM-SL e cálculo de especificações.

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 80% (nota mínima de 8 valores)
    • Componente Prática: 20% em avaliação contínua e entrega de relatórios das aulas laboratoriais (nota mínima de 10 valores)
    • Recorda-se que o estatuto de Trabalhador-Estudante não isenta os alunos nessas condições da obrigatoriedade de realizar a componente experimental da disciplina.

Provas de Avaliação

  • 05.02.21 - 1a Ch (com correcção parcial) (pdf)
  • 05.02.02 - 2a Ch (com correcção parcial) (pdf)

Acetatos e Textos de Apoio

  • Formal Methods in Software Engineering (slides)
  • no ficheiro slides encontram-se cópias dos acetatos utilizados nas aulas teóricas:
    • Ficheiros ifmsl.{pdf|ps} - An Introduction to Formal Modelling (22 slides).
    • Ficheiros rfmsl*.{pdf|ps} - Relational Formal Modelling (84 slides).
    • Ficheiros irhsl*.{pdf|ps} - An Introduction to Relational Hylomorphisms (45 slides).
    • Ficheiros tffsl*.{pdf|ps} - Theorems for Free: an Introduction (22 slides).
  • Guião das sessões de laboratório sobre VDMTOOLS.
  • Aqui encontra-se a resolução de um dos exercícios discutidos na aula de 14 Dez.
  • Formulário com leis do Cálculo Relacional.
  • Formulário com leis do Cálculo Funcional.

Aulas Práticas

  • Fichas

  • Script de configuração (adaptar!):

VDMSLROOT=/home/your_account/vdmhome

LM_LICENSE_FILE=/home/your_account/vdmhome/u_minho_students4.dat

PATH=$PATH:/home/your_account/vdmhome

export VDMSLROOT LM_LICENSE_FILE PATH

Bibliografia

Classificações Exame (Época Normal)

Nr Nome Exame Recurso Laboratório NOTA FINAL
35803 Alexandra Martins Silva 19   18 19
30969 Alexandre Soares Barbosa R 8.5 14 10
28141 Arnaldino Pinto Faltou   10  
30706 Carla Sofia Carmo R   15  
35810 Carlos Moutinho Machado 13 15 17 16
32220 Carlos Manuel Pereira Faltou D 14  
30711 Dário Samico Faltou   15  
35803 Jácome Miguel Cunha 12   17 13
30655 Joana Teresa Neves Faltou   15  
28156 Jorge Soares Lima 10   10 10
  Leonel Mendonça Faltou   10  
17092 Lígia Rodrigues Teixeira 10   10 10
30662 Luís Miguel Neiva Ferros 14   14 14
25371 Luís Pedro Gomes R 11.5 10 12
29016 Marco Paulo Martins Cruz 10   14 11
26327 Maria Inês Campos Faltou   10  
30743 Maria Madalena Varzim Faria 10   15 11
28171 Marlene Silva Amorim R 9 15 10
23198 Marta Carneiro Silva R R 10  
33723 Miguel Angelo Duarte Faltou   10  
33724 Miguel Henrique Fernandes 13   17 14
23203 Paulo Alexandre Afonso Dias D R 10  
35856 Pedro Gonçalves Silva R 11.5 15 12
30748 Pedro Rui Dinis Silva Faltou   14  
24870 Pedro Silva Faltou   10  
28179 Raquel Couto Pires R Oral: 10 10 10
33730 Ricardo Pinheiro Faltou   15  
20225 Ricardo Gaspar Paz R 8.5 Sem Informação Contactar Docente
30752 Rogério Leite Costa R D 14  
20232 Sandrina Maciel Faltou   10  
23218 Susana Morais Pacheco R R 10  
20838 Vitor Sá Pereira R   14  
25403 Wagner Barretoo Faria Faltou   15  


-- LuisSoaresBarbosa - 4 Mar 2005

MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida

Métodos de Programação I 2005-2006 (anexo)

ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html. Esta página destina-se apenas a fornecer material de estudo adicional e a dar apoio aos trabalhos práticos.



Trabalhos Práticos

Notas Práticas

Apresentações do 2º Trabalho Prático

  • As apresentações do 2º trabalho prático decorrerão nos dias 4, 5 e 6 de Janeiro. Já se encontram disponíveis na recepção do DI as folhas para as marcações das apresentações orais dos trabalhos práticos.

Apresentações do 1º Trabalho Prático

  • As apresentações do 1º trabalho prático decorrerão nos dias 21, 22 e 23 de Novembro. Já se encontram disponíveis na recepção do DI as folhas para as marcações das apresentações orais dos trabalhos práticos.

Lista de notas congeladas

Enunciados

  1. Trabalho sobre utilização de monads.
    • Enunciado
    • Data/hora limite de entrega - 23:59 de 13/11/2005
  2. Trabalho sobre manipulação de expressões.
    • Enunciado
    • Data/hora limite de entrega - 23:59 de 18/12/2005

Relatórios dos Trabalhos Práticos

É obrigatório a elaboração de um pequeno relatório (1 ou 2 páginas), explicando as principais decisões tomadas na resolução dos problemas propostos. Este relatório deve também ser submetido ao sistema de recepção de trabalhos práticos. Aquando da apresentação oral, os grupos devem-se fazer acompanhar pelos respectivos relatórios impressos.

Submissão Electrónica

  • Siga este link. Os trabalhos têm de ser submetidos em formato .zip ou .tgz
  • Para efectuar a entrega do trabalho é necessário registar primeiro o grupo, registo este que so deve acontecer uma única vez. Para isso devem seleccionar a opção Registar e introduzir um username e uma password para o grupo; Depois de registado o grupo, devem fazer login com o username e password escolhidos; Uma vez dentro do sistema, devem selecionar a opção "Elementos do Grupo" e registar todos os elementos do grupo um por um; Por fim, para submeter o trabalho selecionem a opção "Submeter Trabalho" e escolham qual o trabalho a submeter bem como o ficheiro contendo o trabalho, fazendo "Submit" no final.

Se algum grupo perder a password contacte NunoRodrigues. Não tentem nunca registarem-se mais do que uma vez.

FAQ dos Trabalhos Práticos

Disponível nesta página
(faça login como TWikiGuest e coloque as suas questões)


Material Disponibilizado

Material de Apoio


MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias

Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas:

2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada).

4a.fa. 16 Fev 10:00, com possibilidade de consulta dos exames (2a. chamada).

-- JorgeSousaPinto - 06 Jan 2005

Disponíveis nesta página (com a preciosa ajuda de Nuno Rodrigues) alguns exercícios resolvidos.

-- JorgeSousaPinto - 08 Jan 2005

Já disponível nesta página a versão final dos slides das aulas teóricas.

-- JorgeSousaPinto - 2 Dec 2004

Disponível nesta página a versão 5 dos exercícios da disciplina. A menos de correcções de erros e algum rearranjo de estrutura, esta é a versão final deste documento

-- JorgeSousaPinto - 11 Dec 2004

Enunciados Exames

Notas

Época Especial (Outubro 2005)

N. Nome Curso Nota Exame Nota Final
17871 Marco Freire ESI R  
19699 Ivan Noor... ESI R  
19710 Luis Rocha ESI D  
22692 Miguel Fernandes ESI 11 12
24871 Ricardo Gonçalves ESI D  
27620 João Lopes ESI R  
27650 Paulo Braga ESI R  
27662 Ricardo Gomes ESI R  
27663 Ricardo Figueiredo ESI R  
27604 Duarte Lourenço ESI D  
27683 Sara Santos ESI 8 10
30166 António Pereira ESI R  
30185 Ernesto Festas ESI 10 12
33198 Personal.Nuno Tendais ESI R  
33232 Rui Rodrigues ESI D  
35360 Pedro Carvalho ESI R  
35375 Sérgio Miranda ESI D  
36765 Sandra Fazendeiro ESI D  
23218 Susana Pacheco MCC D
28154 João Carmo MCC D  
35862 Sofia Moreira MCC 12 12
41029 Adriana Santos MCC D  

Os exames da época de recurso poderão ser consultados na próxima semana em data a designar.


Métodos de Programação I 2004-2005

Para consultar a página antiga: MP-I


Curiosidades...

  • Uma lista coligida recentemente das artigos de investigação mais influentes no domínio das Linguagens de Programação

Equipa Docente

Horários de Atendimento

Docente Horário Horário (Época Exames)
JorgeSousaPinto 2as. 14-17, 3as. 9-12 2as. e 3as. 14:30-17:30
JoseBarros 4as. 10-12, 5as. 9-12  
NunoRodrigues 4as. 14-17, 5as. 9-12  


FAQ da Disciplina

Disponível nesta página
(faça login como TWikiGuest e coloque as suas questões)

Material Disponibilizado

Material de Apoio

  • Ficheiros contendo definições e exemplos de utilização dos padrões de recursividade de listas e árvores binárias: MP1-Libraries.tgz

Trabalhos Práticos

Submissão Electrónica

  • Siga este link. Os trabalhos têm de ser submetidos em formato .zip ou .tgz
  • Para efectuar a entrega do trabalho é necessário registar primeiro o grupo, registo este que so deve acontecer uma única vez. Para isso devem seleccionar a opção Registar e introduzir um username e uma password para o grupo; Depois de registado o grupo, devem fazer login com o username e password escolhidos; Uma vez dentro do sistema, devem selecionar a opção "Elementos do Grupo" e registar todos os elementos do grupo um por um; Por fim, para submeter o trabalho selecionem a opção "Submeter Trabalho" e escolham qual o trabalho a submeter bem como o ficheiro contendo o trabalho, fazendo "Submit" no final.

Se algum grupo perder a password contacte NunoRodrigues. Não tentem nunca registarem-se mais do que uma vez.

Enunciados

  • Trabalho 1, a ser submetido electronicamente até às 24:00 do dia 10 de Outubro.

  • Trabalho 2, a ser submetido electronicamente até às 24:00 do dia 7 de Novembro.

  • Trabalho 3, a ser submetido electronicamente até às 24:00 do dia 12 de Dezembro.


Pré-Requisitos

Não havendo pré-requisitos formais, assume-se que os alunos possuem o seguinte conjunto de conhecimentos:

  • familiaridade com conceitos básicos de Programação Funcional
  • familiaridade com a linguagem de programação Haskell

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 60% (nota mínima de 8 valores)
    • Componente Prática (Trabalhos Práticos): 40% (nota mínima de 10 valores)
  • Avaliação prática
    • A componente prática da nota resulta da avalição de três trabalhos práticos.
    • Os trabalhos serão realizados extra-aulas, por grupos de exactamente 3 alunos.
    • Datas para a entrega dos trabalhos práticos: 10 de Outubro, 7 de Novembro, e 12 de Dezembro.
    • Aqueles alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente. O CONGELAMENTO IMPLICA QUE O ALUNO NÃO SERÁ AVALIADO NA VERTENTE PRÁTICA ESTE ANO, NÃO PODENDO POR ISSO ENTREGAR QUALQUER TRABALHO.

Programa Resumido

  • Motivação. Teoria e método em programação. Cálculo e raciocínio sobre programas. Composicionalidade. Combinadores de programas. Modularidade e reutilização.

  • Programação funcional: sua motivação e antecendentes históricos. Composição de funções. Noções de abstracção e de isomorfismo.

  • Iniciação à estruturação de dados. Combinadores básicos e suas propriedades estruturais (reflexão, fusão, absorção, cancelamento e de functorialidade). Álgebra de um tipo de dados. Lei da troca.

  • Introdução às estruturas de dados indutivas regulares. Álgebras de functores. A triologia «cata-ana-hilo». Recursividade polinomial. Caso de estudo: algoritmos de ordenação.

  • Parametrização e polimorfismo. Programação genérica. Functores de tipo. Introdução ao politipismo.

  • Programação funcional com mónadas. `Input/output'. Excepções

Bibliografia

Textos de referência sobre Programação Funcional e Haskell:

  • R. Bird, Introduction to Functional Programming Using Haskell. Prentice-Hall International, 2nd edition, 1998

  • J.M. Valença e J.B. Barros, Fundamentos da Computação II: Programação Funcional. Universidade Aberta, 2000

Recomenda-se ainda, como apoio específico aos temas tratados na disciplina:

MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha

Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)?

Claro que não! Faltam todos os operadores das somas e dos exponenciais. Quanto mais provar melhor!!

No ponto 4 para a calculadora quantas expressões simplificadas são para devolver? É que tendo a função "reescreve" a devolver várias simplificações as hipóteses de aplicar novas regras vão aumentando progressivamente. Se é para devolver apenas uma simplificação qual devemos escolher?

Essa decisão fica ao vosso critério.

Na função "reescreve" pede para devolver todas as expressões possiveis resultantes da reescrita. A pergunta é: é necessário devolver expressões em que a substituião foi feita apenas num termo de nivel n? Isto é a substituição feita apenas dentro de um termo que por sua vez está dentro de outro e assim sucessivamente? Ou é necessário devolver apenas as substituições que fazem matching no primeiro nivel do termo?

Tem que devolver todas, independentemente do nível em que se encontrem na árvore. Por exemplo,

reescreve (Term Comp [Var ´f´, Term Id []], Var ´f´) (Term Comp [Term Comp [Term Fst [], (Term Comp [Term Snd [], Term Id []]], Term Id []])
deverá devolver a seguinte lista (não necessariamente na ordem apresentada). Note que existem duas subexpressões que fazem match com o lado esquerdo da regra.
[Term Comp [Term Fst [], (Term Comp [Term Snd [], Term Id []]], Term Comp [Term Comp [Term Fst [], Term Snd []], Term Id []]]

O enunciado faz referência à necessidade de definir a orientação em que vamos aplicar a equação.

Na practica, a que se refere essa orientação? Isso quer dizer que uma vez que assumimos que a orientação é sempre feita da

esquerda para a direita, a substituição vai ser sempre feita na equação (PF1,PF2)? Isto é, fazendo match com PF1, devolve sempre

PF2 (partindo do principio que as condicoes se verificam)?

Exactamente. Definir a orientação é decidir qual dos lados de uma equação vai ficar do lado esquerdo e qual vai ficar do lado direito.

Quanto às expressões genéricas, a noçao de subexpressão refere-se a todos os membros da lista de Expressões de cada termo? ou seja..

data Exp v c = Term c [SubExp v c] | Var v

data SubExp v c = Term c [SubExp v c] | Var v

e se assim é qual a vantagem da criaçao deste tipo? sendo que uma subexpressão é em si mesma uma expressão.

Na versão mais simplista uma subexpressão é efectivamente igual a uma expressão, ou seja,

type TWiki.SubExp v c = Exp v c

Assumindo esta definição, a função que enumera as subexpressões deverá devolver para o exemplo

assocr :: Pointfree 
assocr = Term Split [Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []]]
a seguinte lista de subexpressões (não necessariamente nesta ordem).
[Term Split [Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []]], 
 Term Comp [Term Fst [], Term Fst []], Term Prod [Term Snd [], Term Id []], Term Fst [], Term Snd [], Term Id []]
Por vezes pode ser conveniente distinguir subexpressões iguais, mas que ocorrem em posições diferentes da expressão original, como é o caso da subexpressão Term Fst [] do exemplo acima. Quem desejar enveredar por esta alternativa deverá incluir no tipo das subexpressões uma indicação da posição ocupada pela subexpressão em causa. Essa posição deverá ser o caminho necessário para encontrar a subexpressão na expressão original.

Achei a explicaçao da função update um tanto confusa, é possivel dar um exemplo concreto de uma invocaçao e do resultado?

Vamos supor que uma substituição s (do tipo Subst Char PF) contém as seguintes associações entre variáveis e expressões (note que não estamos a assumir nenhuma impementação concreta para este tipo):

'x' --> Term Fst []
'y' --> Term Comp [Term Snd [], Term Fst []]

Se fizermos update s 'z' (Term Snd []) será devolvida uma nova substituição que para além das expressões associadas a 'x' e 'y' contém uma nova associação entre 'z' e Term Snd []. Se fizermos update s 'x' (Term Fst []) devolve a mesma substituição sem alterações. No entanto, se fizermos update s 'x' (Term Snd []) o update falha devolvendo Nothing pois 'x' já estava associado a uma expressão diferente.

Como colocar questões?

Faça login como TWikiGuest e coloque a sua questão no topo da página em bold. Logo que possível um dos docentes responderá às suas dúvidas.

MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida

Em principio quando é que sairão as notas da primeira chamada?

Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem o vai fazer na segunda chamada.

Não, o exame será publicado apenas no fim da época de exames.

-- JorgeSousaPinto - 19 Jan 2005

Haverão mais sessoes de duvidas, nomeadamente mais perto do exame da segunda chamada? É que, visto ainda faltar muito tempo pra este, ainda nao comecamos a estudar para ele, logo nao temos muitas duvidas aínda...

É uma boa pergunta, axo que era mais vantajoso uma das sessoes de duvidas ser na semana antes do exame da 2ª chamada.

Sim, claro, As desta semana destinam-se a quem vai à primeira chamada.

-- JorgeSousaPinto - 11 Jan 2005

Porque não fomos avaliados ao primeiro trabalho? Qual foi então o seu propósito? Perdermos tempo?

Temos diversas disciplinas com vários trabalhos cada. Agora, perdermos tempo com um, que não serviu-nos de nada... é no mínimo absurdo

O primeiro trabalho foi avaliado indirectamente. Uma vez que se tratou de um trabalho preparatório para o terceiro trabalho, entendemos avaliá-lo apenas como cumprindo ou não a funcionalidade básica; esta informação será tida em conta no cálculo da nota final.

-- JorgeSousaPinto - 06 Jan 2005

Absurda é a pergunta. Se no exame não aparecer nenhuma pergunta sobre a propriedade universal do produto, aprendê-la foi uma perda de tempo? Se a sua resposta é afirmativa então devia reconsiderar a sua opção de se inscrever num curso superior.

-- JoseBarros - 11 Jan 2005


No ponto 3.3, devemos fazer operaçoes n-árias ou dar uma aridade a cada operação? por exemplo a soma continuará a ser binária ou será n-ária?

Como não é especificado no enunciado quais os operadores n-ários a utilizar, devem apresentar uma solução genérica válida para operadores arbitrários, e exemplificá-la com alguns operadores de aridades diferentes (ver também enunciado do 1o. TP). Claro que podem incluir para este fim também operadores binários, bem como generalizar um operador binário para ternário, por exemplo.

-- JorgeSousaPinto - 11 Dec 2004


Na valorização 3 pede para fazer parser do tipo Expressao? Mas este nao da pra instanciar pk ta defenido a custa de type e nao data consequentemente da erro. Podemos redefenir atraves do data?

Nas valorizações, "the sky is the limit". Desde que seja em benefício do vosso trabalho sem introduzir novas limitações, alterem o que for necessário.

-- JorgeSousaPinto - 11 Dec 2004


Podiam dar um exemplo de um catamorfismo de ordem superior, é que não estou a perceber a ecencia da questao.

Aqui vai, para quem teve o azar de não estar presente nas muitas aulas em que isto foi exemplificado. A função de inversão de listas com acumulador,

rev [] y = y
rev (x:xs) y = rev xs (x:y)

pode ser escrita como

foldr aux id
where aux h r = \y -> r(h:y)

-- JorgeSousaPinto - 11 Dec 2004


Na verdade o tipo Tree é muito traiçoeiro pois tnato podemos ter árvores: Node 1 [Node 2[Node 3[]]] como tambem podemos ter Node 1 [Node 2 [], Node 3 []]. Qual a versão correcta?

Ambos os exemplos são expressões (diferentes) do tipo Tree Int.

-- JorgeSousaPinto - 11 Dec 2004


Um Tree é por exemplo: Node 1[Node 2[Node 3[Node 4 []]]] Como fazemos uma travessia preorder disso? Nao vejo Node k [a1, a2, a3] como foi respondido numa das pergundas desta faq

O resultado da travessia pré-order desta árvore é a lista [1,2,3,4]: o conteúdo da raíz da árvore seguido (da concatenação) das travessias das sub-árvores, tal como explicado em baixo.


Na 1 da valorização qd criamos a função stExecPN é suposto dar o resultado logo tipo o função aplicada ao prog dado como exemplo no enunciado de PN deve dar logo [15]?

Como é normal neste tipo de funções com estado, haverá uma função de topo que invoca a função monádica inicializando o estado com o valor inicial. A função de topo não calcula um valor monádico, apenas a outra o faz.

-- JorgeSousaPinto - 11 Dec 2004


É necessario fazer relatorio? não é dito nada no enunciado.Se sim, é para submeter tambem? ou é para levar apenas na apresentação?

Tal como no trabalho anterior,

"é necessário a elaboração de um relatório sucinto acerca do trabalho desenvolvido. Este relatório não deve ser submetido ao sistema de submissão dos trabalhos, mas sim entregue em papel na apresentação oral do trabalho."

-- JorgeSousaPinto - 11 Dec 2004


Na 3.3 pede para fazer com os tipos dados o que se fez na 3.1 e na 3.2 mas o ponto 3.2.3 é a mesma coisa pois o tipo de prog é o mesmo em ambos os casos. Estarei enganado?

O tipo é de facto o mesmo, mas os operadores são diferentes. Por exemplo, um operador ternário necessitará de extraír 3 argumentos da stack. Sendo assim, as funções de execução serão generalizações das funções definidas para o caso binário.

-- JorgeSousaPinto - 11 Dec 2004


Referente à valorização 1

para executar programas em PN ou em RPN como catamorfismos temos de distinguir duas associações diferentes, devido à diferente construção do pograma (PN/RPN). esta distinção é marcada pela utilização de foldr/foldl para cada caso.

Correcto. Mas: não se deve utilizar foldl mas sim foldr também para o segundo caso, um catamorfismo de ordem superior.

implementando estas funçoes com monads ST como respondido em baixo será usada a função sequence_ que faz uma dada associação das monads. esta associação funciona correctamente para um caso e como é obvio n funciona para o outro.

existe alguma função que faça o ke faz a sequence_ mas associe de forma inversa as monads?

Há que investigar! Será difícil, caso esta função não exista, escrevê-la?

-- JorgeSousaPinto - 11 Dec 2004


No ponto 3.2.3 b) é suposto fazer a função execRPNt em total point free? E o que devemos entender por um catamorfismo de ordem superior. Também penso que existe uma gralha no enunciado onde diz: "definindo execRPN :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

Em todo o trabalho devem tentar definir funções o mais point free possivel. O catamorfismo a definir é de ordem superior, pois o seu gene tem de consumir um a parâmetro extra, i.e. o acumulador ([Int]) que simula a stack. Existe realmente uma gralha em

"definindo execRPN :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

devendo ler-se

"definindo execRPNt :: Prog -> [Int] -> [Int] como um catamorfismo de listas (de ordem superior)."

-- NunoRodrigues - 09 Dec 2004

Na valorização 1 é pedido para utilizar a monad ST para executar um programa. Será suficiente ter um monad ST cujo estado é um [Instr] e cuja unica computaçao será executar execPN ou execRPN sobre o seu estado e devolver o resultado da computação??

Não. O estado deverá ser um tipo de dados que simule uma stack (p.e. [Int]). Pretende-se que façam a conversão de uma instânica de Instr para uma instância de Monad ST, que simule correctamente a operação em causa. No final desta operação irão obter uma lista de monad ST. Ai podem aplicar sequence a essa lista e executar correctamente a monad resultante.

-- NunoRodrigues - 09 Dec 2004

No ponto 2 das valorizações é necessário mostrar o estado interno da stack, que so é criado quando se faz catamorfismo de execução. Para conseguir mostrar a stack interna é necessário monades como genes do catamorfismo??

-- TWikiGuest - 09 Dec 2004

Não. Para irem mostrando o conteúdo da stack á medida que vão executando um programa, têm de trabalhar com a monad STIO. Posto isto, devem fazer a tradução de instruções (Instr) para monades STIO, monades estas que já podem efectuar IO mostrando assim o resultado interno da stack ao longo da execução do programa.

-- NunoRodrigues - 09 Dec 2004

Como posso ligar a opcao de trace de um calculo no ghc?

Podiam dar um exemplo de uma FTree com uma operação. Não é uma FBtree só com um lado, tipo uma lista, com o operador no fim???

é isto k pedem como FBTree : ftree = (FNode 1 [FNode 3 [FNode 4 [FNode 5 [FLeaf 2]]]])

Tree : tree = (Node 1 [Node 3 [Node 2 [Node 4 [Node 5[]]]]]), é isto?

Representação da expressão envolvendo um operador ternário g e um operador binário f

g(2,3,f(10,20))

FNode g [Leaf 2, Leaf 3, FNode f [Leaf 10, Leaf 20]]

-- JorgeSousaPinto - 08 Dec 2004


Tive o mesmo problema na pergunta 3.3, nao faz muito sentido pedir um preorder e um postorder de uma RTree, ou faz ?

Sim, faz, cfr. resposta à questão seguinte. Não faria sentido, isso sim, falar de uma travessia inorder de uma destas árvores.

-- JorgeSousaPinto - 08 Dec 2004


Na questão 3.3 que pede para fazer o preorder e o postorder é para o fazer do tipo Tree.?

Podiam dar o exemplo do resultado, dada uma Tree, de fazer preorder e postorder.

Sim. Por exemplo, para a árvore Node k [a1,a2,a3] (com a1, a2, a3 do tipo Tree), o resultado será uma lista com k à cabeça, seguida, por esta ordem, dos elementos resultantes das travessias de a1, a2, e a3. Na travessia pós-ordem a diferença é que k aparece no fim da lista.

-- Main.Jorg

MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias

Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02.

-- MariaJoaoFrade - 12 Jul 2005

Os testes poderão ser consultados na Quarta-feira (13 de Julho) às 9:30 na sala DI 0.02 (junto à recepção).

-- MariaJoaoFrade - 12 Jul 2005

Os alunos que vão entregar o trabalho prático apenas a MP2, deverão faze-lo na próxima 2ªfeira, 30 de Maio, da parte da manhã. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

Quem entregar trabalhos a MP2 e a PP4, apenas tem que fazer a marcação de entrega de trabalhos a PP4 (a recepção de MP2 será feita na mesma altura).

-- MariaJoaoFrade - 24 May 2005

Disponíveis as notas práticas do ano lectivo 2004/2004.

-- JoseBacelarAlmeida - 09 Mar 2005

Métodos de Programação II 2004-2005


Sugestão de Leitura

Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista, Donald Knuth.


Equipa Docente

Horários de Atendimento

Docente Horário
JoseBarros 4ª, das 10:00 às 12:00, 5ª das 10:00 às 11:00
MariaJoaoFrade 2ª das 16:00 às 18:00; 3ª 12:00 às 13:00
JoseBacelarAlmeida 2ª das 14:00 às 19:00


Material Disponibilizado

(À medida que o semestre for avançando é actualizada a informação aqui apresentada com os diferentes temas abordados.)

Aulas Teóricas

Aulas Teórico-Práticas

  • Revisões da linguagem C - faz-se uso de estruturas de dados já conhecidas (listas, stacks, queues) para recordar os seguintes conceitos:
    • Tipos Abstractos de Dados (ADTs);
    • Diferentes implementações de um ADT;
    • Modularidade na implementação em C (header files, compilação separada);
    • Ficha prática: Revisoes.pdf.

  • Slides das aulas teórico-práticas (2003).

  • Grafos: algoritmo "Shortest Path" (ficheiros em C, incompletos).
  • Grafos: algoritmos "Shortest Path" e "Minimum Spanning Tree" (ficheiros em C, completos).
  • Grafos: Slides sobre "PERT charts" e "Critical Path Method" (ficheiros em C, incompletos).

Trabalhos Práticos

FAQ da Disciplina

Disponível aqui.
(faça login como TWikiGuest e coloque as suas questões)

Outro material

Testes deste ano lectivo

Testes de anos anteriores:


Notas e Avaliação

Critérios de Avaliação

  • Nota final
    • Componente Teórica (Exame): 60% (nota mínima de 8 valores)
    • Componente Prática (Trabalhos Práticos): (nota mínima de 10 valores)
      • 1 trabalho prático (a ser apresentado na última semana de aulas) (30%)
      • TPCs das aulas teórico práticas (facultativo) (10%)

Pré-Requisitos

Não havendo pré-requisitos formais, assume-se que os alunos possuem o seguinte conjunto de conhecimentos:

  • familiaridade com a linguagem C
  • familiaridade com a utilização de ferramentas de desenvolvimento para a linguagem C, nomeadamente de compiladores.
  • conhecimento das estruturas de dados estudadas na cadeira de PP2: listas, stacks, queues, árvores binárias, etc.
  • conhecimento dos algoritmos de ordenao estudados na disciplina de MP1: insert sort, merge sort, quick sort, etc.

Aconselham-se todos os alunos a resolver a ficha de revisões proposta.

Notas Práticas (2004/2005)

Estas notas englobam o trabalho prático e a informação das aulas Teórico-Práticas.

Notas época normal (2004/2005)

Notas época recurso (2004/2005)

Notas época especial (2004/2005)

Notas Práticas do ano lectivo 2003/2004


Programas e Bibliografia

Programa Resumido

  • Introdução à análise de algoritmos:
    • análise de tempo de execução
    • análise de correcção
    • limites assimptóticos de complexidade
    • notações O, Teta e Omega
    • classes de complexidade
    • relações de recorrência
    • estratégias algorítmicas fundamentais:
      • força bruta
      • algoritmos gananciosos
      • divisão e conquista
      • ...
    • algoritmos de ordenação
    • ordenação em tempo linear.
  • Algoritmos clássicos sobre grafos.
  • Definição das classes de problemas P e NP
    • Exemplos de problemas NP-completos
  • Estruturas de dados fundamentais:
    • questões de eficiência na pesquisa
    • árvores AVL
    • tabelas de hash
    • realização na linguagem C
    • Realização de grafos em C

Bibliografia

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. MIT Press, Cambridge,Mass., second edition, 2001.

Robert L. Kruse, Bruce P. Leung, and Clovis L. Tondo. Data Structures and Program Design in C. Prentice Hall, second edition, 1997.

Donald E. Knuth. The Art of Computer Programming : (1) Fundamental Algorithms, (2) Seminumerical Algorithms, (3) Sorting and Searching. Addison/Wesley, third edition, 1997/98. 3 volumes.

MetodosProgramacaoIIFAQ 11 Jul 2005 - 14:59 - r113 TWikiGuest

FAQ de Métodos de Programação II


Índice:


Nas pautas que saíram relativamente ao ano 2004/05, alguns alunos têm como nota '*'. Em termos práticos, a que se resume esta nota?... Que nota mínima no exame escrito precisam os alunos em questão para obter aprovação à disciplina?


ALERT! Visto q o exame é na proxima semana, e existe nota prática obrigatoria, para quando a pauta da avaliação prática?

Durante os exames os horarios de atendimento dos docentes vai ser o mesmo?


Para quem congela a nota do trabalho do ano anterior, os 10% dos trabalhos das TP podem ser contabilizados?

-- TWikiGuest - 19 Mar 2005


Quem pode contribuir para esta FAQ?

Qualquer aluno inscrito na disciplina de Métodos de Programação II. Se quiser contribuir e não estiver registado use o login TWikiGuest com password guest.

-- JoseBacelarAlmeida - 19 Feb 2005


Gostaria de saber se os alunos que já efectuaram os trabalhos práticos da disciplina em anos anteriores necessitam de o fazer novamente este ano. Caso não seja necessário quais os procedimentos a seguir?

-- AlexandreCarvalho? - 28 Feb 2005

Os alunos que realizaram a componente prática da disciplina no ano passado (2003/2004) podem optar por congelar a nota prática. Para isso deverão enviar um email ao docente responsável pela disciplina ou ao docente das aulas teórico-práticas.

-- JoseBacelarAlmeida - 02 Mar 2005


Já agora, para quem é trabalhador, a nota prática é congelada por dois anos?

Não.

E já agora, quem é trabalhador não precisa de congelar a nota; nem sequer por um ano.

-- JoseBarros - 16 Mar 2005

Para "defesa" do colega que escreveu isto, deixe-me dizer-lhe que para bom entendedor meia palavra basta. Trabalhador já é uma e (neste caso) = trabalhador estudante. Às vezes nem sequer são precisas palavras para compreender certas situações. Mas para isso é preciso ser-se ainda mais inteligente. Enfim, é pena que o sr.JBB tenha sempre de mandar o seu (infeliz) comentario para o ar.

Qualquer trabalhador estudante tem direito a um regime especial de frequência de todas as disciplinas de uma licenciatura! Se este regime especial não permite o congelamento de uma nota prática durante 2 anos então qual é a diferença em relação a um regime normal?? Há professores que permitem o congelamento durante 2 anos, mas pelos vistos outros têm a mania que pode fazer tudo o que lhe apetece!

--

Mais uma vez os docentes de lesi pretendem ser diferentes... não é negando direitos aos alunos que contribuimos para que o curso seja cada vez melhor, devemos apoiar aqueles que já se encontram a trabalhar pois são eles que dão visibilidade e prestigio ao nosso curso permitindo abrir novas portas para os recem licenciados. Mas parece que alguns docentes não partilham desta opinião... não se preocupem, não estamos atrás dos vossos empregos, existe mercado para todos...

--

O trabalho não vai ser em conjunto com PPIV?? Na página de PPIV tinha isto relativamente ao congelamento de nota: CONGELAMENTO DE NOTAS PRATICAS - PPIV 2004/2005 Todos os alunos que pretendam congelar as suas notas praticas obtidas EM ANOS ANTERIORES, devem enviar um email para o endereço congelamentos_PPIV_0405@di.uminho.pt com SUBJECT: Congelamento de Nota e contendo apenas a sua identificação, ou seja, NUMERO, NOME e CURSO. A data limite para tal indicação será o dia 31 de Maio de 2005. -- M.Ferreira - 16 Mar 2005

--

Uma vez que que este assunto parece interessar alguns dos alunos, vou tentar repetir aqui o argumento apresentado na primeira aula sobre o congelamento das notas práticas.

É da minha opinião que a componente prática da disciplina não se trata de mais um obstáculo à aprovação mas antes uma ajuda na consolidação dos conhecimentos e competências que se pretende que os alunos adquiram ao frequentar (com sucesso) esta disciplina.

Daí que as notas das várias componentes não devam ser consideradas em separado mas como parte de um todo.

A situação excepcional consagrada no RIAPA dos trabalhadores estudantes efectuarem uma disciplina com duas componentes em dois anos consecutivos pode ser justificado pela falta de recursos (neste caso, disponibilidade destes alunos) para poderem frequentar a disciplina tal como ela foi desenhada.

No caso da disciplina de Métodos de Programação II, nesta edição de 2004/2005 e face à inexistência de recursos docentes suficientes, resolvi alargar a excepcionalidade desta situação aos outros alunos. Esta decisão tem custos associados. Estou convencido de estar a contribuir para que alguns alunos tomem a decisão (errada no meu ponto de vista) de congelar a nota prática do ano anterior, dificultando-lhes por isso mesmo a tarefa de atingirem os objectivos desta disciplina.

Quanto à discrepância entre os critérios usados em MP2 e PP4, apesar de o trabalho prático ser comum, esta partilha tem como objectivos: (1) pela parte dos alunos que vão apresentar os trabalhos de PP4 e de MP2, concentrarem-se apenas num enunciado, (2) pela parte das equipas docentes das duas disciplinas, poupar os poucos recursos que temos para as recepções dos trabalhos. Pelo que, para os alunos inscritos apenas numa das disciplinas ou que não pretendam realizar a parte prática de alguma delas, esta partilha é irrelevante.

Finalmente, a minha participação nesta discussão, apesar da falta de educação de algumas intervenções acima, deve-se à convicção que tenho que se tratam de excepções que não devem privar a maioria dos alunos da utilidade desta FAQ.

-- JoseBarros - 17 Mar 2005


Será possível colocarem as notas práticas do ano passado online?

Já estão na página. Em breve também estará a lista dos alunso que pediram para congelar a nota.

-- JoseBarros - 16Mar2005


Quantos trabalhos práticos vão existir este ano, para quando (+/-)? E relativamente ás apresentações para quando estão programadas?

-- AlexandreCalisto? - 16 Mar 2005

Vai existir apenas 1. Para ser entregue no final do ano. Com apresentação conjunta com o trabalho de PP4. Adicionalmente, serão pedidos pequenos trabalhos (facultativos) para serem entregues nas aulas TPráticas. O peso desta componente facultativa é de 10% da nota final.

-- JoseBarros - 16-Marco-2005


Sendo esta componente facultativa (mas que vale 10%), porquê prejudicar quem não pode assistir às aulas práticas e fazer os respectivos trabalhos - por exemplo alunos com sobreposição de horários ou trabalhadores estudante? Porque não considerar 40% o valor do trabalho prático nestes casos?

-- TWikiGuest - 26 Mar 2005


A professora das teórico-práticas disse que irá haver um trabalho para o qual teremos 3 semanas para fazer, que será para entregar nas tp e no qual terá-se de aplicar tudo o que se aprendeu nessas aulas. Gostaria de saber se haverá mais alguma informação disponibilizada na página da cadeira sobre esse trabalho e se sim, quando mais ou menos é que estará disponível.

-- TWikiGuest - 05 Apr 2005

Esse trabalho que foi proposto era um trabalho facultativo, daqueles que contam 10% para a nota. Também gostaria de obter mais informação sobre ele.

-- TWikiGuest - 06 Apr 2005


Quanto ao Trabalho Prático, como vêm expressas as horas de partida? 4 digitos seguidos (por exemplo, 1659) ? separados por 2 pontos (16:59) ?

-- AlexandreCarvalho?

Qualquer uma das alternativas. Isto é, fica ao vosso critério. -- JoseBarros - 06 May 2005

As durações dos voos serão expressas em minutos ou horas:minutos?

-- AlexandreCarvalho?

Idem. -- JoseBarros - 06 May 2005

No ponto 3, quando assume que a ordem da lista estabelece a prioridade das cargas o que é que devemos inferir disto? que as capacidades de peso e volume dos voos vão-se alterando consoante a alocação das cargas?

-- AlexandreCarvalho?

Não. O que quer dizer é que se eu tiver a alternativa de colocar uma de duas cargas, coloco aquela que aparece em primeiro lugar na lista. -- JoseBarros - 06 May 2005

Os dois ficheiros de texto que serão usados nos testes vão ser disponibilizados pelo professor?

... ou seremos nós a criar um exemplo? Digo isto porque o volume de dados que o meu ficheiro tem neste momento é pequeno para testar o desempenho da aplicação. Já agora uma dúvida simples para o meu caso de testes: podemos ter voos com a mesma origem e mesmo destino, nas mesmas horas, com designações diferentes? Por exemplo TP1201 e TP1202 ??

-- Alvaro Silva - 06 May 2005

No ponto 3, a lista de cargas dada, como sabemos qual é a origem da carga?

Suponho que a origem será comum para todas as cargas. Eu não sei como os professores pretendem, por aqui a origem está a ser especificada na linha de comandos. Exemplo: ./mp2 -origem=Lisboa ... -- AlexandreCarvalho? - 16 May 2005

Quando não é dito nada, e como se trata de uma extensão do trabalho de PP4, estamos a falar de uma mesma origem -- aquela cuja gestão é proposta em PP4. Mas a sugestão de isso ser feito da linha de comando também me parece reazoável. -- JoseBarros - 25 May 2005

Um Voo pode comportar mais que uma carga, isto é, se o avião tiver espaço pode levar 1+ cargas? ou apenas uma unica?

Pode e deve levar as cargas que lá couberem. -- JoseBarros - 25 May 2005

Será que podiam disponibilizar o exame da primeira chamada?

Quando é que irão sair as notas do exame?

-- TWikiGuest - 11 Jul 2005
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas

T (2006.02.21): Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento dos autómatos determinísticos.

-- LuisSoaresBarbosa - 21 Feb 2006

Métodos de Programação IV

(Modelação e Cálculo de Sistemas Reactivos)

2005-2006


Responsável pela Disciplina

Aula Extra

Em substituição das aulas da semana 22-26, será realizada uma sessão de dúvidas/exercícios no dia 13 de Junho (terça-feira) às 14.30. Ponto de encontro na sala de atendimento do DI.

Questões a Abordar

  • Como se caracteriza o paradigma de computação reactivo e qual o interesse do seu estudo?
  • Como modelar sistemas reactivos e estudar a sua composicionalidade?
  • Em que condições dois sistemas reactivos podem ser considerados equivalentes ou similares?
  • Como captar as noções de mobilidade e reconfiguração dinâmica de sistemas reactivos?
  • Como analisar e prototipar modelos de sistemas reactivos?
  • Qual a relevância deste paradigma e cálculos associados para a Engenharia do Software?

Programa Resumido

  • Interação e Comportamento

a. Introdução aos sistemas reactivos. Noção de interacção e comportamento.
b. Caso 1: sequências infinitas (de acções) como tipo dos comportamento de autómatos determinísticos.
c. Noção de tipo coindutivo. Definição e prova por coindução. Cálculo de estruturas coindutivas. Comparação com os tipos indutivos.
d. Cálculo de sequências infinitas. Codificação em Haskell.
e. Caso 2: comportamento de autómatos não determinísticos e sistemas de transição de estados.
f. Definição de morfismo, simulação e bissimulação. Propriedades da bissimulação
g. Caso 3: dos autómatos aos processos.

  • Sistemas Reactivos
a. Estado, interação e concorrência. Noção de processo, traço e comportamento.
b. Operadores sobre processos. O cálculo CCS: sintaxe e semântica operacional.
c. Equivalência estrita, equivalência observacional e igualdade de processos. Leis.
d. Concorrência e não determinismo: o teorema da expansão.
e. Discussão de exemplos. Modelação e análise de problemas no CWB
f. Prototipagem funcional de sistemas reactivos

* Sistemas Reactivos com Mobilidade

a. Noção de mobilidade e reconfiguração dinâmica de processos. Exemplos e aplicações.
b. Introdução ao cálculo Pi: sintaxe, semântica.
c. Equivalências para processos móveis. Leis.
f. Discussão de exemplos. Modelação e análise de problemas no MWB

Roteiro das Lições

Sessões Laboratoriais

Bibliografia

  • Communicating and Mobile Processes: the Pi-Calculus, Robin Milner, Cambridge University Press, 1999. Trata-se do livro base para a disciplina. A primeira parte introduz o cálculo base de sistemas reactivos, popularizado sob a designação de Ccs, enquanto a segunda parte aborda o problema da mobilidade e reconfiguração dinâmica de sistemas, constituindo a referência base para o Pi-calculus.

  • Communication and Concurrency. Robin Milner,Prentice Hall (Hoare Series in Computer Science), 1989. Obra anterior do mesmo autor, é suficiente como introdução a Ccs, mas omissa no que concerne à mobilidade. Se consultar a primeira edição deste livro (1989), tenha à mão a seguinte errata (ps.gz)

  • The Pi-calculus: A theory of mobile processes, Sangiorgi, D. and Walker, D., Cambridge University Press, 2001.

  • An Introduction to the _Pi-calculus. J. Parrow, draft (ps.gz) de capítulo análogo no Handbook of Process Algebra, Elsevier, 2001.

  • O Concurrency Workbench será uma das ferramentas de suporte à disciplina. Neste site pode obter executáveis para Linux e Windows. Ao utilizar o CWB-NC, poderá ainda fazer uso do ccs2dot (tar.gz) paravisualização dos grafos de transição sobre GraphViz por alunos desta disciplina (João Ferreira, Alexandra Mendes e José Proença) em 2002-03.

  • Supõe-se familiaridade com a linguagem Haskell e com o cálculo de programas funcionais estudado em Métodos de Programação 1. A primeira parte do livro Algebra of Programming (R. Bird e O. de Moor, Prentice-Hall, 1997) é uma excelente introdução a esse cálculo.

Critérios de Avaliação

  • Componente Teórica (Exame): 70% (nota mínima de 8 valores)
  • Componente Prática: 30%
  • A componente prática da nota resulta da avaliação do desempenho nas aulas TP e da realização de uma Ficha de Trabalho, de resolução individual e fora do tempo lectivo, de acordo com o calendário seguinte:

Proposta Entrega Enunciado Informação Complementar
22 Abril 2006 29 Maio 2006 (pdf) (pdf)

Resultados da Avaliação (26 Julho 2006)

Classificações dos Exames, Prática e Nota Final (Época Normal) (pdf)

Classificações dos Exames, Prática e Nota Final (Época Recurso) (pdf)


-- LuisSoaresBarbosa - 26 Jul 2006

OlgaPacheco 16 Dec 2004 - 16:32 - NEW OlgaPacheco
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção).

-- MariaJoaoFrade - 08 Mar 2006

Os exames estarão disponíveis para consulta, 4ªfeira (8 Fev.) entre as 14h30 e as 15h30, no anfitiatro DI A1.

-- MariaJoaoFrade - 07 Feb 2006

Já sairam as notas dos exames da Época Normal.

-- MariaJoaoFrade - 06 Feb 2006

AVISO DE PROVAS ORAIS (para melhoria de nota)

Os exames orais para melhoria de nota serão realizados no dia 8 de Fevereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

-- MariaJoaoFrade - 03 Feb 2006

Está aqui (zip) a resolução da ficha 9 (aula prática).

-- MariaJoaoFrade - 05 Dec 2005

Já está disponível o enunciado do 2º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

-- MariaJoaoFrade - 17 Nov 2005

Já está disponível o enunciado do projecto prático para melhoria de nota. Ver secção Melhorias de Nota.

-- MariaJoaoFrade - 25 Oct 2005

Já está disponível o enunciado do 1º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na quarta-feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

-- MariaJoaoFrade - 18 Oct 2005

4ªfeira (dia 28) às 10h00 aula de apresentação no CP1 A3.

-- MariaJoaoFrade - 23 Sep 2005

As aulas práticas começam no dia 3 de Outubro.

-- MariaJoaoFrade - 20 Sep 2005

PP1News 01 Mar 2005 - 18:30 - r12 MariaJoaoFrade
AVISO PROVAS ORAIS

As provas orais irão realizar-se na 6ªfeira dia 4 de Março, às 10:00. Ponto de encontro: junto à secretaria do DI (piso 2).

AVISO TURNOS 6 e 7 (MBB)

Alteração nas datas de entrega para os turnos 6 e 7. Ficheiro actualizado: Datas das entregas para os alunos dos Turnos 2,3,6 e 7 (MBB)

-- ManuelBernardoBarbosa - 3 Jan 2004

Informações sobre entrega dos trabalhos

A entrega de trabalhos para os alunos dos Turnos 4 e 5 (OMP) será nos dias 3,4 e 5 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- OlgaPacheco - 16 Dec 2004

A entrega de trabalhos para os alunos repetentes que pretendem subir a nota prática, será no dia 3 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- MariaJoaoFrade - 13 Dec 2004

Está já disponível o enunciado dos trabalhos práticos para os alunos inscritos para melhoria de nota.

-- ManuelBernardoBarbosa - 4 Nov 2004

As inscrições nos turnos práticos para os alunos repetentes, serão 3a feira (dia 28 Set) às 11:00 na recepção do DI (piso 0). A inscrição é individual e por ordem de chegada.

-- MariaJoaoFrade - 23 Sep 2004

ParadigmasProgramacaoI0405 12 Feb 2007 - 19:15 - r57 JoseBacelarAlmeida
Notícias

AVISO PROVAS ORAIS

As provas orais irão realizar-se na 6ªfeira dia 4 de Março, às 10:00. Ponto de encontro: junto à secretaria do DI (piso 2).

AVISO TURNOS 6 e 7 (MBB)

Alteração nas datas de entrega para os turnos 6 e 7. Ficheiro actualizado: Datas das entregas para os alunos dos Turnos 2,3,6 e 7 (MBB)

-- ManuelBernardoBarbosa - 3 Jan 2004

Informações sobre entrega dos trabalhos

A entrega de trabalhos para os alunos dos Turnos 4 e 5 (OMP) será nos dias 3,4 e 5 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- OlgaPacheco - 16 Dec 2004

A entrega de trabalhos para os alunos repetentes que pretendem subir a nota prática, será no dia 3 Jan 2005. Está na recepção do DI a folha com os horários disponíveis, para os alunos se inscreverem.

-- MariaJoaoFrade - 13 Dec 2004

Está já disponível o enunciado dos trabalhos práticos para os alunos inscritos para melhoria de nota.

-- ManuelBernardoBarbosa - 4 Nov 2004

As inscrições nos turnos práticos para os alunos repetentes, serão 3a feira (dia 28 Set) às 11:00 na recepção do DI (piso 0). A inscrição é individual e por ordem de chegada.

-- MariaJoaoFrade - 23 Sep 2004

Paradigma da Programação I

_Licenciatura em Engenharia de Sistemas e Informática_
1º Ano - 1º Semestre (5301P3)
Ano lectivo 2004/2005 (Anos anteriores)


Notas

Programa

Na actual estrutura da Licenciatura em Engenharia de Sistemas e Informática, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Programa detalhado

Bibliografia

  • Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo Barros. Universidade Aberta, 1999.

  • Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.

  • Haskell: the craft of functional programming. Simon Thompson. Addison-Wesley.

  • Introduction to Functional Programming. Richard Bird and Philip Wadler. Prentice-Hall, 1988.

Critérios de Avaliação

A avaliação tem uma componente teórica e uma componente prática, ambas obrigatórias. A nota final será calculada com base na seguinte fórmula:

Nota Final = NT * 0.6 + NP * 0.4

sendo

  • NT a nota teórica (nota mínima de 9 valores), obtida através da realização de uma prova individual escrita;

  • NP a nota prática (nota mínima de 10 valores), resultante da avaliação obtida ao longo das aulas laboratoriais e que terá por base a realização de trabalhos práticos.

Regime de Avaliação Prática

Alunos inscritos para melhoria de nota A avaliação prática será efectuada através de um trabalho prático a entregar no final do semestre em data a agendar. O enunciado correspondente está disponível aqui (Enunciado para alunos inscritos para melhoria).

Novos alunos e alunos repetentes sem nota prática. A inscrição nos turnos laboratoriais é obrigatória (e será feito controlo de presenças nas aulas). A nota prática resulta da avaliação obtida ao longo das aulas laboratoriais (avaliação contínua) e terá por base a realização de 3 fichas de trabalho e 2 trabalhos práticos.

Estudantes trabalhadores. A inscrição destes alunos nos turnos laboratoriais é opcional. Caso o aluno opte por não se inscrever nas aulas laboratoriais, a nota prática será obtida através da realização de um trabalho prático global (e as aulas laboratorias poderão ser frequentadas em regime livre).

Alunos repetentes com nota prática positiva. Os alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente. Para os alunos nestas condições que optem por não congelar a nota prática, a (nova) nota prática será obtida através da realização de um trabalho prático global. As aulas laboratorias poderão ser frequentadas em regime livre.

O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2003-2004 (LESI). A decisão de congelar a nota deverá ser comunicada por e-mail a ManuelBernardoBarbosa.

Metodologia de Inscrições e Formação de Grupos de Trabalho

  • Cada turno prático terá no máximo 36 alunos inscritos (em regime de avaliação contínua), havendo ainda 3 máquinas (9 lugares) que poderão ser usados (em regime livre) pelos alunos sem inscrição obrigatória nos turnos.

  • As inscrições dos alunos nos turnos são individuais.
  • Dentro de cada turno serão formados grupos de 3 alunos.
  • O trabalho na aula é feito em grupo (fora da aula é como quizerem).
  • A nota prática é individual.

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP1.A4 mjf
Teórica 5ªfeira 8:00-9:00 CP1.A5 mjf
Turnos Horário Sala Docente
TP1 3ªfeira 11:00-13:00 DI 0.11 omp
TP2 3ªfeira 14:00-16:00 DI 0.11 mbb
TP3 3ªfeira 16:00-18:00 DI 0.11 mbb
TP4 4ªfeira 11:00-13:00 DI 0.11 omp
TP5 6ªfeira 09:00-11:00 DI 0.11 jbb
TP6 6ªfeira 14:00-16:00 DI 0.11 mbb
TP7 6ªfeira 16:00-18:00 DI 0.11 mbb

Horário de Atendimento

Docente Horário
mjf 2as. 12-13 e 14-18
mbb 2as. 11-13 e 18-20, 3as. 18-20
omp 6as. 12-16
jbb  

Material Disponibilizado

Aulas Teóricas

Sumários

Aulas Práticas

  • Ficha de trabalho número 1: Ficha1
  • Ficha de trabalho número 2: Ficha2
  • Ficha de trabalho número 3: Ficha3
  • Ficha de trabalho número 4: Ficha4
  • Ficha de trabalho número 5: Ficha5

Links Úteis

Exames

ProgramacaoFuncional 23 Feb 2007 - 17:59 - r48 MariaJoaoFrade
Notícias

Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção).

-- MariaJoaoFrade - 08 Mar 2006

Os exames estarão disponíveis para consulta, 4ªfeira (8 Fev.) entre as 14h30 e as 15h30, no anfitiatro DI A1.

-- MariaJoaoFrade - 07 Feb 2006

Já sairam as notas dos exames da Época Normal.

-- MariaJoaoFrade - 06 Feb 2006

AVISO DE PROVAS ORAIS (para melhoria de nota)

Os exames orais para melhoria de nota serão realizados no dia 8 de Fevereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

-- MariaJoaoFrade - 03 Feb 2006

Está aqui (zip) a resolução da ficha 9 (aula prática).

-- MariaJoaoFrade - 05 Dec 2005

Já está disponível o enunciado do 2º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

-- MariaJoaoFrade - 17 Nov 2005

Já está disponível o enunciado do projecto prático para melhoria de nota. Ver secção Melhorias de Nota.

-- MariaJoaoFrade - 25 Oct 2005

Já está disponível o enunciado do 1º trabalho prático. As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na quarta-feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

-- MariaJoaoFrade - 18 Oct 2005

4ªfeira (dia 28) às 10h00 aula de apresentação no CP1 A3.

-- MariaJoaoFrade - 23 Sep 2005

As aulas práticas começam no dia 3 de Outubro.

-- MariaJoaoFrade - 20 Sep 2005

Programação Funcional

Licenciatura em Matemática e Ciências de Computação
1º Ano - 1º Semestre (7001N7)
Ano lectivo 2005/2006 (Ano anterior)


Programa

Na actual estrutura da Licenciatura em Matemática e Ciências de Computação, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Programa detalhado

Bibliografia

Critérios de Avaliação

A avaliação desta disciplina tem duas componentes obrigatórias.

  • A componente teórica tem um peso de 60% e consiste na realização de uma prova individual escrita (exame)

  • A componente prática, com um peso de 40%, consiste na realização de dois trabalhos e na avaliação do desempenho nas aulas laboratoriais.

  • A nota mínima em cada uma das componentes é de 9,5 valores.

Os trabalhos práticos são resolvidos em grupos de 3 alunos (todos do mesmo turno prático).

Os alunos com aprovação na componente prática no ano anterior, podem pedir para essa nota ser congelada. O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2004-2005 (LMCC).

A decisão de congelar a nota deverá ser comunicada por e-mail a Maria João Frade, até ao dia 31 de Outubro de 2005.

Melhorias de Nota

Os alunos que pretendam melhorar a nota a esta disciplina terão de se inscrever nos SAUM para o efeito e realizar um trabalho cujo enunciado está disponível AQUI (ou aqui: enunciado e ficheiros de exemplo). Este trabalho é individual.

A avaliação destes alunos será feita através de um exame oral, onde será apresentado o trabalho e onde serão colocadas questões sobre a generalidade da matéria. Estes exames orais decorrerão na data prevista para os restantes exames orais da disciplina, i.e., depois das duas chamadas da época normal (data a anunciar nesta página). Até 3 dias antes da oral deverá ser entrege um relatório do trabalho com a listagem do código do programa em anexo, e deverá também ser enviado por mail o .zip do trabalho.

AVISO: Estes exames orais serão realizados no dia 8 de FEvereiro (4ª feira), às 9h30. Os alunos deverão esperar na recepção do DI (piso 0).

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP2.104 mjf
Teórica 4ªfeira 10:00-11:00 CP2.104 mjf
Turnos Horário Sala Docente
TP1 3ªfeira 8:00-9:00 CP3.204 jbb
TP2 3ªfeira 14:00-16:00 CP3.202 jcr
TP3 2ªfeira 12:00-13:00 DI 0.11 mjf
P1 2ªfeira 10:00-12:00 DI 0.11 mjf
P2 3ªfeira 9:00-11:00 DI 0.11 jcr
P3 5ªfeira 11:00-13:00 DI 0.11 omp
P4 6ªfeira 11:00-13:00 DI 0.11 omp

Horário de Atendimento

Docente Horário
mjf 4ªf 14:00-16:00
jcr ...
omp 2ªf, 3ªf e 4ªf 12:00-13:00
jbb 2ªf 9:00-12:00

Material Disponibilizado

Aulas Teóricas

  • Haskell: slides 1-52 (pdf)
  • Haskell: slides 53-64 (pdf)
  • Haskell: slides 65-80 (pdf)
  • Haskell: slides 81-96 (pdf)
  • Haskell: slides 97-132 (pdf)
  • Haskell: slides 133-168 (pdf)
  • Haskell: slides 169-184 (pdf)

Aulas Práticas

Guiões:

  • Aula 1 (semana de 3 a 7 de Outubro)
  • Aula 2 (semana de 10 a 14 de Outubro)
  • Aula 3 (semana de 17 a 21 de Outubro)
  • Aula 4 (semana de 24 a 28 de Outubro)
  • Aula 5 (semana de 7 a 11 de Novembro)
  • Aula 6 (semana de 14 a 18 de Novembro)
  • Aula 7 (semana de 21 a 25 de Novembro)
  • Aula 8 (semana de 28 de Novembro a 2 de Dezembro)
  • Aula 9 (semana de 5 a 9 de Dezembro) - Ficheiros (zip)

Trabalhos Práticos:

  • Enunciado do 1º trabalho prático.
    • Os grupos terão obrigatoriamente 3 elementos.
    • As apresentações dos trabalhos serão feitas, na semana de 31 Outubro a 4 de Novembro, no horário dos turnos práticos. Exceptuam-se os turnos de 3ª feira (feriado), que terão que apresentar o trabalho na 4ª feira em horário a marcar. Para os grupos destes turnos, existirá uma folha de marcação de horário na recepção do DI.

  • Enunciado do 2º trabalho prático.
    • Os grupos terão obrigatoriamente 3 elementos.
    • As apresentações dos trabalhos serão feitas, na semana de 12 Dezembro a 16 de Dezembro, no horário dos turnos práticos.

Notas

Exames

Links Úteis

ProgramacaoFuncional0405 12 Feb 2007 - 19:15 - r41 JoseBacelarAlmeida

Programação Funcional

_Licenciatura em Matemática e Ciências de Computação_
1º Ano - 1º Semestre
Ano lectivo 2004/2005


Notas

Programa

Na actual estrutura da Licenciatura em Matemática e Ciências de Computação, esta é a primeira disciplina de Informática. Por esta razão, o primeiro grande objectivo desta disciplina é a introdução à programação de computadores.

Dos vários paradigmas de programação (imperativo, funcional, lógico e orientado a objectos) apresentados ao longo da licenciatura, nesta disciplina estuda-se o paradigma funcional, tendo por base a linguagem de programação Haskell.

Esta abordagem tem a vantagem de não exigir dos alunos grandes conhecimentos prévios sobre a arquitectura física dos computadores, para poderem entender e escrever programas funcionais, permitindo, por esse motivo, trabalhar mais facilmente com turmas heterogéneas em conhecimentos de informática.

A linguagem Haskell é uma linguagem puramente funcional fortemente tipada e com um sistema de tipos extremamente rico, o que permite não só ensinar os conceitos fundamentais da programação (funcional), onde se incluem tópicos tais como: tipos de dados, estruturas de controlo, e recursividade; como também ensinar conceitos avançados, como por exemplo: funções de ordem superior, polimorfismo, classes, modularidade, e monades.

Bibliografia

Fundamentos da Computação, Livro II: Programação Funcional. José Manuel Valença e José Bernardo Barros. Universidade Aberta, 1999.

Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.

Haskell: the craft of functional programming. Simon Thompson. Addison-Wesley.

Introduction to Functional Programming. Richard Bird and Philip Wadler. Prentice-Hall, 1988.

A Gentle Introduction to Haskell. Paul Hudak, John Peterson and Joseph Fasel.

Critérios de Avaliação

A avaliação tem uma componente teórica e uma componente prática, ambas obrigatórias. A nota final será calculada com base na seguinte fórmula:

Nota Final = NT * 0.6 + NP * 0.4

sendo

  • NT a nota teórica (nota mínima de 9 valores), obtida através da realização de uma prova individual escrita;

  • NP a nota prática (nota mínima de 10 valores), resultante da avaliação obtida ao longo das aulas laboratoriais e que terá por base a realização de trabalhos práticos.

Regime de Avaliação Prática

Alunos inscritos para melhoria de nota A avaliação prática será efectuada através de um trabalho prático a entregar no final do semestre em data a agendar. O enunciado correspondente está disponível aqui (Enunciado para alunos inscritos para melhoria).

Novos alunos e alunos repetentes sem nota prática. A inscrição nos turnos laboratoriais é obrigatória (e será feito controlo de presenças nas aulas). A nota prática resulta da avaliação obtida ao longo das aulas laboratoriais (avaliação contínua) e terá por base a realização de 3 fichas de trabalho e 2 trabalhos práticos.

Estudantes trabalhadores. A inscrição destes alunos nos turnos laboratoriais é opcional. Caso o aluno opte por não se inscrever nas aulas laboratoriais, a nota prática será obtida através da realização de um trabalho prático global (e as aulas laboratorias poderão ser frequentadas em regime livre).

Alunos repetentes com nota prática positiva. Os alunos que obtiveram classificação prática positiva no ano anterior poderão congelar essas notas para o ano corrente (deverão avisar os docentes). Para os alunos nestas condições que optem por não congelar a nota prática, a (nova) nota prática será obtida através da realização de um trabalho prático global. As aulas laboratorias poderão ser frequentadas em regime livre.

O ficheiro seguinte contém a lista de alunos em condições de congelar a nota prática obtida em 2003-2004 (LMCC). A decisão de congelar a nota deverá ser comunicada por e-mail a ManuelBernardoBarbosa.

Metodologia de Inscrições e Formação de Grupos de Trabalho

  • Cada turno prático terá no máximo 36 alunos inscritos (em regime de avaliação contínua), havendo ainda 3 máquinas (9 lugares) que poderão ser usados (em regime livre) pelos alunos sem inscrição obrigatória nos turnos.

  • As inscrições dos alunos nos turnos são individuais.
  • Dentro de cada turno serão formados grupos de 3 alunos.
  • O trabalho na aula é feito em grupo (fora da aula é como quizerem).
  • A nota prática é individual.

Equipa Docente

Horário Lectivo

  Horário Sala Docente
Teórica 2ªfeira 9:00-10:00 CP2.104 jmv
Teórica 4ªfeira 10:00-11:00 CP2.111 jmv
Turnos TP Horário Sala Docente
TP1 2ªfeira 17:00-18:00 CP3.402 jsp
TP2 3ªfeira 8:00-9:00 CP3.202 jsp
TP3 3ªfeira 12:00-13:00 CP1.215 jsp
Turnos P Horário Sala Docente
P1 2ªfeira 11:00-13:00 DI 0.11 mjf
P2 2ªfeira 18:00-20:00 DI 0.11 mjf
P3 3ªfeira 9:00-11:00 DI 0.11  
P4 5ªfeira 11:00-13:00 DI 0.11 omp
P5 6ªfeira 11:00-13:00 DI 0.11 mbb

Horário de Atendimento

Docente Horário
jmv 2as. 15-18, 3as. 15-18
jsp 2as. 14-17, 3as. 9-12
omp  
mjf 2as. 12-13 e 14-18
mbb 2as. 11-13 e 18-20, 3as. 18-20

Material Disponibilizado

Aulas Teóricas

Aulas Teórico-Práticas

Aulas Práticas

  • Ficha de trabalho número 1: Ficha1
  • Ficha de trabalho número 2: Ficha2
  • Ficha de trabalho número 3: Ficha3
  • Ficha de trabalho número 4: Ficha4
  • Ficha de trabalho número 5: Ficha5

Links Úteis

Exames

RTp1 07 Apr 2005 - 11:08 - NEW OlgaPacheco
++Resultados do Trabalho Prático nº 1

Grupo Trabalho nº1
G1 Sistema de Informação do Centro de Saúde de Amares
G2 Sistema de Informação da Câmara Municipal de Braga
G3 Sistema de Informação da Ponte da Barca
G4 Os Tribunais e os seus Sistemas de Informação
G5 Sistema de Informação da AGERE
G6 Sistema de Informação da Direcção Distrital de Finanças de Braga
G7 Sistema de Informação da Associação Académica da Universidade do Minho
G8 Sistemas de Informação do Ministério das Finanças
G9 Sistema de Informação da Repartição de Finanças do Concelho de Barcelos
G10 Sistema de Informação da Direcção Regional de Agricultura de Entre Douro e Minho
SpreadsheetUnderScrutinyAFPProject 04 Mar 2005 - 11:43 - r3 CupertinoMiranda

SpreadSheet under Scrutiny

Student: Cupertino Miranda

In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming environments for non-programmers. Their language of cell references and formulas offers only low-level expressiveness compared to regular programming languages. Still, huge numbers of large and often complex spreadsheets are created and maintained every day in all companies around the world. You will apply program understanding techniques to uncover the secrets of spreadsheets, and their potential flaws.
The UMinho Haskell Libraries already provide support for:

  • a. reading and parsing spreadsheets
  • b. analyzing the data flow in a spreadsheet
  • c. program understanding algorithms, such as slicing,formal concept analysis, and type reconstruction.

You will combine and extend this functionality into a tool that provides insight into spreadsheets beyond Excel's capabilities.

Presentations

Presentation from Cupertino Miranda about following papers:

  1. Header and Unit Inference for Spreadsheets Through Spatial Analyses, Robin Abraham and Martin Erwig. 2004
  2. A User-Centred Approach to Functions in Excel, Simon Peyton-Jones, Alan Blackwell and Margaret Burnett, 2003
  3. Slicing Spreadsheets: An Integrated Methodology for Spreadsheet Testing and Debugging, James Reichwein, Gregg Rothermel, Margaret Burnett, 1999

Final Presentation about Cupertino Miranda AFP Project:

-- CupertinoMiranda - 15 Dec 2004

SpreadsheetUnderScrutinyAFPProjectReport

SpreadsheetUnderScrutinyAFPProjectReport 05 Mar 2005 - 16:45 - r5 CupertinoMiranda
Spreadsheet Under Scrutiny - Project Report

Under construction

Introduction

Spreadsheet tools can be viewed as programming environments for non-programmers. Their language of cell references and formulas offers only low-level expressiveness compared to regular programming languages. Still, huge numbers of large and often complex spreadsheets are created and maintained every day in all companies around the world.

In this project i have developed a few tools and respective API for Spreadsheet Analysis.

Project Objectives

  • Completely read and create a data structure to Spreadsheet understanding.
  • Add more capabilities to Data-flow graph
  • Add slicing and chopping analysis
  • Implement a type inference system using the already implemented algorithm.

Data Structure

Basic Notions

At the beginning of the project there already exist a Schema for the Gnumeric XML file, and a little of this was already been converted to DTD. With this DTD file was already being generated (by DTDtoHaskell) a Haskell Structure for representation of the Gnumeric content. In this structure the cell content was represented as a String, and for that reason it was converted to a type Formula.

data Formula
  = Var String                      -- ^ Variables
  | Fun String [Formula]            -- ^ Function applications
  | Ref TWiki.CellRef (Maybe TWiki.CellRef)     -- ^ Cell or cell block reference

This modification to the data structure is made in the Makefile that generates the file with all the structure and that instances for XmlContent? (Syntax.hs). Equally in the make file is possible to generate the file SyntaxTermInstances.hs that contains instances for Term and Typeable.

For reading gnumeric files there is the function

readGnumeric :: (Term a, TWiki.XmlContent a) => TWiki.FilePath -> IO a
that given the file name it returns the Gmr'Workbook (root element) with cells content as Formulas This conversion is made by a type unifying strategic function that applies to every cell content the function 'parseFormula'.

In this part of the project i have totally (expected) convert the Schema to DTD and now every possible element of the Gnumeric file is represented in the data structure.

All this processed can be reverted so we can pretty print all the structure. For that already HaXML? already has the function showXML and Formula is instance of Show.

Dataflow Graph

The data-flow graph was one of the things that were previously made.

This graph is generated by a traversal function that for every Reference it creates a relation between the cell that contains the formula and the element referenced.

This was the first approach to data-flow graph, but it has a few problems because it doesn't support References to elements in diferent Sheets. I have resolved the problem by adding Sheet notion to

data TWiki.CellRef
  = TWiki.CellRef {
      sheet :: String,     -- ^ Sheet name
      colNr :: Int,        -- ^ Column index
      rowNr :: Int         -- ^ Row index
    }
and creating a new traversal function that for every Gmr'Sheet runs the previous explained data-flow function.

For the next slicing and chopping was important to have a expanded data-flow graph. For that reason i generalised the previous explained functions to accept as parameter the following functions

collectBlockRefs :: Term a => a -> [CellBlock] collectCellRefs :: Term a => a -> [CellRef]

that will be applied in all the formulas generating a Gph CellBlock? or a Gph CellRef? respectively.

Results

(under Construction)

Slicing and Chopping

For the slicing and chopping i already had generic functions and the only thing i have implemented was the filtering functions. This functions

filterExpandedDataflow :: Set TWiki.CellRef -> Gmr'Workbook -> Gmr'Workbook
filterCells :: Set TWiki.CellBlock -> Gmr'Workbook -> Gmr'Workbook
were created to filter Spreadsheets by some list of cells. This two functions were created so it would be possible to filter by CellRef? and CellBlock? for expanded and normal graphs respectively.

  • Slicing
    • Forward - group of cells that contribute to a specified group of cells.
    • Backward - group of cells that have value contribution from a specified group of cells.
  • Chopping - Is the interception between a Forward and Backward Slice.

For building the slicing/chopping already exist the sliceOrChopWith function that given a list of elements for sources and sinks and the dataflow graph it returns the list of elements that represent the slice/chop. This function was already defined in the Haskell Uminho Library.

Results

(under construction)

Type Inference

Future Work

Conclusion

-- CupertinoMiranda - 04 Mar 2005

StrategicQueryingXMLReport 28 Feb 2005 - 06:40 - r3 VitorRodrigues?

Project Report

This report presents the developed work on the project "Strategic Querying of XML Documents".

The results of this project are based on two generic traversal functions, based on Strafunski. One of this functions traverses the child nodes, while the other is a deep traversal function.

One Level Traversal Deep Traversal
One level traversal collection Deep Traversal collection
XPath: /X/A XPath: /X//A
Yellow circles represent collected 'A' items.

Mapping from XPATH, we have "/" as child traversing, and "//" as a deep traversal function. What as done was to create haskell functions (using Strafunski) to represent "/" and "//".

Traversal Functions

As explained before, the solution of te problem was mostly obtained defining twa major functions, as show next:

One Level Traversal Function

taagg cond a= maybe [] id (applyTU strategy a)
        where
                strategy = allTU (++) [] (adhocTU (constTU []) flp)
                flp x = if (cond x) then (return [x]) else (mzero)

Deep Traversal Function

deep::  (Term a, Term [a]) => (Element -> Bool) -> [a] -> [Element]
deep cond = runIdentity.applyTU strategy
        where
                strategy= collect (adhocTU (constTU []) flp)
                flp x=if (cond x) then (return [x]) else (return [])

Query Types

As you can see on the traversal functions defitinion, we only have to define the filtering function for each datatype that a Query can have. The filtering function behaves according to the Query data type received. Query datatypes are defined as follows:

data Query =    Tag String
                | TWiki.PrefTag String
                | TWiki.PostTag String
                | Attr [Attrib]
                | TWiki.PredTag String SFilter
                | TWiki.AttrTag String [Attrib]
                | TWiki.PosTag Query [Posicoes]

The possible queries have different means, as explained in next table:

Query Description
Tag Name get an element with the name 'Name'
Attr [Atts] get an element if it has all attributes in the list '[Atts]'
PosTag T [Pos] returns the positions '[Pos]' of the result of querying T
PredTag Name Pred returns all elements with name 'Name' and wich query Pred returns with success
PrefTag Name returns elements started by the string 'Name'
PrefTag Name returns elements that end with the string 'Name'
AttrTag Name [Atts] returns elements of name 'Name' with attributes '[Atts]'

The function function gives us the filter we need to apply to each of the Element intercepted in the traversal function. An example of a filter is:

...
function (Tag str) x@(Elem n a c) = (str=="*" || n==str)
...

As you can see, function returns a boolean, and it is applied as a filter on traversing functions (cond parameter on traversal functions).

Examples of queries:

The next examples show the mapping between Haskell+Strafunski queries and XPath queries:
Haskell+Strafunski XPath
(-/) Tag "alunos" / Tag "curso" /alunos/curso
(-/) Tag "curso" // PosTag (Attr "sobrenome") [pos 3] /curso//@sobrenome[3]
(-//) PrefTag "al" / Tag "nome" //al*/nome
(-/) Tag "curso" // PredTag "aluno" ((./) Tag "nome") /curso//aluno[./nome]

Future Work:

  • improve context based selection
  • implement text value selections
  • implement attribute value operations

Go back to StrategicXMLQueryingAFPProject

-- VitorRodrigues? - 27 Feb 2005

StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida

Strategic Querying of XML Documents

Student: VitorRodrigues?

In this project you will develop a set of combinators for querying XML documents expressed in the strafunski library. In particular we would like to embed the HaQuery language - devoled in the DI/UM - as a set of strafunski library. As a result, we will be able to define queries directly in Haskell/Strafunski whithout having to define/update a language processor for HaQuery as done before.
The Strafunski library already provides support for:

  • a. Parse/Unparse XML documents via the HaXml library
  • b. A set of basic combinators to express traversal functions over any data type
  • c. A prototype implementation of HaQuery and a library of Query combinators (defined by a group of AFP students last year).

You will express the existant HaQuery combinators directly in Strafunski.

  • The first step will be to express the HaXml cmbinators in Strafusnki, using the HaQuery combinators to generate the query tree.
  • The second step is to express the HaQuery combinators, directly with Strafunski, avoind the unnecessary creation of the query tree structure.

Recomended Literature

  1. XQuery: a typed functional language for querying XML, Philip Wadler, 2002
  2. A Strafunski Application Letter, Joost Visser and Ralf Laemmel, 2003 This paper presents the Strafunski libraries, and explains how it works, presenting some examples of Strafunski utilization, namely, in Haskell to Cobol reverse engineering, Java code metrics and Haskell re-engineering.
  3. The XQuery Formal Semantics: A Foundation for Implementation and Optimisation, Byron Choi, Mary Fernandez and Jrme Simon, 2002

Project Report: StrategicQueryingXMLReport

Download Project Source (See README for instructions.)

OtherProjects

-- JoaoSaraiva - 27 Oct 2004

StudentProjects 10 Mar 2004 - 10:37 - NEW RokPurkeljc

Ongoing projects

Project proposals

VitorRodrigues 09 Nov 2004 - 20:12 - NEW VitorRodrigues?

-- VitorRodrigues? - 09 Nov 2004

WebChanges 16 Aug 2001 - 19:56 - r2 PeterThoeny?

50 Recent Changes in TWiki Web retrieved at 16:24 (GMT)

MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros
Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ...
LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco
Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ...
LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ...
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida
Statistics for Education/Archive Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21) : Apresentação da Disciplina. Noção de refinamento. TP (2005.02.22, 2005.02.24) : Apresentação e marcação de turnos. Generalização das construções ...
MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida
Em principio quando é que sairão as notas da primeira chamada? Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem ...
MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias Enunciados Exames 1a. chamada 2a. chamada 3a. chamada Notas Época Especial (Outubro 2005) N. Nome Curso Nota Exame Nota Final ...
MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida
Métodos de Programação I 2005 2006 (anexo) ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html . Esta página destina ...
XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ...
EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project Grammar Engineering Location: Vrije Universiteit or CWI ...
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida
Haskell Biding to GraphViz Student : João Paulo Barbosa Overview This project consists of creating a Haskell binding to AT T's library. This involves using a Foreign ...
WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida
TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ...
StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida
Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ...
WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ...
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas: 2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada ...
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida
Sessão Laboratorial 3 Assuntos abordados nesta sessão: Obs.: Este guião tem seguimento no da próxima sessão. Definição de funções recursivas A recursividade é um ...
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida
Sessão Laboratorial 4 Este Guião é a continuação do da sessão anterior. Assuntos abordados nesta sessão: Funções de ordem superior simples Nas funções realizadas ...
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas Métodos de Programação IV (Modelação e Cálculo de Sistemas Reactivos) 2005 2006 Responsável pela Disciplina LuisSoaresBarbosa http ...
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção). MariaJoaoFrade ...
MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha
Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)? Claro que não! Faltam todos os operadores das somas ...
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial. 27 Jul Já saíram as notas das orais. 22 Jul Já saíram as notas do exame de recurso. As orais serão no dia ...
ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias Elementos Lógicos da Programação 3 Licenciatura em Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2004 2005 Responsável ...
MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias Métodos de Programação II 2004 2005 Sugestão de Leitura Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista ...
FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home Navegação Disciplinas MP1 MP2 PFA
InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca
Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes A criminalidade Informática nos tribunais Gestão do Conhecimento Pay Pal Voto Electrónico Segurança da Informa ...
InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca
Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva Sindicância de Dados Pessoais Formas de sindicância do cidadão comum sob os seus dados pessoais constantes ...
InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca
Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva A ASSINATURA DIGITAL Cartões Inteligentes Voto Electrónico Protecção dos Dados Pessoais Correio Electr ...
InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca
Ensaios de Silvia Vilas Boas Dias, Ana Rita Freitas e Angélica Sofia Campos Preservação da Proriedade Industrial Privacidade dos Dados Clínicos Voto Electrónico ...
InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca
Ensaios de Bruno Silva Voto Electrónico A Democracia nos dedos dos Cidadãos. Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito ...
InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca
Ensaios de Andreia Leite, Angela Santos e Vera Silva Base de Dados de Recolha Genética (2ª versão) Trabalho bem apresentado focando os argumentos essenciais deste ...
InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
Ensaios de Ana Pereira e Daniela Seixas Ética Hacker trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos JoseManuelValenca ...
InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca
Ensaios de Albina Pinheiro A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA ...
InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca
Ensaios de Sofia Silva Segurança na Net JoseManuelValenca 09 Jun 2005
InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães Esteganografia no Processo Civi MafaldaMagalhaes 08 Jun 2005 MafaldaMagalhaes 08 Jun 2005 ...
InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?
Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva Cartão Único AngelicaCampos 06 Jun 2005 Assinatura Digital Voto Electrónico O avanço tecnológico no ...
InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca
Ensaios de Susana Dias Tecnologias da Informação e Comunicação na Saúde A Progressiva Informatização no Direito (RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICA ...
InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins A informática na saúde Assinatura Digital Cartão Único do Cidadão Criptografia O perfil gen ...
InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca
Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto Identificação de dados pessoais sob o ponto vista financeiro Cartão Único Voto Electrónico Violação de Direitos ...
InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca
Ensaios de Adelaide Cerqueira e Sandra Pereira Criptografia e Assinatura Digital AdelaideCerqueira 23 May 2005 Segurança Informática Dados Pessoais Escritura ...
InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
Ensaios de Casimiro Rosa e Abilio Ribeiro A INternet e os Direitos de Autor Assinatura Digital Internet: Meio de Ultrapassar Barreiras Phishing: Alerta Máximo ...
InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca
Ensaios de Vitor Novo, Manuel Almeida e João Varela Privacidade dos Dados Clínicos Agentes e Eventos A Questão Humana na Segurança da Informacão (parte 1) Faz ...
InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca
Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede Bilhete de Identidade Electrónico BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA” OS DIREITOS DE ...
InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca
Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes Criptografia de Chave Pública: Confidencialidade e Autenticação A Internet: Um Espaço de Comunicação ...
InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca
Ensaios de Karina Silva e Eva Mendes Privacidade dos dados clínicos O voto electrónico A assinatura digital O correio electrónico A sociedade da informação ...
InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito "trabalho completo" JoseManuelValenca 25 May 2005
InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca
Ensaios de Eunice Coelho Titulo1 resumo1 Titulo1 Titulo2 resumo2 Titulo2
ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha
Elementos Lógicos da Programação III Projecto Prático Pretende se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model ...
Found 50 topics.

See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News

Feb. 17, 2004

May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004

Feb 6, 2004

Students interested in the Overture Project please contact to JNO. (NB: the Overture Modelling Language has great resemblance with VDM++)

Jan 31, 2004

Novas propostas para estágios curriculares em EstagiosProfisionais

January 29, 2004

Invitation to Wiki.

January 21, 2004

We have a new Wiki server for educational purposes!

Welcome to our Education.Archive Wiki!

This Wiki is maintained by the LMF research group.

If you need help using the Wiki goto the TWiki Web. If you want to contribute please register here (this is the case, for instance, for students who have been invited to maintain the pages of a course).

To navigate this Wiki use the links in the side bar.

Powered by TWiki

WebIndex 24 Nov 2001 - 11:36 - r2 PeterThoeny?
Education/Archive Web Changed Changed by
AdvancedFunctionalProgramming 20 Sep 2005 - 14:48 - r10 MariaJoaoFrade
Programação Funcional Avançada 2004 / 2005 AKA: Advanced Functional Programming General information Advanced Functional Programming is an optional course made available ...
AlgoritmosComplexidade 04 Mar 2006 - 01:48 - r18 JorgeSousaPinto
Notícias LMCC Algoritmos e Complexidade 2005 2006 Notas Notas Época Normal Notas Época Recurso Programa Resumido 1. Grafos: Conceitos e Algoritmos ...
AlgoritmosComplexidadeNews 04 Mar 2006 - 01:50 - r7 JorgeSousaPinto
Notas da época de recurso disponibilizadas nesta página JorgeSousaPinto 04 Mar 2006 Notas da época normal disponibilizadas nesta página JorgeSousaPinto ...
AnAnt0405 02 Mar 2006 - 09:44 - NEW OlgaPacheco
Desenvolvimento de Sistemas de Informação Licenciatura em Administração Pública 3º Ano 2º Semestre Ano lectivo 2004/2005 Avisos Os exames podem ...
AttackOnTheClones 16 Feb 2007 - 17:48 - r9 JoostVisser
The Attack On The Clones project is about the creation of a software clone detection portal. Phase 1 (Opção 3, sep 2003 feb 2004) The first edition of the Attack ...
AulDuv 19 Jan 2005 - 10:24 - r4 OlgaPacheco
Aulas de Dúvidas Dia Hora Local 20 de Janeiro 14h 18h DI A2 31 de Janeiro 14h a definir 1 de Fevereiro 14h a definir
ChopaChopsAFPProject 04 Mar 2005 - 19:36 - r5 JoaoPBarbosa
ChopaChops: view and manipulate Java program graphs Powered by Chocapic! Student : Patrick Machado In this project you will develop an interactive tool to view ...
ChopaChopsAFPProjectReport 04 Mar 2005 - 19:36 - r7 PatrickMachado?
Chopachops Report This page is under construction... Introdution !ChopaChops is a project for slicing and chopping in program graphs. Starting from the Java program ...
CloneDetectionAFPProject 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Home Page for the AdvancedFunctionalProgramming Project "Clone Detection in Haskell". To be filled with abundant and pertinent information. smile Work in progress ...
ComputacaoNatural 28 Feb 2005 - 20:56 - NEW RuiMendes
Eis a página da disciplina: http://colombo.di.uminho.pt/cnat RuiMendes 28 Feb 2005
DSINews 15 May 2006 - 09:30 - r10 OlgaPacheco
Aula 1 23 de Fevereiro Não houve aula. Motivo: Simpósio doutoral do DI. Aula 2 2 de Março Apresentação da disciplina. Apresentação do trabalho prático ...
DesenvolvimentoSistemasInformacao 21 Jul 2006 - 10:44 - r30 OlgaPacheco
Sumários Desenvolvimento de Sistemas de Informação Licenciatura em Administração Pública 3º Ano 2º Semestre Ano lectivo 2005/2006 ................ ...
DisambiguationGLR 03 Mar 2005 - 16:27 - r2 JoostVisser
Embedding Disambiguation Rules in the HaGLR System Student : Luís Pedro Machado In this project we will embed a domain specific language to express disambiguation ...
EDFS 26 Jan 2007 - 18:04 - r11 LuisSoaresBarbosa
SumáriosAulas Especificação e Desenvolvimento Formal de Software 2006 2007 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/ ...
EDFSSum 26 Jan 2007 - 18:00 - r13 LuisSoaresBarbosa
T (2006.10.21a) : Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação implementação ...
EducationNews 17 Feb 2004 - 13:55 - r7 JoseNunoOliveira
Feb. 17, 2004 May 14, 2004 is the deadline for submission to CoLogNet / Formal Methods Europe Symposium on Teaching Formal Methods 2004 Feb 6, 2004 Students interested ...
ElementosLogicosProgramacaoIII 18 Oct 2005 - 19:49 - r22 AlcinoCunha
Notícias Elementos Lógicos da Programação 3 Licenciatura em Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2004 2005 Responsável ...
ElementosLogicosProgramacaoIII0304 12 Feb 2007 - 19:15 - r12 JoseBacelarAlmeida
Elementos Lógicos da Programação III Licenciatura de Matemática e Ciências da Computação 3º Ano 2º Semestre Ano lectivo 2003/2004 Ùltima alteração: 12 ...
ElementosLogicosProgramacaoIIINews 18 Oct 2005 - 19:50 - r7 AlcinoCunha
18 Out Já saíram as notas do exame da época especial. 27 Jul Já saíram as notas das orais. 22 Jul Já saíram as notas do exame de recurso. As orais serão no dia ...
ElementosLogicosProgramacaoIIIProjecto 05 Apr 2005 - 07:48 - r3 AlcinoCunha
Elementos Lógicos da Programação III Projecto Prático Pretende se que modele e analise os dois problemas seguintes usando redes de petri e a ferramenta de model ...
EstagiosProfisionais 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
The following is a list of Undergraduate Project Proposals in the context of the Research.PURe project Grammar Engineering Location: Vrije Universiteit or CWI ...
FlexibleSkinLeftBar 03 Oct 2005 - 11:03 - r3 JoseBacelarAlmeida
Home Navegação Disciplinas MP1 MP2 PFA
FlexibleSkinStyleSheet 21 Jan 2004 - 22:20 - r2 AlcinoCunha
body { background color : lightgray; font family: Verdana, Arial, Helvetica, sans serif; font size: 12px ; } a:link { text decoration : none ; color : darkblue ...
FlexibleSkinTopBar 12 Feb 2007 - 19:20 - r3 JoseBacelarAlmeida
Education.Archive@LMF
FlexibleSkinTopicFooter 21 Jan 2004 - 22:16 - NEW AlcinoCunha
{ Edit Attach Ref By Printable Diffs More... }
FlexibleSkinTopicHeader 21 Jan 2004 - 22:08 - NEW AlcinoCunha
HaskellBindingToGraphViz 12 Feb 2007 - 19:32 - r10 JoseBacelarAlmeida
Haskell Biding to GraphViz Student : João Paulo Barbosa Overview This project consists of creating a Haskell binding to AT T's library. This involves using a Foreign ...
IJBib 11 Apr 2005 - 14:57 - r3 JoanaBoas?
fornecida por todos Sobre as ideias básicas de Criptografia (exigindo um pouco de Matemática) um livro importante é o Applied Cryptography de Bruce Schneier. ...
IJNews 05 Jul 2005 - 16:08 - r7 JoseManuelValenca
1 de Março início das aulas JoseManuelValenca 8 de Março devido à minha presença num júri não é possível dar a aula deste dia; nesta semana funciona só o turno ...
InformaticaJuridica 22 Feb 2007 - 11:54 - r64 JoseManuelValenca
Informática Jurídica Licenciatura em Direito 4º Ano 2º Semestre Ano lectivo 2005/2006 Programa Segurança Informática Programa detalhado Bibliografia ...
InformaticaJuridicaT10 25 May 2005 - 15:04 - r4 JoseManuelValenca
Ensaios de Helena Ribeiro, Arlindo Barros e Liliana Correia Sociedade de Informação – Cartão Único de Saúde Voto Electrónico Digitaliação de Livros Comércio Electr ...
InformaticaJuridicaT11 07 Jun 2005 - 22:29 - r4 TeresaBizarro?
Ensaios de Regina Fernandes, Teresa Bizarro e Monica Lourenço Operações bancárias on line: insegurança ou desconfiança TeresaBizarro 07 Jun 2005 Declarações ...
InformaticaJuridicaT12 11 Jun 2005 - 14:53 - r3 JoseManuelValenca
Ensaios de Ana Ferreira, Alexandra Cruz e Michelle Pinto A Avaliação de cada trabalho é feita numa escala de D (insatisfatório), C ou C (satisfatório), B ou B (bom ...
InformaticaJuridicaT13 13 Jul 2005 - 09:09 - r5 JoseManuelValenca
Ensaios de Claudio Carvalho, Elsa Barbosa e Silvia Silva A ASSINATURA DIGITAL Cartões Inteligentes Voto Electrónico Protecção dos Dados Pessoais Correio Electr ...
InformaticaJuridicaT14 01 Jun 2005 - 10:02 - r6 JoseManuelValenca
Ensaios de Joana Vilas Boas e Ana Daniela Barbosa Que força probatória terá uma mensagem de correio electrónico? O Voto Electrónico eCash Cifra Cartão Único do ...
InformaticaJuridicaT15 09 Jun 2005 - 10:51 - r6 JoseManuelValenca
Ensaios de Rosa Ribeiro, Claudia Cunha e Eva Fanzeres Assinatura Digital Bases de Dados Genéticos Partilha de Dados Pessoais Novas tecnologias: impacto na sociedade ...
InformaticaJuridicaT16 09 Jun 2005 - 10:53 - r2 JoseManuelValenca
Ensaios de Carlos Macedo Criptografia Direito vs Informática JoseManuelValenca 06 May 2005
InformaticaJuridicaT17 27 May 2005 - 14:37 - r2 JoseManuelValenca
Ensaios de Ana Peixoto e Paula Lopes O Uso das Tecnologias de Informação no âmbito do Direito Processual Penal A Utilização das Novas Tecnologias no Local de Trabalho ...
InformaticaJuridicaT18 31 May 2005 - 10:39 - r3 JoseManuelValenca
Ensaios de Jorge Serralheiro, Pedro Lima e Luis Cantanhede Bilhete de Identidade Electrónico BIOMETRIA: “SERÃO MESMO OS OLHOS O ESPELHO DA ALMA” OS DIREITOS DE ...
InformaticaJuridicaT19 25 May 2005 - 16:02 - r4 JoseManuelValenca
Ensaios de Angela Peixoto e Liliana Lourenço Assinatura Digital Sigilio Bancário Receita Electrónica Estampilhas Temporais Voto Electrónico JoseManuelValenca ...
InformaticaJuridicaT1A 12 Jun 2005 - 09:34 - r6 JoseManuelValenca
Ensaios de Ana Araújo Silva e Filipe Macedo Vigilância electrónica: Ponderação de princípios Este tema só perifericamente toca os objectivos deste curso; a exposi ...
InformaticaJuridicaT1B 30 Jun 2005 - 16:11 - r4 JoseManuelValenca
Ensaios de Silvia Vilas Boas Dias, Ana Rita Freitas e Angélica Sofia Campos Preservação da Proriedade Industrial Privacidade dos Dados Clínicos Voto Electrónico ...
InformaticaJuridicaT1C 31 May 2005 - 10:40 - r3 JoseManuelValenca
Ensaios de Vitor Novo, Manuel Almeida e João Varela Privacidade dos Dados Clínicos Agentes e Eventos A Questão Humana na Segurança da Informacão (parte 1) Faz ...
InformaticaJuridicaT1D 10 Jun 2005 - 16:25 - r4 JoseManuelValenca
Ensaios de Albina Pinheiro A INTERNET NA REALIZAÇÃO DE ESCRITURAS E OUTROS ACTOS NOTARIAIS ATÉ QUE PONTO SERÁ FIÁVEL E RECOMENDÁVEL O RECURSO A ESTA FERRAMENTA ...
InformaticaJuridicaT1E 31 May 2005 - 11:57 - r4 JoseManuelValenca
Ensaios de Adelaide Cerqueira e Sandra Pereira Criptografia e Assinatura Digital AdelaideCerqueira 23 May 2005 Segurança Informática Dados Pessoais Escritura ...
InformaticaJuridicaT1F 06 Jun 2005 - 13:04 - r3 AngelicaCampos?
Ensaios de Eva Sousa, Pedro Miguel Sousa e Manuela Silva Cartão Único AngelicaCampos 06 Jun 2005 Assinatura Digital Voto Electrónico O avanço tecnológico no ...
InformaticaJuridicaT2 21 Apr 2005 - 15:21 - r7 JoseManuelValenca
Ensaios de Eunice Coelho Titulo1 resumo1 Titulo1 Titulo2 resumo2 Titulo2
InformaticaJuridicaT20 25 May 2005 - 15:59 - NEW JoseManuelValenca
Ensaios de Diana Oliveira, Filipa Freitas e Elsa Direito "trabalho completo" JoseManuelValenca 25 May 2005
InformaticaJuridicaT21 11 Jun 2005 - 18:18 - r2 JoseManuelValenca
Ensaios de Ana Pereira e Daniela Seixas Ética Hacker trabalho interessante mas acaba por dar pouca informação mesmo sobre eventuais pricípios éticos JoseManuelValenca ...
InformaticaJuridicaT22 31 May 2005 - 09:14 - NEW JoseManuelValenca
Ensaios de Gloria Soares, Joana Carvalho e Raquel Gomes A Sociedade da Informação A segurança informática A criptografia ... ... JoseManuelValenca 31 May ...
InformaticaJuridicaT23 08 Jun 2005 - 13:55 - r3 MafaldaMagalhaes?
Ensaios de Henrique Cunha, Cristina Ferreira e Mafalda Magalhães Esteganografia no Processo Civi MafaldaMagalhaes 08 Jun 2005 MafaldaMagalhaes 08 Jun 2005 ...
InformaticaJuridicaT24 31 May 2005 - 14:42 - r2 JoseManuelValenca
Ensaios de Manuel Ferreira, Vania Rodrigues e Helena Silva O problema dos direitos de autor no mundo informático.. Software LIvre CRIMINALIDADE INFORMÁTICA: SPAM ...
InformaticaJuridicaT25 31 May 2005 - 11:40 - NEW JoseManuelValenca
Ensaios de Casimiro Rosa e Abilio Ribeiro A INternet e os Direitos de Autor Assinatura Digital Internet: Meio de Ultrapassar Barreiras Phishing: Alerta Máximo ...
InformaticaJuridicaT26 31 May 2005 - 14:57 - NEW JoseManuelValenca
Ensaios de Bebiana Rafaela Ribeiro, Carla Aguiar e Filipa Martins A informática na saúde Assinatura Digital Cartão Único do Cidadão Criptografia O perfil gen ...
InformaticaJuridicaT27 09 Jun 2005 - 10:55 - NEW JoseManuelValenca
Ensaios de Sofia Silva Segurança na Net JoseManuelValenca 09 Jun 2005
InformaticaJuridicaT28 13 Jul 2005 - 09:43 - NEW JoseManuelValenca
Ensaios de Jeana Costa, Pedro Bastos e Ana Nunes A criminalidade Informática nos tribunais Gestão do Conhecimento Pay Pal Voto Electrónico Segurança da Informa ...
InformaticaJuridicaT3 30 Jun 2005 - 16:11 - r12 JoseManuelValenca
Ensaios de Eunice Coelho Dados Pessoais Video Vigilância Trabalho 3 Trabalho 4 Trabalho 5
InformaticaJuridicaT4 13 Jul 2005 - 09:37 - r9 JoseManuelValenca
Ensaios de Elisa Faria, Susana Dourado e Vanessa Silva Sindicância de Dados Pessoais Formas de sindicância do cidadão comum sob os seus dados pessoais constantes ...
InformaticaJuridicaT5 25 May 2005 - 16:32 - r6 JoseManuelValenca
Ensaios de Isabel Nunes, Claudia Pereira e Ana Tavares Voto Electrónico Vantagens da implementação de um sistema de voto alternativo ao tradicional sistema de voto ...
InformaticaJuridicaT6 18 May 2005 - 09:53 - r2 JoseManuelValenca
Ensaios de Silvia Pinto e Tania Costa Informática Jurídica Voto Electrónico Assinaturas Digitais Teoria dos Sistemas Cartão Único do Cidadão JoseManuelValenca ...
InformaticaJuridicaT7 28 May 2005 - 18:17 - r8 JoseManuelValenca
Ensaios de Karina Silva e Eva Mendes Privacidade dos dados clínicos O voto electrónico A assinatura digital O correio electrónico A sociedade da informação ...
InformaticaJuridicaT8 10 Jun 2005 - 17:58 - r5 JoseManuelValenca
Ensaios de Alvaro Amorim, Carla Costa e Simone Marreiros Bases de Dados com Informação Genética Bom trabalho; claramente exposto e defendido; não tenho a certeza ...
InformaticaJuridicaT9 12 Jun 2005 - 14:19 - r5 JoseManuelValenca
Ensaios de Andreia Leite, Angela Santos e Vera Silva Base de Dados de Recolha Genética (2ª versão) Trabalho bem apresentado focando os argumentos essenciais deste ...
InformaticaJuridicaTA 31 May 2005 - 14:25 - r4 JoseManuelValenca
Ensaios de Carla Moreira, Silvia Fonseca e Vera Casto Identificação de dados pessoais sob o ponto vista financeiro Cartão Único Voto Electrónico Violação de Direitos ...
InformaticaJuridicaTB 13 Jun 2005 - 15:30 - r5 JoseManuelValenca
Ensaios de Bruno Silva Voto Electrónico A Democracia nos dedos dos Cidadãos. Este trabalho é muito extenso (não respeitou os limites indicados) e repete muito ...
InformaticaJuridicaTC 31 May 2005 - 14:12 - r4 JoseManuelValenca
Ensaios de Helder Oliveira e Luis OLiveira Pirataria Informática (doc) Cartão Comum do Cidadão Contratos na Internet O Preço da Segurança Violação da Correspond ...
InformaticaJuridicaTD 31 May 2005 - 10:57 - r3 JoseManuelValenca
Ensaios de Vanessa Freitas e Magda Nunes Assinatura Digital Identificação Retinal Ensino Electrónico Comércio Electrónico Voto Electrónico JoseManuelValenca ...
InformaticaJuridicaTE 31 May 2005 - 10:25 - r3 JoseManuelValenca
Ensaios de Catia Matos, Cecilia Cerqueira e Lucia Fernandes Criptografia de Chave Pública: Confidencialidade e Autenticação A Internet: Um Espaço de Comunicação ...
InformaticaJuridicaTF 01 Jun 2005 - 10:01 - r5 JoseManuelValenca
Ensaios de Susana Dias Tecnologias da Informação e Comunicação na Saúde A Progressiva Informatização no Direito (RE) PENSAR A SOCIEDADE DE INFORMAÇÃO E COMUNICA ...
LI1Aula1 04 Oct 2007 - 11:06 - r5 OlgaPacheco
Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ...
LI1Aula2 09 Oct 2007 - 12:28 - r7 JoseBarros
Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ...
LI1Aula3 23 Oct 2006 - 11:27 - r5 JoseBacelarAlmeida
Sessão Laboratorial 3 Assuntos abordados nesta sessão: Obs.: Este guião tem seguimento no da próxima sessão. Definição de funções recursivas A recursividade é um ...
LI1Aula4 23 Oct 2006 - 11:26 - NEW JoseBacelarAlmeida
Sessão Laboratorial 4 Este Guião é a continuação do da sessão anterior. Assuntos abordados nesta sessão: Funções de ordem superior simples Nas funções realizadas ...
LI1News 23 Feb 2007 - 22:46 - r8 JoseBacelarAlmeida
23/02/2007 : Já disponíveis as notas da época de recurso. 19/02/2007 : O exame de recurso será realizado na 4ª feira, às 14:30 no DI0.11. O exame incluirá as componentes ...
LabMF 26 Oct 2004 - 06:56 - r2 LuisSoaresBarbosa
SumáriosAulas Laboratório de Métodos Formais 2004 2005 Docente Coordenador Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Horário ...
LabMFGru 21 Sep 2004 - 14:58 - NEW LuisSoaresBarbosa
Grupos e Classificações Grupo Nr Nome Curso Data Apresentação Classificação ...
LabMFSum 21 Sep 2004 - 14:55 - NEW LuisSoaresBarbosa
T (2004.09.29) : Apresentação da Disciplina. Discussão das propostas de projectos. LuisSoaresBarbosa 21 Sep 2004
LaboratoriosInformatica1 03 Oct 2007 - 09:39 - r33 JoseBarros
Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ...
MFIGru 10 Feb 2005 - 02:18 - r2 LuisSoaresBarbosa
Classificações Exame (Época Normal) Nr Nome Exame Recurso Laboratório NOTA FINAL 35803 Alexandra Martins Silva 19 30969 Alexandre ...
MFISum 16 Dec 2004 - 16:54 - r6 OlgaPacheco
T (2004.09.23) : Apresentação da Disciplina. Introdução aos métodos formais de especificação e desenvolvimento de software. O binómio especificação implementação. ...
MFPII0405 26 Feb 2007 - 00:31 - r11 JoseBacelarAlmeida
SumáriosAulas Métodos Formais de Programação II 2004 2005 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Te ...
MFPIISum0405 26 Feb 2007 - 00:31 - r10 JoseBacelarAlmeida
T (2005.02.21) : Apresentação da Disciplina. Noção de refinamento. TP (2005.02.22, 2005.02.24) : Apresentação e marcação de turnos. Generalização das construções ...
MP2News 12 Jul 2005 - 15:22 - r34 MariaJoaoFrade
Sessão de esclarecimento de dúvidas na próxima 2ª feira (dia 18) às 14:30 na sala DI 0.02 . MariaJoaoFrade 12 Jul 2005 Os testes poderão ser consultados na ...
MP4Gru 02 Aug 2005 - 10:30 - r17 LuisSoaresBarbosa
Grupo Nr Nome Tema Class. PRÁTICA Exame (N) Exame (R) CLASS. FINAL 1 35840 José Tércio Soares D 15 13 14 35743 Pedro Machado D ...
MP4Sum 21 Feb 2006 - 14:34 - r9 LuisSoaresBarbosa
T (2006.02.21) : Apresentação da Disciplina. Introdução aos sistemas reactivos. Álgebras e Coalgebras. Tipos indutivos e coindutivos. Interação e comportamento. Comportamento ...
MenuTopics 19 Sep 2008 - 13:37 - r46 JoseBacelarAlmeida
AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI
MetProgr1News0405 12 Feb 2007 - 19:15 - r23 JoseBacelarAlmeida
Terão lugar (no anfiteatro A1 do DI) as seguintes sessões de esclarecimento de dúvidas: 2a.fa. 14 Fev 10:00, com possibilidade de consulta dos exames (1a. chamada ...
MetodosFormaisProgramacaoI 04 Mar 2005 - 16:51 - r13 LuisSoaresBarbosa
SumáriosAulas Métodos Formais de Programação I 2004 2005 Equipa Docente Teóricas: Luis Soares Barbosa http://www.di.uminho.pt/~lsb (url) Te ...
MetodosProgramacaoI 12 Feb 2007 - 19:48 - r20 JoseBacelarAlmeida
Métodos de Programação I 2005 2006 (anexo) ATENÇÃO: A página oficial da disciplina está alojada em http://www.di.uminho.pt/~jno/html/mpi.html . Esta página destina ...
MetodosProgramacaoI0405 12 Feb 2007 - 19:48 - r58 JoseBacelarAlmeida
Notícias Enunciados Exames 1a. chamada 2a. chamada 3a. chamada Notas Época Especial (Outubro 2005) N. Nome Curso Nota Exame Nota Final ...
MetodosProgramacaoIFAQ 16 Dec 2005 - 17:52 - r14 AlcinoCunha
Devemos nos restringir unicamente aos operadores Pointfree indicados no enunciado (não há o Either, por exemplo)? Claro que não! Faltam todos os operadores das somas ...
MetodosProgramacaoIFAQ0405 12 Feb 2007 - 19:48 - r112 JoseBacelarAlmeida
Em principio quando é que sairão as notas da primeira chamada? Seria possivel disponibilizarem na página o exame da primeira chamada? Seria bastante util para quem ...
MetodosProgramacaoII 18 Oct 2005 - 16:55 - r91 JoseBarros
Notícias Métodos de Programação II 2004 2005 Sugestão de Leitura Robert Floyd, um grande Cientista da Computação, recordado aqui nas palavras de outro grande cientista ...
MetodosProgramacaoIIFAQ 11 Jul 2005 - 14:59 - r113 TWikiGuest
FAQ de Métodos de Programação II Índice: Nas pautas que saíram relativamente ao ano 2004/05, alguns alunos têm como nota ' '. Em termos práticos, a que se resume ...
MetodosProgramacaoIV 11 Jul 2006 - 16:37 - r39 LuisSoaresBarbosa
SumáriosAulas Métodos de Programação IV (Modelação e Cálculo de Sistemas Reactivos) 2005 2006 Responsável pela Disciplina LuisSoaresBarbosa http ...
OlgaPacheco 16 Dec 2004 - 16:32 - NEW OlgaPacheco
PFNews 08 Mar 2006 - 17:17 - r23 MariaJoaoFrade
Os exames de recurso podem ser consultados no próximo dia 10 de Março (6ªfeira) das 15h00 às 16h00 no anfiteatro DI A1 (piso 0, junto à recepção). MariaJoaoFrade ...
PP1News 01 Mar 2005 - 18:30 - r12 MariaJoaoFrade
AVISO PROVAS ORAIS As provas orais irão realizar se na 6ªfeira dia 4 de Março, às 10:00 . Ponto de encontro: junto à secretaria do DI (piso 2). AVISO TURNOS ...
ParadigmasProgramacaoI0405 12 Feb 2007 - 19:15 - r57 JoseBacelarAlmeida
Notícias Paradigma da Programação I em Engenharia de Sistemas e Informática 1º Ano 1º Semestre (5301P3) Ano lectivo 2004/2005 (anteriores) Notas ...
ProgramacaoFuncional 23 Feb 2007 - 17:59 - r48 MariaJoaoFrade
Notícias Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre (7001N7) Ano lectivo 2005/2006 (anterior) Programa Na actual ...
ProgramacaoFuncional0405 12 Feb 2007 - 19:15 - r41 JoseBacelarAlmeida
Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre Ano lectivo 2004/2005 Notas Notas do exame de Recurso Notas ...
RTp1 07 Apr 2005 - 11:08 - NEW OlgaPacheco
Resultados do Trabalho Prático nº 1 Grupo Trabalho nº1 G1 de Informação do Centro de Saúde de Amares G2 de Informação da Câmara Municipal de Braga G3 ...
SpreadsheetUnderScrutinyAFPProject 04 Mar 2005 - 11:43 - r3 CupertinoMiranda
SpreadSheet under Scrutiny Student : Cupertino Miranda In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming ...
SpreadsheetUnderScrutinyAFPProjectReport 05 Mar 2005 - 16:45 - r5 CupertinoMiranda
Spreadsheet Under Scrutiny Project Report Under construction Introduction Spreadsheet tools can be viewed as programming environments for non programmers. Their ...
StrategicQueryingXMLReport 28 Feb 2005 - 06:40 - r3 VitorRodrigues?
Project Report This report presents the developed work on the project "Strategic Querying of XML Documents". The results of this project are based on two generic traversal ...
StrategicXMLQueryingAFPProject 12 Feb 2007 - 19:20 - r6 JoseBacelarAlmeida
Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ...
StudentProjects 10 Mar 2004 - 10:37 - NEW RokPurkeljc
Ongoing projects AttackOnTheClones Project proposals EstagiosProfisionais SIGInternshipProjects
VitorRodrigues 09 Nov 2004 - 20:12 - NEW VitorRodrigues?
VitorRodrigues 09 Nov 2004
WebChanges 16 Aug 2001 - 19:56 - r2 PeterThoeny?
WebHome 12 Feb 2007 - 19:20 - r29 JoseBacelarAlmeida
News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ...
WebIndex 24 Nov 2001 - 11:36 - r2 PeterThoeny?
See also the faster WebTopicList
WebLeftBar 13 Feb 2007 - 02:58 - r2 JoseBacelarAlmeida
Topics:
WebNotify 15 Mar 2004 - 10:55 - r8 JorgeSousaPinto
This is a subscription service to be automatically notified by e mail when topics change in this Education/Archive web. This is a convenient service, so you do not ...
WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida
TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ...
WebRss 30 Jan 2003 - 08:14 - NEW PeterThoeny?
TWiki's Education/Archive web /view/Education/Archive The web for users, groups and offices. TWiki is a Web Based Collaboration Platform for the Corporate World ...
WebSearch 08 Aug 2001 - 05:57 - r8 PeterThoeny?
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida
Statistics for Education/Archive Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicList 24 Nov 2001 - 11:36 - NEW PeterThoeny?
See also the verbose WebIndex.
XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida
XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ...
Found 120 topics.

See also the faster WebTopicList

WebLeftBar 13 Feb 2007 - 02:58 - r2 JoseBacelarAlmeida
  • Topics:

AeC
AFP
CA
CriptoBio
EDFS
EC
DSI
ELP1
ELP2
ELP3
IJ
LAD
LabMF
LI1
LC
MFP1
MFP2
MP1
MP2
MP4
Opcao III
PF
PP1
PP2
Estágios
Projectos
PhD@DI


  • Main Webs

WebNotify 15 Mar 2004 - 10:55 - r8 JorgeSousaPinto
This is a subscription service to be automatically notified by e-mail when topics change in this Education/Archive 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:

Format: <space><space><space>, followed by:
* Main.yourWikiName (if you want that the e-mail address in your home page is used)
* Main.yourWikiName - yourEmailAddress (if you want to specify a different e-mail address)
* Main.anyTWikiGroup (if you want to notify all members of a particular TWikiGroup)

Related topics: TWikiUsers, TWikiRegistration

WebPreferences 12 Feb 2007 - 19:20 - r25 JoseBacelarAlmeida

TWiki.Education/Archive Web Preferences

The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, i.e. TWikiGuest in the TWiki.Main web)

Preferences:

  • List of topics of the TWiki.Education/Archive web:
    • Set WEBTITLE = Education.Archive
    • Set WEBBGCOLOR = %6699CC

  • Web specific background color: (Pick a lighter one of the StandardColors)
    • Set WEBBGCOLOR = #6699CC

  • List this web in the SiteMap:
    • If yes, Set SITEMAPLIST = on, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Education/Archive.Topic links.
    • Set SITEMAPLIST = on
    • Set SITEMAPWHAT = Education.Archive Wiki.
    • Set SITEMAPUSETO = ...collaborate on

  • Exclude web from a web="all" search: (Set to on for hidden webs)
    • Set NOSEARCHALL =

  • Default template for new topics and form(s) for this web:
    • WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
    • TWiki.WebTopicEditTemplate: Site-level default template
    • TWikiForms: How to enable form(s)
    • Set WEBFORMS =

  • Web preferences that are not allowed to be overridden by user preferences:
    • Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

Notes:

  • A preference is defined as:
    6 spaces * Set NAME = value
    Example:
    • Set WEBBGCOLOR = #FFFFC0
  • Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
    • When you write variable %WEBBGCOLOR% , it gets expanded to #6699CC .
  • 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 new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).

Related Topics:

WebRss 30 Jan 2003 - 08:14 - NEW PeterThoeny?
TWiki's Education/Archive web http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive The web for users, groups and offices. TWiki is a Web-Based Collaboration Platform for the Corporate World. en-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/Archive http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive /twiki/pub/Main/LocalLogos/um_eengP.jpg MenuTopics http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/MenuTopics AeC AFP CA CriptoBio EDFS EC DSI ELP1 ELP2 ELP3 IJ LAD LabMF LI1 LC MFP1 MFP2 MP1 MP2 MP4 Opcao III PF PP1 PP2 Estágios Projectos PhD@DI (last changed by JoseBacelarAlmeida) 2008-09-19T13:37:28Z JoseBacelarAlmeida LI1Aula2 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LI1Aula2 Sessão Laboratorial 2 Nesta sessão pretende se tomar conhecimento com conceitos básicos da linguagem Haskell , nomeadamente: expressões e sua avaliação, ... (last changed by JoseBarros) 2007-10-09T12:28:47Z JoseBarros LI1Aula1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LI1Aula1 Sessão Laboratorial 1 Nesta primeira sessão pretende se familiarizar os alunos com o ambiente de programação que será utilizado nesta unidade curricular. Admite se ... (last changed by OlgaPacheco) 2007-10-04T11:06:18Z OlgaPacheco LaboratoriosInformatica1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/LaboratoriosInformatica1 Notícias Laboratórios Informática I em Engenharia Informática 1º Ano 1º Semestre Ano lectivo 2006/2007 Apresentação Na actual estrutura da Licenciatura ... (last changed by JoseBarros) 2007-10-03T09:39:08Z JoseBarros WebSearchAdvanced http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebSearchAdvanced (last changed by TWikiGuest) 2007-05-17T14:51:41Z guest ProgramacaoFuncional http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ProgramacaoFuncional Notícias Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre (7001N7) Ano lectivo 2005/2006 (anterior) Programa Na actual ... (last changed by MariaJoaoFrade) 2007-02-23T17:59:36Z MariaJoaoFrade WebLeftBar http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebLeftBar Topics: (last changed by JoseBacelarAlmeida) 2007-02-13T02:58:01Z JoseBacelarAlmeida XMLtoSQLConversionToolAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/XMLtoSQLConversionToolAFPProject XML to SQL Conversion Tool Student : RicardoVilaca Project Introduction In this project I have to develop a tool to XML SQL Conversion based on Haskell/Strafunski ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:32:09Z JoseBacelarAlmeida WebPreferences http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebPreferences TWiki.Education/Archive Web Preferences The following settings are web preferences of the TWiki.Education/Archive web. These preferences overwrite the site level ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:19Z JoseBacelarAlmeida WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/WebHome News Welcome to our Education.Archive Wiki! This Wiki is maintained by the LMF research group. If you need help using the Wiki goto the TWiki Web. If you want to ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:18Z JoseBacelarAlmeida StrategicXMLQueryingAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/StrategicXMLQueryingAFPProject Strategic Querying of XML Documents Student : VitorRodrigues In this project you will develop a set of combinators for querying XML documents expressed in the strafunski ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:20:18Z JoseBacelarAlmeida ProgramacaoFuncional0405 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ProgramacaoFuncional0405 Programação Funcional em Matemática e Ciências de Computação 1º Ano 1º Semestre Ano lectivo 2004/2005 Notas Notas do exame de Recurso Notas ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:15:22Z JoseBacelarAlmeida ParadigmasProgramacaoI0405 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/ParadigmasProgramacaoI0405 Notícias Paradigma da Programação I em Engenharia de Sistemas e Informática 1º Ano 1º Semestre (5301P3) Ano lectivo 2004/2005 (anteriores) Notas ... (last changed by JoseBacelarAlmeida) 2007-02-12T19:15:21Z JoseBacelarAlmeida RTp1 http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/RTp1 Resultados do Trabalho Prático nº 1 Grupo Trabalho nº1 G1 de Informação do Centro de Saúde de Amares G2 de Informação da Câmara Municipal de Braga G3 ... (last changed by OlgaPacheco) 2005-04-07T11:08:21Z OlgaPacheco SpreadsheetUnderScrutinyAFPProjectReport http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/SpreadsheetUnderScrutinyAFPProjectReport Spreadsheet Under Scrutiny Project Report Under construction Introduction Spreadsheet tools can be viewed as programming environments for non programmers. Their ... (last changed by CupertinoMiranda) 2005-03-05T16:45:42Z CupertinoMiranda SpreadsheetUnderScrutinyAFPProject http://wiki.di.uminho.pt/twiki/bin/view/Education/Archive/SpreadsheetUnderScrutinyAFPProject SpreadSheet under Scrutiny Student : Cupertino Miranda In this project you will develop a tool for spreadsheet assessment. Spreadsheet tools can be viewed as programming ... (last changed by CupertinoMiranda) 2005-03-04T11:43:25Z CupertinoMiranda
WebSearch 08 Aug 2001 - 05:57 - r8 PeterThoeny?

Web Search

Search: \.*

Found 0 topics.

  Advanced search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:       
(otherwise search Education/Archive Web only)

Other search options:
WebSearchAdvanced 17 May 2007 - 14:51 - NEW TWikiGuest

Warning
Can't INCLUDE TWiki.WebSearchAdvanced repeatedly, topic is already included.
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida

Statistics for Education/Archive Web

Month: Topic
views:
Topic
saves:
File
uploads:
Most popular
topic views:
Top contributors for
topic save and uploads:
Feb 2007 4488 4 1 2516 LaboratoriosInformatica1
248 WebHome
119 DesenvolvimentoSistemasInformacao
 98 ProgramacaoFuncional
 98 Education.LC.ELP1-0405
 90 Education.LC.ELP2-0405
 71 MetodosFormaisProgramacaoI
 64 MetodosProgramacaoII
 63 MFPII0405
 60 MetodosProgramacaoI
 57 EDFS
  5 AlcinoCunha
Jan 2007 11214 10 4 2983 LaboratoriosInformatica1
713 WebHome
614 DesenvolvimentoSistemasInformacao
438 ProgramacaoFuncional
389 MetodosFormaisProgramacaoI
367 EDFS
331 Education.LC.ELP2-0405
311 MetodosProgramacaoII
293 MFPII0405
241 ParadigmasProgramacaoI0405
208 MetodosProgramacaoI0405
 11 JoseManuelValenca
  3 LuisSoaresBarbosa
Dec 2006 6984 21 9 2159 LaboratoriosInformatica1
636 WebHome
279 MetodosProgramacaoII
250 WebRss
217 MetodosProgramacaoIV
204 ProgramacaoFuncional
202 EDFS
180 DesenvolvimentoSistemasInformacao
177 MetodosProgramacaoI
157 Education.LC.ELP2-0405
136 AlgoritmosComplexidade
 14 JoseManuelValenca
 11 LuisSoaresBarbosa
  5 JoseBacelarAlmeida
Nov 2006 9186 20 6 2910 LaboratoriosInformatica1
1080 WebHome
320 ProgramacaoFuncional
299 MetodosProgramacaoI
268 LI1Aula4
267 MetodosProgramacaoII
222 DesenvolvimentoSistemasInformacao
207 AlgoritmosComplexidade
205 MetodosProgramacaoIV
195 WebRss
173 EDFS
 21 JoseBacelarAlmeida
  3 LuisSoaresBarbosa
  2 AlcinoCunha
Oct 2006 11935 53 7 2994 LaboratoriosInformatica1
1622 WebHome
931 LI1Aula1
847 LI1Aula3
782 ProgramacaoFuncional
680 LI1Aula2
393 LI1Aula4
360 MetodosProgramacaoI
251 AlgoritmosComplexidade
246 MetodosProgramacaoII
222 WebRss
 52 JoseBacelarAlmeida
  8 MariaJoaoFrade
Sep 2006 4698 34 5 587 WebHome
270 ProgramacaoFuncional
229 MetodosProgramacaoI
219 AlgoritmosComplexidade
177 MetodosProgramacaoII
169 WebRss
161 DesenvolvimentoSistemasInformacao
143 MetodosProgramacaoIV
125 EDFS
111 Education.LC.ELP2-0405
102 MetodosFormaisProgramacaoI
 33 JoseBacelarAlmeida
  4 ManuelBernardoBarbosa
  1 JoostVisser
  1 AlcinoCunha
Aug 2006 3221 0 0 220 WebHome
201 WebRss
182 MetodosProgramacaoII
161 DesenvolvimentoSistemasInformacao
124 MetodosProgramacaoIV
113 Education.LC.ELP2-0405
109 ProgramacaoFuncional
108 EDFS
 85 WebStatistics
 77 AlgoritmosComplexidade
 76 InformaticaJuridica
 
Jul 2006 10334 51 29 2829 Education.LC.0506
1209 WebHome
781 MetodosProgramacaoIV
482 MetodosProgramacaoII
474 InformaticaJuridica
300 DesenvolvimentoSistemasInformacao
261 Education.LC.ELP2-0405
212 WebRss
210 AlgoritmosComplexidade
166 MFPII0405
165 MetodosProgramacaoIFAQ0405
 32 LuisSoaresBarbosa
 25 JoseManuelValenca
 13 MariaJoaoFrade
  7 OlgaPacheco
  3 JoseBacelarAlmeida
Jun 2006 9053 10 5 910 Education.LC.0506
908 WebHome
671 MetodosProgramacaoII
506 MetodosProgramacaoIV
390 DesenvolvimentoSistemasInformacao
236 Education.LC.ELP2-0405
235 WebStatistics
224 InformaticaJuridica
218 WebRss
214 MetodosProgramacaoIIFAQ
202 ProgramacaoFuncional
 12 MariaJoaoFrade
  3 LuisSoaresBarbosa
May 2006 9110 40 16 1014 Education.LC.0506
817 WebHome
535 MetodosProgramacaoII
421 MetodosProgramacaoIV
360 DesenvolvimentoSistemasInformacao
251 WebRss
223 Education.LC.ELP2-0405
221 MetodosProgramacaoIIFAQ
217 AlgoritmosComplexidade
211 MetodosProgramacaoIFAQ0405
192 InformaticaJuridica
 27 MariaJoaoFrade
 25 OlgaPacheco
  3 LuisSoaresBarbosa
  1 JoseManuelValenca
Apr 2006 8877 41 23 1003 WebHome
699 Education.LC.0506
686 MetodosProgramacaoII
572 MetodosProgramacaoIV
246 DesenvolvimentoSistemasInformacao
241 WebRss
213 ProgramacaoFuncional
206 MetodosProgramacaoIIFAQ
201 InformaticaJuridica
198 Education.LC.ELP2-0405
196 AlgoritmosComplexidade
 51 MariaJoaoFrade
  9 LuisSoaresBarbosa
  4 OlgaPacheco
Mar 2006 18866 69 24 1994 WebHome
1655 MetodosProgramacaoII
1075 Education.LC.0506
829 MetodosProgramacaoIV
762 ProgramacaoFuncional
740 AlgoritmosComplexidade
671 DesenvolvimentoSistemasInformacao
399 InformaticaJuridica
398 Education.LC.ELP1-0405
390 Education.LC.ELP2-0405
369 ParadigmasProgramacaoI0405
 57 MariaJoaoFrade
 25 OlgaPacheco
  5 JorgeSousaPinto
  5 JoseManuelValenca
  1 JoseBacelarAlmeida
Feb 2006 15368 45 9 2395 WebHome
1737 ProgramacaoFuncional
1590 AlgoritmosComplexidade
1289 MetodosProgramacaoII
500 WebChanges
485 MetodosProgramacaoIV
454 MetodosProgramacaoI
405 ParadigmasProgramacaoI0405
403 Education.LC.ELP1-0405
324 DesenvolvimentoSistemasInformacao
320 Education.LC.0506
 25 MariaJoaoFrade
 13 LuisSoaresBarbosa
 10 JorgeSousaPinto
  6 NunoRodrigues
Jan 2006 11976 18 9 1541 WebHome
1207 ProgramacaoFuncional
740 AlgoritmosComplexidade
719 MetodosProgramacaoI
506 ParadigmasProgramacaoI0405
499 MetodosProgramacaoII
347 WebChanges
344 MetodosProgramacaoI0405
283 MetodosProgramacaoIV
259 MetodosFormaisProgramacaoI
253 DesenvolvimentoSistemasInformacao
 11 NunoRodrigues
  7 MariaJoaoFrade
  6 LuisSoaresBarbosa
  3 JorgeSousaPinto
Dec 2005 17460 42 8 1795 MetodosProgramacaoI
1742 WebHome
1572 ProgramacaoFuncional
1100 AlgoritmosComplexidade
865 MetodosProgramacaoIFAQ
574 ParadigmasProgramacaoI0405
496 MetodosProgramacaoII
462 WebChanges
341 MetodosProgramacaoIV
327 DesenvolvimentoSistemasInformacao
315 MetodosProgramacaoI0405
 19 MariaJoaoFrade
 12 AlcinoCunha
  9 JorgeSousaPinto
  6 TWikiGuest
  2 LuisSoaresBarbosa
  2 NunoRodrigues
Nov 2005 14366 76 29 2114 WebHome
1954 MetodosProgramacaoI
1847 ProgramacaoFuncional
950 AlgoritmosComplexidade
458 MetodosProgramacaoII
451 ParadigmasProgramacaoI0405
412 WebChanges
374 MetodosProgramacaoIV
367 DesenvolvimentoSistemasInformacao
321 MetodosProgramacaoI0405
264 MetodosFormaisProgramacaoI
 53 MariaJoaoFrade
 15 NunoRodrigues
 11 JorgeSousaPinto
 11 JoseBacelarAlmeida
  6 AlcinoCunha
  6 JoseManuelValenca
  2 LuisSoaresBarbosa
  1 TWikiGuest
Oct 2005 16905 99 31 2528 WebHome
1702 ProgramacaoFuncional
1587 MetodosProgramacaoI
1035 MetodosProgramacaoII
1020 AlgoritmosComplexidade
688 MetodosProgramacaoI0405
657 ParadigmasProgramacaoI0405
435 WebChanges
365 DesenvolvimentoSistemasInformacao
364 MetodosProgramacaoIV
338 MetodosFormaisProgramacaoI
 58 MariaJoaoFrade
 44 JoseBacelarAlmeida
  9 JorgeSousaPinto
  7 JoseBarros
  6 GuilhermeLopes
  4 AlcinoCunha
  1 RicardoVilaca
  1 JoostVisser
Sep 2005 10482 85 4 1247 WebHome
1174 MetodosProgramacaoI0405
660 MetodosProgramacaoII
545 ParadigmasProgramacaoI0405
503 AlgoritmosComplexidade
384 MetodosFormaisProgramacaoI
328 WebChanges
300 MetodosProgramacaoIV
274 DesenvolvimentoSistemasInformacao
258 ProgramacaoFuncional
244 MFPII0405
 43 JorgeSousaPinto
 32 MariaJoaoFrade
  9 ManuelBernardoBarbosa
  4 JoseBacelarAlmeida
  1 AlcinoCunha
Aug 2005 7004 13 4 551 MetodosProgramacaoII
440 WebHome
324 ParadigmasProgramacaoI0405
286 MetodosProgramacaoIV
270 MFPII0405
229 MetodosProgramacaoI0405
217 InformaticaJuridica
213 DesenvolvimentoSistemasInformacao
212 MetodosProgramacaoIIFAQ
204 WebChanges
186 MetodosFormaisProgramacaoI
  7 LuisSoaresBarbosa
  7 JoseManuelValenca
  3 JoseBarros
Jul 2005 23588 100 32 6761 MetodosProgramacaoII
3236 WebHome
1399 WebChanges
1379 MFPII0405
1254 InformaticaJuridica
1029 Education.LC.ELP2-0405
992 MetodosProgramacaoIV
755 ElementosLogicosProgramacaoIII
492 DesenvolvimentoSistemasInformacao
437 MetodosProgramacaoI0405
357 ParadigmasProgramacaoI0405
 46 JoseManuelValenca
 43 AlcinoCunha
 12 JoseBarros
 11 OlgaPacheco
  6 JoseBacelarAlmeida
  5 MariaJoaoFrade
  4 JorgeSousaPinto
  3 LuisSoaresBarbosa
  1 TWikiGuest
  1 NunoRodrigues
Jun 2005 15695 108 16 3326 MetodosProgramacaoII
2232 WebHome
883 InformaticaJuridica
538 MetodosProgramacaoIV
508 MetodosProgramacaoIIFAQ
461 Education.LC.ELP2-0405
449 ElementosLogicosProgramacaoIII
367 MFPII0405
332 DesenvolvimentoSistemasInformacao
328 MetodosProgramacaoI0405
297 WebChanges
 74 JoseManuelValenca
 13 AlcinoCunha
 10 TWikiGuest
 10 MafaldaMagalhaes?
  8 MariaJoaoFrade
  3 JoseBarros
  3 LuisSoaresBarbosa
  2 OlgaPacheco
  1 AngelicaCampos?
May 2005 16871 302 113 2871 MetodosProgramacaoII
2158 WebHome
909 InformaticaJuridica
838 MetodosProgramacaoIIFAQ
705 MetodosProgramacaoIV
415 ElementosLogicosProgramacaoIII
381 Education.LC.ELP2-0405
341 MetodosProgramacaoI0405
307 MFPII0405
306 DesenvolvimentoSistemasInformacao
278 ParadigmasProgramacaoI0405
312 JoseManuelValenca
 39 LuisSoaresBarbosa
 16 MariaJoaoFrade
 12 AlcinoCunha
 12 NunoRodrigues
  9 TWikiGuest
  6 EuniceCoelho?
  3 OlgaPacheco
  2 JoseBarros
  2 JoseBacelarAlmeida
  2 AdelaideCerqueira?
Apr 2005 15701 173 40 3560 MetodosProgramacaoII
2328 WebHome
644 InformaticaJuridica
629 MetodosProgramacaoIIFAQ
594 MetodosProgramacaoIV
478 ElementosLogicosProgramacaoIII
439 Education.LC.ELP2-0405
382 MetodosProgramacaoI0405
338 MFPII0405
332 ParadigmasProgramacaoI0405
332 DesenvolvimentoSistemasInformacao
111 JoseManuelValenca
 47 AlcinoCunha
 17 JoseBacelarAlmeida
 16 OlgaPacheco
  7 LuisSoaresBarbosa
  6 JoseBarros
  4 TWikiGuest
  3 MariaJoaoFrade
  2 JoanaBoas?
Mar 2005 20386 378 47 3879 MetodosProgramacaoII
3160 WebHome
1957 MetodosProgramacaoI0405
858 ParadigmasProgramacaoI0405
788 MetodosProgramacaoIIFAQ
687 MetodosProgramacaoIV
651 ElementosLogicosProgramacaoIII
553 InformaticaJuridica
510 Education.LC.ELP2-0405
458 ProgramacaoFuncional0405
404 Education.LC.ELP1-0405
 83 JoseManuelValenca
 69 AlcinoCunha
 57 PatrickMachado?
 43 JoseBacelarAlmeida
 33 RicardoVilaca
 29 JoaoPBarbosa
 25 LuisSoaresBarbosa
 23 CupertinoMiranda
 20 MariaJoaoFrade
 16 TWikiGuest
 15 JoseBarros
Feb 2005 37569 168 37 13574 MetodosProgramacaoI0405
4417 ParadigmasProgramacaoI0405
3942 WebHome
2187 ProgramacaoFuncional0405
1959 Education.Criptografia.CriptografiaAplicada0405
1745 MetodosProgramacaoII
1236 MetodosFormaisProgramacaoI
1067 Education.LC.ELP1-0405
678 MetodosProgramacaoIFAQ0405
467 WebChanges
413 MetodosProgramacaoIV
 57 JoseBacelarAlmeida
 33 ManuelBernardoBarbosa
 31 MariaJoaoFrade
 29 AlcinoCunha
 23 JoseBarros
 11 LuisSoaresBarbosa
  9 OlgaPacheco
  5 JorgeSousaPinto
  5 JoseManuelValenca
  2 VitorRodrigues?
Jan 2005 16083 107 40 3501 MetodosProgramacaoI0405
3016 ParadigmasProgramacaoI0405
2201 WebHome
777 Education.Criptografia.CriptografiaAplicada0405
739 ProgramacaoFuncional0405
682 Education.LC.ELP1-0405
589 MetodosFormaisProgramacaoI
535 MetodosProgramacaoIFAQ0405
477 MetodosProgramacaoII
322 EDFS
204 Education.LC.ELP2-0405
 32 LuisSoaresBarbosa
 22 MariaJoaoFrade
 20 JorgeSousaPinto
 20 ManuelBernardoBarbosa
 17 JoseCarlosRamalho
 13 RicardoVilaca
 11 NunoRodrigues
  4 TWikiGuest
  3 OlgaPacheco
  3 JoseManuelValenca
  2 JoseBarros
Dec 2004 15117 213 54 3558 MetodosProgramacaoI0405
2330 WebHome
2233 ParadigmasProgramacaoI0405
1515 MetodosProgramacaoIFAQ0405
784 ProgramacaoFuncional0405
453 Education.Criptografia.CriptografiaAplicada0405
446 MetodosProgramacaoII
407 Education.LC.ELP1-0405
361 MetodosFormaisProgramacaoI
247 EDFS
210 Education.LC.ELP2-0405
 78 MariaJoaoFrade
 66 TWikiGuest
 31 JorgeSousaPinto
 22 JoseManuelValenca
 18 VitorRodrigues?
 14 NunoRodrigues
 13 ManuelBernardoBarbosa
  9 OlgaPacheco
  8 PatrickMachado?
  5 LuisSoaresBarbosa
  3 CupertinoMiranda
Nov 2004 20876 186 63 4512 MetodosProgramacaoI0405
3608 WebHome
2277 ParadigmasProgramacaoI0405
1681 MetodosProgramacaoIFAQ0405
1489 MetodosProgramacaoII
1033 WebStatistics
935 ProgramacaoFuncional0405
572 Education.LC.ELP1-0405
546 Education.Criptografia.CriptografiaAplicada0405
483 MetodosFormaisProgramacaoI
300 Education.LC.ELP2-0405
 75 MariaJoaoFrade
 40 JorgeSousaPinto
 35 TWikiGuest
 26 NunoRodrigues
 24 ManuelBernardoBarbosa
 22 JoseManuelValenca
  8 LuisSoaresBarbosa
  7 JoaoSaraiva
  7 JoostVisser
  3 RicardoVilaca
  2 VitorRodrigues?
Oct 2004 22609 248 92 5360 MetodosProgramacaoI0405
4435 WebHome
3066 ParadigmasProgramacaoI0405
1745 MetodosProgramacaoIFAQ0405
1395 ProgramacaoFuncional0405
724 MetodosProgramacaoII
691 MetodosFormaisProgramacaoI
683 Education.LC.ELP1-0405
662 CriptografiaAplicada0405
321 Education.LC.ELP2-0405
311 WebStatistics
112 MariaJoaoFrade
 53 JoseManuelValenca
 48 JorgeSousaPinto
 31 TWikiGuest
 23 JoaoSaraiva
 18 NunoRodrigues
 18 ManuelBernardoBarbosa
 17 LuisSoaresBarbosa
 10 JoseBarros
  7 JoostVisser
  3 OlgaPacheco
Sep 2004 9038 172 34 1468 MetodosProgramacaoI0405
1409 WebHome
1370 MetodosProgramacaoII
753 ParadigmasProgramacaoI0405
373 CriptografiaAplicada0405
317 ProgramacaoFuncional0405
242 Education.LC.ELP1-0405
237 MetodosProgramacaoIV
224 ElementosCriptografia0304
223 MetodosProgramacaoIFAQ0405
213 Education.LC.ELP2-0405
 68 MariaJoaoFrade
 46 ManuelBernardoBarbosa
 32 JorgeSousaPinto
 25 LuisSoaresBarbosa
 21 JoseManuelValenca
  7 NunoRodrigues
  3 OlgaPacheco
  2 JoseBacelarAlmeida
  1 TWikiGuest
  1 JoseBarros
Aug 2004 5200 9 5 988 WebStatistics
703 MetodosProgramacaoII
588 WebHome
475 ElementosCriptografia0304
256 MetodosProgramacaoIIFAQ
251 WebChanges
249 MetodosProgramacaoIV
186 Education.LC.ELP2-0405
175 ElementosLogicosProgramacaoIII0304
134 MenuTopics
113 MP2News
 14 ManuelBernardoBarbosa
Jul 2004 16576 57 21 7031 MetodosProgramacaoII
2242 WebHome
1356 ElementosLogicosProgramacaoIII0304
1330 Education.LC.ELP2-0405
931 MetodosProgramacaoIV
769 ElementosCriptografia0304
467 MetodosProgramacaoIIFAQ
400 WebStatistics
338 WebChanges
175 EstagiosProfisionais
174 MP2News
 39 ManuelBernardoBarbosa
 16 JoseBacelarAlmeida
 15 JorgeSousaPinto
  3 RokPurkeljc
  3 LuisSoaresBarbosa
  1 TWikiGuest
  1 NunoRodrigues
Jun 2004 10837 52 16 3798 MetodosProgramacaoII
1684 WebStatistics
1578 WebHome
1012 MetodosProgramacaoIIFAQ
506 MetodosProgramacaoIV
401 Education.LC.ELP2-0405
303 ElementosLogicosProgramacaoIII0304
261 ElementosCriptografia0304
155 WebChanges
112 EstagiosProfisionais
 93 MP2News
 37 JorgeSousaPinto
 13 ManuelBernardoBarbosa
 12 TWikiGuest
  6 LuisSoaresBarbosa
May 2004 8667 78 27 3122 MetodosProgramacaoII
1415 WebHome
1293 WebStatistics
764 MetodosProgramacaoIIFAQ
432 MetodosProgramacaoIV
330 Education.LC.ELP2-0405
239 ElementosCriptografia0304
234 ElementosLogicosProgramacaoIII0304
117 WebChanges
 81 MP2News
 79 CriptografiaMestrados0304
 29 ManuelBernardoBarbosa
 22 MariaJoaoFrade
 17 JorgeSousaPinto
 10 TWikiGuest
 10 JoseBacelarAlmeida
  8 NunoRodrigues
  5 LuisSoaresBarbosa
  4 JoaoFerreira
Apr 2004 7496 133 31 2936 MetodosProgramacaoII
1606 WebHome
1044 MetodosProgramacaoIIFAQ
326 MetodosProgramacaoIV
318 Education.LC.ELP2-0405
228 ElementosLogicosProgramacaoIII0304
226 ElementosCriptografia0304
104 EstagiosProfisionais
100 WebChanges
 88 WebStatistics
 62 StudentProjects
 41 TWikiGuest
 41 ManuelBernardoBarbosa
 31 LuisSoaresBarbosa
 26 JoseBacelarAlmeida
 15 JorgeSousaPinto
  4 NunoRodrigues
  4 MariaJoaoFrade
  1 JoseProenca
  1 JoostVisser
Mar 2004 8434 151 28 3290 MetodosProgramacaoII
1962 WebHome
451 MetodosProgramacaoIIFAQ
447 Education.LC.ELP2-0405
440 ElementosCriptografia0304
287 MetodosProgramacaoIV
268 ElementosLogicosProgramacaoIII0304
220 EstagiosProfisionais
171 MetodosProgramacaoI0405
109 WebStatistics
 81 StudentProjects
 35 ManuelBernardoBarbosa
 28 LuisSoaresBarbosa
 22 JoseCarlosRamalho
 21 JorgeSousaPinto
 18 NunoRodrigues
 16 JoseBacelarAlmeida
  9 TWikiGuest
  8 AlcinoCunha
  7 MariaJoaoFrade
  5 JoostVisser
  4 AlbertoSimoes
Feb 2004 1319 98 8 295 WebHome
202 ParadigmasProgramacaoII?
155 MetodosProgramacaoII
 79 FichasPraticas
 74 FichasPraticasFicha1
 74 EstagiosProfisionais
 55 ParadigmasProgramacaoIIPrograma?
 50 AvaliacaoPP2
 50 Education.LC.ELP2-0405
 49 TrabalhosPraticos
 45 MetodosProgramacaoI0405
 48 JoseCarlosRamalho
 28 ManuelBernardoBarbosa
 13 JoseBacelarAlmeida
  9 JoseNunoOliveira
  7 AlcinoCunha
  1 JorgeSousaPinto
Jan 2004 451 110 0 150 WebHome
 45 MetodosProgramacaoII
 43 WebPreferences
 37 FlexibleSkinStyleSheet
 33 EstagiosProfisionais
 32 MetodosProgramacaoIIFAQ
 24 FlexibleSkinTopBar
 11 FlexibleSkinLeftBar
 10 WebChanges
  9 WebIndex
  9 EducationNews
 98 AlcinoCunha
  6 JoostVisser
  3 ManuelBernardoBarbosa
  1 TestStudent?
  1 RalfLaemmel
  1 JoseBacelarAlmeida

Notes:

  • Do not edit this topic, it is updated automatically. (You can also force an update)
  • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
  • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
WebTopicList 24 Nov 2001 - 11:36 - NEW PeterThoeny?

See also the verbose WebIndex.

XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida

XML to SQL Conversion Tool

Student: RicardoVilaca

Project

Introduction

In this project I have to develop a tool to XML <-> SQL Conversion based on Haskell/Strafunski. The conversion scheme is based on the refinement calculus proposed in link

Objectives

  1. Define the datatypes of XMLSchema in Haskell
  2. Convert XML Schema datatypes to VDM-SL type definitions, using the datatypes defined in VooDooMFront.

XMLSchema

The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD. An XML Schema:

  • defines elements that can appear in a document
  • defines attributes that can appear in a document
  • defines which elements are child elements
  • defines the order of child elements
  • defines the number of child elements
  • defines whether an element is empty or can include text
  • defines data types for elements and attributes
  • defines default and fixed values for elements and attributes

Purpose of XML Schemas

The XML have many schema languages. This languages specify the structure of instance documents (e.g this element contains these elements, which contains these other elements, etc) and the datatype of each element/attribute (e.g this element shall hold an integer with the range 0 to 12,000).

Motivation for XML Schemas

The main motivation for the XMLSchema is that people are dissatisfied with DTDs:
  • The DTD it's in a different syntax. The XML (instance) document is writing using one syntax and the DTD using another syntax
  • Limited datatype capability.
    • DTDs support a very limited capability for specifying datatypes.
    • People desire a set of built-in datatypes compatible with those found in databases. DTD supports only 10 datatypes and XML Schemas supports 44+ datatypes

VDM-SL

VDM-SL Data Types

  • Basic Data Types
    • The Boolean Type
    • The Numeric Types: The five numeric types denote a hierarchy where real is the most general type followed by rat, int, nat and nat1.
      • Reals
      • Rationals
      • Integers
      • Naturals
      • Positive Naturals
    • The Character Type
    • The Quote Type: The quote type corresponds to enumerated types in a typical programming language.
  • Compound Types
    • Set Types: A set is an unordered collection of values, all of the same type, which is treated as a whole. All sets are finite, i.e. they contain only a finite number of elements. The elements of a set type can be arbitrarily complex, they could for example be sets themselves.
    • Sequence Types: A sequence value is an ordered collection of elements of some type indexed by 1, 2, ..., n; where n is the length of the sequence. A sequence type is the type of nite sequences of elements of a type, either including the empty sequence (seq0 type) or excluding it (seq1 type). The elements of a sequence type can be arbitrarily complex; they could e.g. be sequences themselves.
    • Map Types: A map type from a type A to a type B is a type that associates with each element of A (or a subset of A) an element of B. A map value can be thought of as an unordered collection of pairs. The first element in each pair is called a key, because it can be used as a key to get the second element (called the information part) in that pair. All key elements in a map must therefore be unique. All maps in VDM-SL are finite. The domain and range elements of a map type can be arbitrarily complex, they could e.g. be maps themselves. A special kind of map is the injective map. An injective map is one for which no element of the range is associated with more than one element of the domain. For an injective map it is possible to invert the map.
    • Product Types: The values of a product type are called tuples. A tuple is a xed length list where the i'th element of the tuple must belong to the i'th element of the product type
    • Composite Types: Composite types correspond to record types in programming languages. Thus, elements of this type are somewhat similar to the tuples described in the section about product types above. The di erence between the record type and the product type is that the di erent components of a record can be directly selected by means of corresponding selector functions. In addition records are tagged with an identi er which must be used when manipulating the record.
    • Union and Optional Types: The union type corresponds to a set-theoretic union, i.e. the type de ned by means of a union type will contain all the elements from each of the components of the union type. The optional type [T] is a kind of shorthand for a union type T | nil, where nil is used to denote the absence of a value.

Datatype Definition of XMLSchema in Haskell

For accomplish the first step I tried the following alternatives:

  1. UUXML (A Type-Preserving XML Schema Haskell Data Binding): Not a real tool (no implementation), just a theorethical conversion defined by Frank Atanassow, Dave Clarke and Johan Jeuring
  2. Haifa : Mapping of XML Schema data-types to Haskell by Simon Foster. This is a very simple data-type mapper, just for very simple XML Schema data-types. It also needs GHC 6.3/6.4 with full Generics.
  3. DtdToHaskell - HaXml: Download of the DTDs that define XMLSchema from W3C (http://www.w3.org/2001/XMLSchema.dtd and http://www.w3.org/2001/datatypes.dtd).The DtdToHaskell has a bug on parsing of Parameter Entity entities. Because of that I change the original DTDs using AltovaXMLSpy DTD Editor, replacing the entities by their definition, obtaining a equivalent version of the DTDs. Then using the DtdToHaskell tool from HaXml I define the datatypes from the changed version of the DTDs (XMLSchema.dtd and datatypes.dtd).

Conversion

Conversion of the Built-in Datatypes

  • string: A regular string. It is converted to seq of char
  • normalizedString: A string without tabs, line feeds, or carriage returns. It is converted to seq of char
  • token: String without tabs, l/f, leading/trailing spaces, consecutive spaces. It is converted to seq of char
  • integer: A regular integer. It is converted to int
  • int: -2147483648 to 2147483647. It is converted to int
  • unsignedInt: 0 to 4294967295. It is converted to nat
  • long: -9223372036854775808 to 9223372036854775807. It is converted to int
  • unsignedLong: 0 to 18446744073709551615. It is converted to nat
  • positiveInteger: 1 to infinity. It is converted to nat1
  • nonNegativeInteger: 0 to infinity. It is converted to nat
  • time: format: hh:mm:ss.sss Conversion ToDo
  • dateTime: format: CCYY-MM-DDThh:mm:ss Conversion ToDo
  • duration: Example P1Y2M3DT10H30M12? .3S Conversion ToDo
  • date: format: CCYY-MM-DD Conversion ToDo
  • gMonth: format: --MM-- Conversion ToDo
  • gYear: format: CCYY Conversion ToDo
  • gYearMonth: format: CCYY-MM Conversion ToDo
  • gDay: format: ---DD Conversion ToDo
  • gMonthDay: format: --MM-DD Conversion ToDo
  • Name: Conversion ToDo
  • byte: -127 to 128 Conversion ToDo
  • unsignedByte: 0 to 255 Conversion ToDo
  • base64Binary: a base64 string Conversion ToDo
  • hexBinary: a hex string Conversion ToDo
  • nonPositiveInteger: negative infinity to 0 Conversion ToDo
  • negativeInteger: negative infinity to -1 Conversion ToDo
  • Qname: a namespace qualified name Conversion ToDo
  • NCName: Conversion ToDo
  • anyURI: An URL. Conversion ToDo
  • language: Any valid xml:lang value, e.g., EN, FR, .. Conversion ToDo
  • ID: must be used only with attributes. Conversion ToDo
  • IDREF: must be used only with attributes. Conversion ToDo
  • IDREFS: must be used only with attributes. Conversion ToDo
  • ENTITY: must be used only with attributes. Conversion ToDo
  • ENTITIES: must be used only with attributes. Conversion ToDo
  • NOTATION: a NOTATION from the XML spec. Conversion ToDo
  • NMTOKEN: must be used only with attributes. Conversion ToDo
  • NMTOKENS: must be used only with attributes. Conversion ToDo

All the components have a type associated with it and some of them will define new type definitions.

Conversion of the components of XML Schema

  • Primary Schema Components
    • XML namespaces: ToDo
    • Simple Types Definitions:
    • Complex Type Definitions:
    • Element Declarations:
    • Attribute Declarations:
  • Secondary Schema Components: ToDo
    • Model Group Definitions
    • Attribute Group Definitions
    • Identity-constraint Definitions - Similar to ID / IDREF
    • Notations Declarations
    • Wildcards - Similar to a DTD with “ANY”
    • Annotations

Presentation of the studied papers

In 2003.12.15 I present the studied papers:

  1. Haskell and XML: Generic Combinators or Type-Based Translation?, Malcolm Wallace and Colin Runciman, 1999
  2. Comparative Analysis of Six XML Schema Languages, Dongwon Lee and Wesley W. Chu, 2001
  3. UUXML: A Type-Preserving XML Schema-Haskell Data Binding, Frank Atanassow, Dave Clarke, and Johan Jeuring 2004

Found 120 topics.

  Simple search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:


(otherwise search Education/Archive Web only)
Sort results by:


Make search:
(semicolon ; for and) about regular expression search
Don't show:

Do show: about BookView
Limit results to: (all to show all topics)

Other search options:
WebStatistics 26 Feb 2007 - 00:41 - r922 JoseBacelarAlmeida

Statistics for Education/Archive Web

Month: Topic
views:
Topic
saves:
File
uploads:
Most popular
topic views:
Top contributors for
topic save and uploads:
Feb 2007 4488 4 1 2516 LaboratoriosInformatica1
248 WebHome
119 DesenvolvimentoSistemasInformacao
 98 ProgramacaoFuncional
 98 Education.LC.ELP1-0405
 90 Education.LC.ELP2-0405
 71 MetodosFormaisProgramacaoI
 64 MetodosProgramacaoII
 63 MFPII0405
 60 MetodosProgramacaoI
 57 EDFS
  5 AlcinoCunha
Jan 2007 11214 10 4 2983 LaboratoriosInformatica1
713 WebHome
614 DesenvolvimentoSistemasInformacao
438 ProgramacaoFuncional
389 MetodosFormaisProgramacaoI
367 EDFS
331 Education.LC.ELP2-0405
311 MetodosProgramacaoII
293 MFPII0405
241 ParadigmasProgramacaoI0405
208 MetodosProgramacaoI0405
 11 JoseManuelValenca
  3 LuisSoaresBarbosa
Dec 2006 6984 21 9 2159 LaboratoriosInformatica1
636 WebHome
279 MetodosProgramacaoII
250 WebRss
217 MetodosProgramacaoIV
204 ProgramacaoFuncional
202 EDFS
180 DesenvolvimentoSistemasInformacao
177 MetodosProgramacaoI
157 Education.LC.ELP2-0405
136 AlgoritmosComplexidade
 14 JoseManuelValenca
 11 LuisSoaresBarbosa
  5 JoseBacelarAlmeida
Nov 2006 9186 20 6 2910 LaboratoriosInformatica1
1080 WebHome
320 ProgramacaoFuncional
299 MetodosProgramacaoI
268 LI1Aula4
267 MetodosProgramacaoII
222 DesenvolvimentoSistemasInformacao
207 AlgoritmosComplexidade
205 MetodosProgramacaoIV
195 WebRss
173 EDFS
 21 JoseBacelarAlmeida
  3 LuisSoaresBarbosa
  2 AlcinoCunha
Oct 2006 11935 53 7 2994 LaboratoriosInformatica1
1622 WebHome
931 LI1Aula1
847 LI1Aula3
782 ProgramacaoFuncional
680 LI1Aula2
393 LI1Aula4
360 MetodosProgramacaoI
251 AlgoritmosComplexidade
246 MetodosProgramacaoII
222 WebRss
 52 JoseBacelarAlmeida
  8 MariaJoaoFrade
Sep 2006 4698 34 5 587 WebHome
270 ProgramacaoFuncional
229 MetodosProgramacaoI
219 AlgoritmosComplexidade
177 MetodosProgramacaoII
169 WebRss
161 DesenvolvimentoSistemasInformacao
143 MetodosProgramacaoIV
125 EDFS
111 Education.LC.ELP2-0405
102 MetodosFormaisProgramacaoI
 33 JoseBacelarAlmeida
  4 ManuelBernardoBarbosa
  1 JoostVisser
  1 AlcinoCunha
Aug 2006 3221 0 0 220 WebHome
201 WebRss
182 MetodosProgramacaoII
161 DesenvolvimentoSistemasInformacao
124 MetodosProgramacaoIV
113 Education.LC.ELP2-0405
109 ProgramacaoFuncional
108 EDFS
 85 WebStatistics
 77 AlgoritmosComplexidade
 76 InformaticaJuridica
 
Jul 2006 10334 51 29 2829 Education.LC.0506
1209 WebHome
781 MetodosProgramacaoIV
482 MetodosProgramacaoII
474 InformaticaJuridica
300 DesenvolvimentoSistemasInformacao
261 Education.LC.ELP2-0405
212 WebRss
210 AlgoritmosComplexidade
166 MFPII0405
165 MetodosProgramacaoIFAQ0405
 32 LuisSoaresBarbosa
 25 JoseManuelValenca
 13 MariaJoaoFrade
  7 OlgaPacheco
  3 JoseBacelarAlmeida
Jun 2006 9053 10 5 910 Education.LC.0506
908 WebHome
671 MetodosProgramacaoII
506 MetodosProgramacaoIV
390 DesenvolvimentoSistemasInformacao
236 Education.LC.ELP2-0405
235 WebStatistics
224 InformaticaJuridica
218 WebRss
214 MetodosProgramacaoIIFAQ
202 ProgramacaoFuncional
 12 MariaJoaoFrade
  3 LuisSoaresBarbosa
May 2006 9110 40 16 1014 Education.LC.0506
817 WebHome
535 MetodosProgramacaoII
421 MetodosProgramacaoIV
360 DesenvolvimentoSistemasInformacao
251 WebRss
223 Education.LC.ELP2-0405
221 MetodosProgramacaoIIFAQ
217 AlgoritmosComplexidade
211 MetodosProgramacaoIFAQ0405
192 InformaticaJuridica
 27 MariaJoaoFrade
 25 OlgaPacheco
  3 LuisSoaresBarbosa
  1 JoseManuelValenca
Apr 2006 8877 41 23 1003 WebHome
699 Education.LC.0506
686 MetodosProgramacaoII
572 MetodosProgramacaoIV
246 DesenvolvimentoSistemasInformacao
241 WebRss
213 ProgramacaoFuncional
206 MetodosProgramacaoIIFAQ
201 InformaticaJuridica
198 Education.LC.ELP2-0405
196 AlgoritmosComplexidade
 51 MariaJoaoFrade
  9 LuisSoaresBarbosa
  4 OlgaPacheco
Mar 2006 18866 69 24 1994 WebHome
1655 MetodosProgramacaoII
1075 Education.LC.0506
829 MetodosProgramacaoIV
762 ProgramacaoFuncional
740 AlgoritmosComplexidade
671 DesenvolvimentoSistemasInformacao
399 InformaticaJuridica
398 Education.LC.ELP1-0405
390 Education.LC.ELP2-0405
369 ParadigmasProgramacaoI0405
 57 MariaJoaoFrade
 25 OlgaPacheco
  5 JorgeSousaPinto
  5 JoseManuelValenca
  1 JoseBacelarAlmeida
Feb 2006 15368 45 9 2395 WebHome
1737 ProgramacaoFuncional
1590 AlgoritmosComplexidade
1289 MetodosProgramacaoII
500 WebChanges
485 MetodosProgramacaoIV
454 MetodosProgramacaoI
405 ParadigmasProgramacaoI0405
403 Education.LC.ELP1-0405
324 DesenvolvimentoSistemasInformacao
320 Education.LC.0506
 25 MariaJoaoFrade
 13 LuisSoaresBarbosa
 10 JorgeSousaPinto
  6 NunoRodrigues
Jan 2006 11976 18 9 1541 WebHome
1207 ProgramacaoFuncional
740 AlgoritmosComplexidade
719 MetodosProgramacaoI
506 ParadigmasProgramacaoI0405
499 MetodosProgramacaoII
347 WebChanges
344 MetodosProgramacaoI0405
283 MetodosProgramacaoIV
259 MetodosFormaisProgramacaoI
253 DesenvolvimentoSistemasInformacao
 11 NunoRodrigues
  7 MariaJoaoFrade
  6 LuisSoaresBarbosa
  3 JorgeSousaPinto
Dec 2005 17460 42 8 1795 MetodosProgramacaoI
1742 WebHome
1572 ProgramacaoFuncional
1100 AlgoritmosComplexidade
865 MetodosProgramacaoIFAQ
574 ParadigmasProgramacaoI0405
496 MetodosProgramacaoII
462 WebChanges
341 MetodosProgramacaoIV
327 DesenvolvimentoSistemasInformacao
315 MetodosProgramacaoI0405
 19 MariaJoaoFrade
 12 AlcinoCunha
  9 JorgeSousaPinto
  6 TWikiGuest
  2 LuisSoaresBarbosa
  2 NunoRodrigues
Nov 2005 14366 76 29 2114 WebHome
1954 MetodosProgramacaoI
1847 ProgramacaoFuncional
950 AlgoritmosComplexidade
458 MetodosProgramacaoII
451 ParadigmasProgramacaoI0405
412 WebChanges
374 MetodosProgramacaoIV
367 DesenvolvimentoSistemasInformacao
321 MetodosProgramacaoI0405
264 MetodosFormaisProgramacaoI
 53 MariaJoaoFrade
 15 NunoRodrigues
 11 JorgeSousaPinto
 11 JoseBacelarAlmeida
  6 AlcinoCunha
  6 JoseManuelValenca
  2 LuisSoaresBarbosa
  1 TWikiGuest
Oct 2005 16905 99 31 2528 WebHome
1702 ProgramacaoFuncional
1587 MetodosProgramacaoI
1035 MetodosProgramacaoII
1020 AlgoritmosComplexidade
688 MetodosProgramacaoI0405
657 ParadigmasProgramacaoI0405
435 WebChanges
365 DesenvolvimentoSistemasInformacao
364 MetodosProgramacaoIV
338 MetodosFormaisProgramacaoI
 58 MariaJoaoFrade
 44 JoseBacelarAlmeida
  9 JorgeSousaPinto
  7 JoseBarros
  6 GuilhermeLopes
  4 AlcinoCunha
  1 RicardoVilaca
  1 JoostVisser
Sep 2005 10482 85 4 1247 WebHome
1174 MetodosProgramacaoI0405
660 MetodosProgramacaoII
545 ParadigmasProgramacaoI0405
503 AlgoritmosComplexidade
384 MetodosFormaisProgramacaoI
328 WebChanges
300 MetodosProgramacaoIV
274 DesenvolvimentoSistemasInformacao
258 ProgramacaoFuncional
244 MFPII0405
 43 JorgeSousaPinto
 32 MariaJoaoFrade
  9 ManuelBernardoBarbosa
  4 JoseBacelarAlmeida
  1 AlcinoCunha
Aug 2005 7004 13 4 551 MetodosProgramacaoII
440 WebHome
324 ParadigmasProgramacaoI0405
286 MetodosProgramacaoIV
270 MFPII0405
229 MetodosProgramacaoI0405
217 InformaticaJuridica
213 DesenvolvimentoSistemasInformacao
212 MetodosProgramacaoIIFAQ
204 WebChanges
186 MetodosFormaisProgramacaoI
  7 LuisSoaresBarbosa
  7 JoseManuelValenca
  3 JoseBarros
Jul 2005 23588 100 32 6761 MetodosProgramacaoII
3236 WebHome
1399 WebChanges
1379 MFPII0405
1254 InformaticaJuridica
1029 Education.LC.ELP2-0405
992 MetodosProgramacaoIV
755 ElementosLogicosProgramacaoIII
492 DesenvolvimentoSistemasInformacao
437 MetodosProgramacaoI0405
357 ParadigmasProgramacaoI0405
 46 JoseManuelValenca
 43 AlcinoCunha
 12 JoseBarros
 11 OlgaPacheco
  6 JoseBacelarAlmeida
  5 MariaJoaoFrade
  4 JorgeSousaPinto
  3 LuisSoaresBarbosa
  1 TWikiGuest
  1 NunoRodrigues
Jun 2005 15695 108 16 3326 MetodosProgramacaoII
2232 WebHome
883 InformaticaJuridica
538 MetodosProgramacaoIV
508 MetodosProgramacaoIIFAQ
461 Education.LC.ELP2-0405
449 ElementosLogicosProgramacaoIII
367 MFPII0405
332 DesenvolvimentoSistemasInformacao
328 MetodosProgramacaoI0405
297 WebChanges
 74 JoseManuelValenca
 13 AlcinoCunha
 10 TWikiGuest
 10 MafaldaMagalhaes?
  8 MariaJoaoFrade
  3 JoseBarros
  3 LuisSoaresBarbosa
  2 OlgaPacheco
  1 AngelicaCampos?
May 2005 16871 302 113 2871 MetodosProgramacaoII
2158 WebHome
909 InformaticaJuridica
838 MetodosProgramacaoIIFAQ
705 MetodosProgramacaoIV
415 ElementosLogicosProgramacaoIII
381 Education.LC.ELP2-0405
341 MetodosProgramacaoI0405
307 MFPII0405
306 DesenvolvimentoSistemasInformacao
278 ParadigmasProgramacaoI0405
312 JoseManuelValenca
 39 LuisSoaresBarbosa
 16 MariaJoaoFrade
 12 AlcinoCunha
 12 NunoRodrigues
  9 TWikiGuest
  6 EuniceCoelho?
  3 OlgaPacheco
  2 JoseBarros
  2 JoseBacelarAlmeida
  2 AdelaideCerqueira?
Apr 2005 15701 173 40 3560 MetodosProgramacaoII
2328 WebHome
644 InformaticaJuridica
629 MetodosProgramacaoIIFAQ
594 MetodosProgramacaoIV
478 ElementosLogicosProgramacaoIII
439 Education.LC.ELP2-0405
382 MetodosProgramacaoI0405
338 MFPII0405
332 ParadigmasProgramacaoI0405
332 DesenvolvimentoSistemasInformacao
111 JoseManuelValenca
 47 AlcinoCunha
 17 JoseBacelarAlmeida
 16 OlgaPacheco
  7 LuisSoaresBarbosa
  6 JoseBarros
  4 TWikiGuest
  3 MariaJoaoFrade
  2 JoanaBoas?
Mar 2005 20386 378 47 3879 MetodosProgramacaoII
3160 WebHome
1957 MetodosProgramacaoI0405
858 ParadigmasProgramacaoI0405
788 MetodosProgramacaoIIFAQ
687 MetodosProgramacaoIV
651 ElementosLogicosProgramacaoIII
553 InformaticaJuridica
510 Education.LC.ELP2-0405
458 ProgramacaoFuncional0405
404 Education.LC.ELP1-0405
 83 JoseManuelValenca
 69 AlcinoCunha
 57 PatrickMachado?
 43 JoseBacelarAlmeida
 33 RicardoVilaca
 29 JoaoPBarbosa
 25 LuisSoaresBarbosa
 23 CupertinoMiranda
 20 MariaJoaoFrade
 16 TWikiGuest
 15 JoseBarros
Feb 2005 37569 168 37 13574 MetodosProgramacaoI0405
4417 ParadigmasProgramacaoI0405
3942 WebHome
2187 ProgramacaoFuncional0405
1959 Education.Criptografia.CriptografiaAplicada0405
1745 MetodosProgramacaoII
1236 MetodosFormaisProgramacaoI
1067 Education.LC.ELP1-0405
678 MetodosProgramacaoIFAQ0405
467 WebChanges
413 MetodosProgramacaoIV
 57 JoseBacelarAlmeida
 33 ManuelBernardoBarbosa
 31 MariaJoaoFrade
 29 AlcinoCunha
 23 JoseBarros
 11 LuisSoaresBarbosa
  9 OlgaPacheco
  5 JorgeSousaPinto
  5 JoseManuelValenca
  2 VitorRodrigues?
Jan 2005 16083 107 40 3501 MetodosProgramacaoI0405
3016 ParadigmasProgramacaoI0405
2201 WebHome
777 Education.Criptografia.CriptografiaAplicada0405
739 ProgramacaoFuncional0405
682 Education.LC.ELP1-0405
589 MetodosFormaisProgramacaoI
535 MetodosProgramacaoIFAQ0405
477 MetodosProgramacaoII
322 EDFS
204 Education.LC.ELP2-0405
 32 LuisSoaresBarbosa
 22 MariaJoaoFrade
 20 JorgeSousaPinto
 20 ManuelBernardoBarbosa
 17 JoseCarlosRamalho
 13 RicardoVilaca
 11 NunoRodrigues
  4 TWikiGuest
  3 OlgaPacheco
  3 JoseManuelValenca
  2 JoseBarros
Dec 2004 15117 213 54 3558 MetodosProgramacaoI0405
2330 WebHome
2233 ParadigmasProgramacaoI0405
1515 MetodosProgramacaoIFAQ0405
784 ProgramacaoFuncional0405
453 Education.Criptografia.CriptografiaAplicada0405
446 MetodosProgramacaoII
407 Education.LC.ELP1-0405
361 MetodosFormaisProgramacaoI
247 EDFS
210 Education.LC.ELP2-0405
 78 MariaJoaoFrade
 66 TWikiGuest
 31 JorgeSousaPinto
 22 JoseManuelValenca
 18 VitorRodrigues?
 14 NunoRodrigues
 13 ManuelBernardoBarbosa
  9 OlgaPacheco
  8 PatrickMachado?
  5 LuisSoaresBarbosa
  3 CupertinoMiranda
Nov 2004 20876 186 63 4512 MetodosProgramacaoI0405
3608 WebHome
2277 ParadigmasProgramacaoI0405
1681 MetodosProgramacaoIFAQ0405
1489 MetodosProgramacaoII
1033 WebStatistics
935 ProgramacaoFuncional0405
572 Education.LC.ELP1-0405
546 Education.Criptografia.CriptografiaAplicada0405
483 MetodosFormaisProgramacaoI
300 Education.LC.ELP2-0405
 75 MariaJoaoFrade
 40 JorgeSousaPinto
 35 TWikiGuest
 26 NunoRodrigues
 24 ManuelBernardoBarbosa
 22 JoseManuelValenca
  8 LuisSoaresBarbosa
  7 JoaoSaraiva
  7 JoostVisser
  3 RicardoVilaca
  2 VitorRodrigues?
Oct 2004 22609 248 92 5360 MetodosProgramacaoI0405
4435 WebHome
3066 ParadigmasProgramacaoI0405
1745 MetodosProgramacaoIFAQ0405
1395 ProgramacaoFuncional0405
724 MetodosProgramacaoII
691 MetodosFormaisProgramacaoI
683 Education.LC.ELP1-0405
662 CriptografiaAplicada0405
321 Education.LC.ELP2-0405
311 WebStatistics
112 MariaJoaoFrade
 53 JoseManuelValenca
 48 JorgeSousaPinto
 31 TWikiGuest
 23 JoaoSaraiva
 18 NunoRodrigues
 18 ManuelBernardoBarbosa
 17 LuisSoaresBarbosa
 10 JoseBarros
  7 JoostVisser
  3 OlgaPacheco
Sep 2004 9038 172 34 1468 MetodosProgramacaoI0405
1409 WebHome
1370 MetodosProgramacaoII
753 ParadigmasProgramacaoI0405
373 CriptografiaAplicada0405
317 ProgramacaoFuncional0405
242 Education.LC.ELP1-0405
237 MetodosProgramacaoIV
224 ElementosCriptografia0304
223 MetodosProgramacaoIFAQ0405
213 Education.LC.ELP2-0405
 68 MariaJoaoFrade
 46 ManuelBernardoBarbosa
 32 JorgeSousaPinto
 25 LuisSoaresBarbosa
 21 JoseManuelValenca
  7 NunoRodrigues
  3 OlgaPacheco
  2 JoseBacelarAlmeida
  1 TWikiGuest
  1 JoseBarros
Aug 2004 5200 9 5 988 WebStatistics
703 MetodosProgramacaoII
588 WebHome
475 ElementosCriptografia0304
256 MetodosProgramacaoIIFAQ
251 WebChanges
249 MetodosProgramacaoIV
186 Education.LC.ELP2-0405
175 ElementosLogicosProgramacaoIII0304
134 MenuTopics
113 MP2News
 14 ManuelBernardoBarbosa
Jul 2004 16576 57 21 7031 MetodosProgramacaoII
2242 WebHome
1356 ElementosLogicosProgramacaoIII0304
1330 Education.LC.ELP2-0405
931 MetodosProgramacaoIV
769 ElementosCriptografia0304
467 MetodosProgramacaoIIFAQ
400 WebStatistics
338 WebChanges
175 EstagiosProfisionais
174 MP2News
 39 ManuelBernardoBarbosa
 16 JoseBacelarAlmeida
 15 JorgeSousaPinto
  3 RokPurkeljc
  3 LuisSoaresBarbosa
  1 TWikiGuest
  1 NunoRodrigues
Jun 2004 10837 52 16 3798 MetodosProgramacaoII
1684 WebStatistics
1578 WebHome
1012 MetodosProgramacaoIIFAQ
506 MetodosProgramacaoIV
401 Education.LC.ELP2-0405
303 ElementosLogicosProgramacaoIII0304
261 ElementosCriptografia0304
155 WebChanges
112 EstagiosProfisionais
 93 MP2News
 37 JorgeSousaPinto
 13 ManuelBernardoBarbosa
 12 TWikiGuest
  6 LuisSoaresBarbosa
May 2004 8667 78 27 3122 MetodosProgramacaoII
1415 WebHome
1293 WebStatistics
764 MetodosProgramacaoIIFAQ
432 MetodosProgramacaoIV
330 Education.LC.ELP2-0405
239 ElementosCriptografia0304
234 ElementosLogicosProgramacaoIII0304
117 WebChanges
 81 MP2News
 79 CriptografiaMestrados0304
 29 ManuelBernardoBarbosa
 22 MariaJoaoFrade
 17 JorgeSousaPinto
 10 TWikiGuest
 10 JoseBacelarAlmeida
  8 NunoRodrigues
  5 LuisSoaresBarbosa
  4 JoaoFerreira
Apr 2004 7496 133 31 2936 MetodosProgramacaoII
1606 WebHome
1044 MetodosProgramacaoIIFAQ
326 MetodosProgramacaoIV
318 Education.LC.ELP2-0405
228 ElementosLogicosProgramacaoIII0304
226 ElementosCriptografia0304
104 EstagiosProfisionais
100 WebChanges
 88 WebStatistics
 62 StudentProjects
 41 TWikiGuest
 41 ManuelBernardoBarbosa
 31 LuisSoaresBarbosa
 26 JoseBacelarAlmeida
 15 JorgeSousaPinto
  4 NunoRodrigues
  4 MariaJoaoFrade
  1 JoseProenca
  1 JoostVisser
Mar 2004 8434 151 28 3290 MetodosProgramacaoII
1962 WebHome
451 MetodosProgramacaoIIFAQ
447 Education.LC.ELP2-0405
440 ElementosCriptografia0304
287 MetodosProgramacaoIV
268 ElementosLogicosProgramacaoIII0304
220 EstagiosProfisionais
171 MetodosProgramacaoI0405
109 WebStatistics
 81 StudentProjects
 35 ManuelBernardoBarbosa
 28 LuisSoaresBarbosa
 22 JoseCarlosRamalho
 21 JorgeSousaPinto
 18 NunoRodrigues
 16 JoseBacelarAlmeida
  9 TWikiGuest
  8 AlcinoCunha
  7 MariaJoaoFrade
  5 JoostVisser
  4 AlbertoSimoes
Feb 2004 1319 98 8 295 WebHome
202 ParadigmasProgramacaoII?
155 MetodosProgramacaoII
 79 FichasPraticas
 74 FichasPraticasFicha1
 74 EstagiosProfisionais
 55 ParadigmasProgramacaoIIPrograma?
 50 AvaliacaoPP2
 50 Education.LC.ELP2-0405
 49 TrabalhosPraticos
 45 MetodosProgramacaoI0405
 48 JoseCarlosRamalho
 28 ManuelBernardoBarbosa
 13 JoseBacelarAlmeida
  9 JoseNunoOliveira
  7 AlcinoCunha
  1 JorgeSousaPinto
Jan 2004 451 110 0 150 WebHome
 45 MetodosProgramacaoII
 43 WebPreferences
 37 FlexibleSkinStyleSheet
 33 EstagiosProfisionais
 32 MetodosProgramacaoIIFAQ
 24 FlexibleSkinTopBar
 11 FlexibleSkinLeftBar
 10 WebChanges
  9 WebIndex
  9 EducationNews
 98 AlcinoCunha
  6 JoostVisser
  3 ManuelBernardoBarbosa
  1 TestStudent?
  1 RalfLaemmel
  1 JoseBacelarAlmeida

Notes:

  • Do not edit this topic, it is updated automatically. (You can also force an update)
  • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
  • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
WebTopicList 24 Nov 2001 - 11:36 - NEW PeterThoeny?

See also the verbose WebIndex.

XMLtoSQLConversionToolAFPProject 12 Feb 2007 - 19:32 - r7 JoseBacelarAlmeida

XML to SQL Conversion Tool

Student: RicardoVilaca

Project

Introduction

In this project I have to develop a tool to XML <-> SQL Conversion based on Haskell/Strafunski. The conversion scheme is based on the refinement calculus proposed in link

Objectives

  1. Define the datatypes of XMLSchema in Haskell
  2. Convert XML Schema datatypes to VDM-SL type definitions, using the datatypes defined in VooDooMFront.

XMLSchema

The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD. An XML Schema:

  • defines elements that can appear in a document
  • defines attributes that can appear in a document
  • defines which elements are child elements
  • defines the order of child elements
  • defines the number of child elements
  • defines whether an element is empty or can include text
  • defines data types for elements and attributes
  • defines default and fixed values for elements and attributes

Purpose of XML Schemas

The XML have many schema languages. This languages specify the structure of instance documents (e.g this element contains these elements, which contains these other elements, etc) and the datatype of each element/attribute (e.g this element shall hold an integer with the range 0 to 12,000).

Motivation for XML Schemas

The main motivation for the XMLSchema is that people are dissatisfied with DTDs:
  • The DTD it's in a different syntax. The XML (instance) document is writing using one syntax and the DTD using another syntax
  • Limited datatype capability.
    • DTDs support a very limited capability for specifying datatypes.
    • People desire a set of built-in datatypes compatible with those found in databases. DTD supports only 10 datatypes and XML Schemas supports 44+ datatypes

VDM-SL

VDM-SL Data Types

  • Basic Data Types
    • The Boolean Type
    • The Numeric Types: The five numeric types denote a hierarchy where real is the most general type followed by rat, int, nat and nat1.
      • Reals
      • Rationals
      • Integers
      • Naturals
      • Positive Naturals
    • The Character Type
    • The Quote Type: The quote type corresponds to enumerated types in a typical programming language.
  • Compound Types
    • Set Types: A set is an unordered collection of values, all of the same type, which is treated as a whole. All sets are finite, i.e. they contain only a finite number of elements. The elements of a set type can be arbitrarily complex, they could for example be sets themselves.
    • Sequence Types: A sequence value is an ordered collection of elements of some type indexed by 1, 2, ..., n; where n is the length of the sequence. A sequence type is the type of nite sequences of elements of a type, either including the empty sequence (seq0 type) or excluding it (seq1 type). The elements of a sequence type can be arbitrarily complex; they could e.g. be sequences themselves.
    • Map Types: A map type from a type A to a type B is a type that associates with each element of A (or a subset of A) an element of B. A map value can be thought of as an unordered collection of pairs. The first element in each pair is called a key, because it can be used as a key to get the second element (called the information part) in that pair. All key elements in a map must therefore be unique. All maps in VDM-SL are finite. The domain and range elements of a map type can be arbitrarily complex, they could e.g. be maps themselves. A special kind of map is the injective map. An injective map is one for which no element of the range is associated with more than one element of the domain. For an injective map it is possible to invert the map.
    • Product Types: The values of a product type are called tuples. A tuple is a xed length list where the i'th element of the tuple must belong to the i'th element of the product type
    • Composite Types: Composite types correspond to record types in programming languages. Thus, elements of this type are somewhat similar to the tuples described in the section about product types above. The di erence between the record type and the product type is that the di erent components of a record can be directly selected by means of corresponding selector functions. In addition records are tagged with an identi er which must be used when manipulating the record.
    • Union and Optional Types: The union type corresponds to a set-theoretic union, i.e. the type de ned by means of a union type will contain all the elements from each of the components of the union type. The optional type [T] is a kind of shorthand for a union type T | nil, where nil is used to denote the absence of a value.

Datatype Definition of XMLSchema in Haskell

For accomplish the first step I tried the following alternatives:

  1. UUXML (A Type-Preserving XML Schema Haskell Data Binding): Not a real tool (no implementation), just a theorethical conversion defined by Frank Atanassow, Dave Clarke and Johan Jeuring
  2. Haifa : Mapping of XML Schema data-types to Haskell by Simon Foster. This is a very simple data-type mapper, just for very simple XML Schema data-types. It also needs GHC 6.3/6.4 with full Generics.
  3. DtdToHaskell - HaXml: Download of the DTDs that define XMLSchema from W3C (http://www.w3.org/2001/XMLSchema.dtd and http://www.w3.org/2001/datatypes.dtd).The DtdToHaskell has a bug on parsing of Parameter Entity entities. Because of that I change the original DTDs using AltovaXMLSpy DTD Editor, replacing the entities by their definition, obtaining a equivalent version of the DTDs. Then using the DtdToHaskell tool from HaXml I define the datatypes from the changed version of the DTDs (XMLSchema.dtd and datatypes.dtd).

Conversion

Conversion of the Built-in Datatypes

  • string: A regular string. It is converted to seq of char
  • normalizedString: A string without tabs, line feeds, or carriage returns. It is converted to seq of char
  • token: String without tabs, l/f, leading/trailing spaces, consecutive spaces. It is converted to seq of char
  • integer: A regular integer. It is converted to int
  • int: -2147483648 to 2147483647. It is converted to int
  • unsignedInt: 0 to 4294967295. It is converted to nat
  • long: -9223372036854775808 to 9223372036854775807. It is converted to int
  • unsignedLong: 0 to 18446744073709551615. It is converted to nat
  • positiveInteger: 1 to infinity. It is converted to nat1
  • nonNegativeInteger: 0 to infinity. It is converted to nat
  • time: format: hh:mm:ss.sss Conversion ToDo
  • dateTime: format: CCYY-MM-DDThh:mm:ss Conversion ToDo
  • duration: Example P1Y2M3DT10H30M12? .3S Conversion ToDo
  • date: format: CCYY-MM-DD Conversion ToDo
  • gMonth: format: --MM-- Conversion ToDo
  • gYear: format: CCYY Conversion ToDo
  • gYearMonth: format: CCYY-MM Conversion ToDo
  • gDay: format: ---DD Conversion ToDo
  • gMonthDay: format: --MM-DD Conversion ToDo
  • Name: Conversion ToDo
  • byte: -127 to 128 Conversion ToDo
  • unsignedByte: 0 to 255 Conversion ToDo
  • base64Binary: a base64 string Conversion ToDo
  • hexBinary: a hex string Conversion ToDo
  • nonPositiveInteger: negative infinity to 0 Conversion ToDo
  • negativeInteger: negative infinity to -1 Conversion ToDo
  • Qname: a namespace qualified name Conversion ToDo
  • NCName: Conversion ToDo
  • anyURI: An URL. Conversion ToDo
  • language: Any valid xml:lang value, e.g., EN, FR, .. Conversion ToDo
  • ID: must be used only with attributes. Conversion ToDo
  • IDREF: must be used only with attributes. Conversion ToDo
  • IDREFS: must be used only with attributes. Conversion ToDo
  • ENTITY: must be used only with attributes. Conversion ToDo
  • ENTITIES: must be used only with attributes. Conversion ToDo
  • NOTATION: a NOTATION from the XML spec. Conversion ToDo
  • NMTOKEN: must be used only with attributes. Conversion ToDo
  • NMTOKENS: must be used only with attributes. Conversion ToDo

All the components have a type associated with it and some of them will define new type definitions.

Conversion of the components of XML Schema

  • Primary Schema Components
    • XML namespaces: ToDo
    • Simple Types Definitions:
    • Complex Type Definitions:
    • Element Declarations:
    • Attribute Declarations:
  • Secondary Schema Components: ToDo
    • Model Group Definitions
    • Attribute Group Definitions
    • Identity-constraint Definitions - Similar to ID / IDREF
    • Notations Declarations
    • Wildcards - Similar to a DTD with “ANY”
    • Annotations

Presentation of the studied papers

In 2003.12.15 I present the studied papers:

  1. Haskell and XML: Generic Combinators or Type-Based Translation?, Malcolm Wallace and Colin Runciman, 1999
  2. Comparative Analysis of Six XML Schema Languages, Dongwon Lee and Wesley W. Chu, 2001
  3. UUXML: A Type-Preserving XML Schema-Haskell Data Binding, Frank Atanassow, Dave Clarke, and Johan Jeuring 2004

Found 120 topics.
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM