Minho Aveiro Porto
  • Courses (2007-08)
Universidades:
Universidade do Minho
Universidade de Aveiro
Universidade do Porto
 
Semester 1 Foundations of Computing Option 1: Program Semantics, Verification, and Construction
Option 2: Advanced Topics in Information Security
Programming Paradigms Option 1: Autonomous Agents and Multi-Agent Systems
Option 2: Model-driven Software Engineering
Option 3: Advanced Topics in Data Mining and Logic Programming
Thematic Option: Global Computing Option 1: Cluster and Grid Computing
Option 2: Distributed Computing
Option 3: Architecture and Design of Large-Scale Software Systems
Thematic Seminars on Global Computing to be announced
Seminar  
Semester 2 Information Technologies Option 1: Intelligent Robotics
Option 2: Computer Vision
Option 3: Distributed Computer Graphics
Free Option  
Cultural Option  
Thesis Planing  

Semester 1

Foundations of Computing

Option 1: Program Semantics, Verification, and Construction
Overview.

The reliability of computing systems plays an essential role in modern society, where so many areas of human activity depend on technology. The deliverables of software projects may no longer be limited to code; the ability to produce certified code is now crucial. Code may be certified as being functionally correct, or as possessing certain execution properties (for instance, a program may be certified as not trying to access unauthorised resources).

The ability to certify software in this way requires a sound knowledge of the theory of programming languages and mathematical reasoning tools, as well as acquaintance with tool-assisted techniques. This course gives an overview of the theory of programming languages at an advanced level and then goes on to apply the theory to methods for obtaining correct, certified software.

Aims.
  • to present in a systematic way a vast set of results in fundamental areas of Theoretical Computer Science, in particular Logic, Lambda-calculus, Type Theory and Programming Language Semantics, as well as the relationships between them;

  • to introduce several rigorous approaches to the production of correct software, namely

    • in Program Verification , the activity that aims to establish that a

      program effectively behaves according to its specification, or that its behaviour is characterised by a set of given properties;

    • in Mathematical Program Construction , a method for obtaining correct programs from specifications, strongly based on program calculation.

Syllabus.
  1. Overview of Foundations
  2. Program Verification
  3. Program Construction

Option 2: Advanced Topics in Information Security
Overview.

Information is a crucial resource of today's economy and society at large. Information differs radically from other resources in that, for instance, it can be copied practically without cost and it can be altered or destroyed without leaving traces. The protection of information and intellectual property in general poses enormous challenges. Information security, in particular cryptography, is an enabling technology that is vital for the development of the information society. The objective of this course is to expose students to cutting-edge research topics in relevant areas in information security. The course will cover both theoretical and applied issues in information security.

At the theoretical level, there are two types of cryptographic security. The security of a cryptographic system can rely either on the computational infeasibility of breaking the scheme (computational security), or on the theoretical impossibility of breaking it, even using infinite computing power (information- theoretic or unconditional security). While theoretical analysis of most practical schemes seems to rely solely on the former approach, information theoretic security arguments are central to many computational security results. Furthermore, there has been a resurgent interest in information theoretic security in novel areas such as quantum cryptography and security over wireless channels.

Aims.

This course covers both computational and information-theoretic security approaches, as well as their combined use in cryptography. These complementary views are presented by instructors who conduct active research in these fields. The course also covers the application of information security technology to real life problems, including selected computer and network security topics. Critical information society services, such as electronic voting, secure identification and privacy protection, will be used as case studies of both the theoretical and practical issues involved, taking advantage of the experience of both the instructors and invited speakers in these areas.

The course is not intended as an introductory survey in any of these areas, although it is planned that, throughout the course, some of the lectures will be crash-courses where relevant background is revised. Instead, the focus will be on advanced topics and recent results. The course will emphasise definitions, foundations, and a formal approach to information security.

Syllabus.
  1. Foundations of cryptography
  2. Applications of computational number theory to cryptography
  3. Information theoretic security and quantum cryptography
  4. Privacy and anonymity concerns and solutions

Programming Paradigms

Option 1: Autonomous Agents and Multi-Agent Systems
Overview.

Advanced Computing models no longer lay on monolithic conceptualization. Knowledge distribution, decentralization, ubiquity, now available by means of web repositories and services accessible through networks, make a new metaphor for computing highly relevant: Agent-oriented Computing. Computing is then seen as the interaction between autonomous, decentralized entities (Agents) that may lead to computer-based social organizations called Multi-Agent Systems. A number of other disciplines include as an important tool the concepts of agent and multi-agent systems: simulation, computer networks, software engineering, artificial intelligence, human-computer interaction, distributed and concurrent systems, mobile systems, telematics, computer-supported cooperative work, control systems, decision support, information retrieval and electronic commerce, just to name some of them. Moreover, computing frameworks and tools to facilitate both the creation and utilization of Agents have been made available which makes it easier to generate synergies with other emerging technological areas as it is the case of: Semantic Web, Web Services and Service Oriented Computing, Peer-to-Peer Computing, Grid Computing and Ambient Intelligence. Autonomous Agents as well as Multi-Agent Systems are then scientific disciplines which are closely related to a number of other technologies important for application domains where networking and interoperability are crucial.

Aims.
  • To provide a global perspective of the available techniques for the specification and implementation of Autonomous Software Agents and Multi-Agent Systems
  • To introduce an advanced perspective on important Agents and Multi-Agent systems research topics.
  • To highlight the Multi-Agent Systems practical application capabilities through realistic examples.
  • To present Agent Oriented Programming as a new metaphor for both the specification and implementation of Distributed and Decentralized computer systems.
Syllabus.
  1. Multi-Agent Systems in the context of Distributed Artificial Intelligence
  2. Agents and Agent-Oriented programming metaphor
  3. Learning Agents
  4. Interaction in Multi-Agent Systems
  5. Agents Negotiation
  6. Multiple Agent System design: application example

Option 2: Model-driven Software Engineering
Overview.

Mathematical modeling has a well-known tradition in both exact and social sciences In the context of software engineering, mathematical models are the essence of so-called model-oriented specification, a formal technique which has been in use for many years in methodologies such as e.g. VDM, Z or B.

More recently, the term model-driven engineering (MDE) was coined to refer to the use of generative and transformational techniques for software engineering where system implementations are (semi-) automatically derived from models or specifications. It consists of systematically using (formal or semi-formal) "models" as primary engineering artifacts throughout the production lifecycle. Models are therefore regarded as first class entities, as expressed by the adagium "Everything is a Model".

The course proposes an approach to Software Engineering based on the central role of models, their construction, validation, verification, transformation and reuse. It seeks to lay the foundations for a sound discipline of Model-driven Software Engineering, instead of adopting a particular formalism, method or notation.

Aims.

The main objective is this course is to cover, both from the foundational and the methodological point of view, the construction, analysis, design, classification, animation, validation and verification of models for software systems at different levels of abstraction and concern.

As a second objective it aims at providing the conceptual tools for the use of models in all phases of the software process, with a particular emphasis on test planning and code generation.

The course is not intended as an introductory survey to Model-driven Software Engineering, but as an opportunity of exposing students to cutting-edge research topics in this area, although presented in a coherent and integrated way.

Syllabus.
  1. Principles of model-driven software engineering
  2. Models
  3. Model quality
  4. Model verification and validation
  5. Model transformation
  6. Model-based testing
  7. Re-engineering
  8. Case-study

Option 3: Advanced Topics in Data Mining and Logic Programming
Overview.

The course is designed to introduce research at the intersection of two areas in computer science: design and implementation of programming languages and data mining. Data mining is currently one of the most vibrant and challenging fields of study in computer science. The ever-growing heaps of ever more complex data that society nowadays collects in every activity demand continuously for new ways of exploring stored information. This opens up new opportunities but also introduces new challenges, such as the ones related to the need to process multi-relational data. Formalisms based in Logic Programming, such as Inductive Logic Programming, are widely seen as fundamental to progress in this area.

The course introduces both the foundations of Machine Learning and Data Mining, on the one hand, and the foundations of Logic Programming, on other hand, and explain how they can work together through Inductive Logic Programming.

The course has a strong research focus, and is geared at introducing the student to recent progress in these exciting and quickly evolving fields.

Aims.

On completing the course, students should be able to:

  • Identify data mining tasks, apply data mining algorithms and evaluate their application.
  • Understand the fundamental theoretic and practical principals of logic programming concepts and techniques.
  • Understand the mechanisms needed to achieve efficient implementation of logic programming systems.
  • Have the ability to design and implement prototype programs using the systems presented during the course.
Syllabus.
  1. Data Mining
  2. Logic Programming
  3. Advanced Logic Programming
  4. Inductive Logic Programming

Thematic Option: Global Computing

Option 1: Cluster and Grid Computing
Overview.

This course is structured in 3 main parts. The first one is dedicated to basic concepts of parallel and distributed computing focusing on parallel programming models, parallel architectures, including modern multi-cores and multi-processors, performance metrics, performance analysis, parallel benchmarks, and state-of-the-art in parallel and distributed computing. The second part shifts to what is currently considered the main stream in distributed computing worldwide: cluster computing. In this part of the course, the student will have the opportunity to understand what is a cluster, how to develop applications for a cluster, how to configure a cluster. In the third part of the course, we will concentrate on today's hot topics, which are grid computing and data grid, where the student will have the opportunity to understand what is a grid, its functioning, and will be able to appreciate current developments in grid computing and data grid, as well as to identify limitations of the algorithms and techniques used to implement grid-aware systems.

Aims.

The course aims at enhancing student's ability to work in a rapidly advancing field so that they find themselves

  • familiar with the fundamental components of Cluster Grid environments, such as: authentication, authorisation, resource discovery and resource access;
  • able to use Cluster Grid environments for basic and advanced job submission, and distributed data management;
  • conversant with Grid achievement worldwide;
  • alert to emerging Grid applications; appreciate the potential of e-infrastructure; and be aware of new research opportunities.
Syllabus.
  1. Parallel and Distributed Programming
  2. Cluster Computing
  3. Grid Computing

Option 2: Distributed Computing
Overview.

Distributed computing refers to algorithms running on a set of machines connected by a network. Its importance has increased as computation migrated from monolithic mainframes to decentralized structures connected by the internet. Examples of distributed systems appear in many areas such as telecommunication, web applications, distributed data processing and massively multiplayer games.

While a distributed system can be built with redundancy (e.g. with replicated components) so as to provide availability in the presence of faults, this can be difficult to achieve if the software is programmed in an informal way, without strong theoretical foundations.

This course aims at providing the theoretical foundations of distributed systems. It is targeted to graduate students and researchers wishing to advance the state-of-the-art in distributed systems. The course is technology agnostic and the abstractions presented are independent of any given technology.

Aims.

The goal of this course is to provide an advanced theoretical background on distributed computing, addressing fundamental problems, models, algorithms and results. This provides a solid foundation for research on distributed computing in the context of a graduate program.

Although theoretical in nature, the course will also benefit students doing a more practical research. For example, database replication can be based on group communication protocols for which it is important to understand the agreement problem and algorithms.

The course focuses on formal models (e.g. I/O automata), abstractions (e.g. logical time), problems (e.g. agreement) and algorithms to solve them. It also focuses on impossibility results (e.g. the impossibility of fault-tolerant consensus in asynchronous networks).

Syllabus.
  1. Synchronous networks
  2. Agreement in synchronous networks
  3. Asynchronous networks
  4. Logical time in asynchronous networks
  5. Agreement in asynchronous networks
  6. Partially synchronous (timed) networks

Option 3: Architecture and Design of Large-Scale Software Systems
Overview.

The architecture of a software system describes the global structure in terms of its components, external properties and its interrelations. As software systems grow in scale and complexity, it becomes increasingly more important to understand them at many abstraction levels other than algorithms, functions, objects or components, and by different kinds of people, such as procurers, acquirers, producers, integrators, trainers, and users.

Architectural models for such large-scale systems must be tailored to allow the dynamic construction and allocation of customized applications to heterogeneous computing devices, with different computational or interface capabilities. Therefore, for highly complex and large-scale software systems, many design and architectural challenges must be addressed. Many of these are software engineering challenges that must take into consideration aspects not only related with individual computing devices, but also with the entire system obtained from the cooperation of diverse, dispersed, integrated or mobile computing devices that in conjunction contribute to the achievement of the overall system objectives.

This course aims to provide students with an appreciation of current research issues on architecture and design of software systems and give them hands-on design experience. The course features a group project that reinforces the readings and lectures on seminal work and current research topics. The project also teaches students about the design process in general, including refining a specification, partitioning functionality, creating interfaces between subsystems, working in teams, and planning.

Aims.
  • To introduce the fundamental concepts underlying the fields of architecture, design, construction and integration of large-software systems;
  • To introduce how to specify architectural non-functional requirements and quality attributes;
  • To discuss how to design, understand and evaluate software systems architectures both at the macro-architecture and micro-architecture levels of abstraction to satisfy a set of requirements;
  • To present the best practices and best solutions known to design and build high-quality large -scale software systems;
  • To familiarise students with the fundamental concepts of software architecture, properties and applicability of the different architecture styles, the most popular architectural and design patterns, software components, reusable architectures and the relations of all these concepts with software reuse.
Syllabus.
  1. Introduction
  2. Architecture styles and patterns
  3. Quality aspects and attributes
  4. Design and refinement of software architectures
  5. Development technologies
  6. Case study: use-me.gov

Thematic Seminars on Global Computing

Set of modules on research themes on Global Computing lectured by MAP research teams and renowned international scholars.

  • (to be announced)

Seminar

Seminars at MAP-I consists of a number of mini-projects carried on Research Centres and Laboratories of the three Universities


Semester 2

Information Technologies

Option 1: Intelligent Robotics
Overview.

Research in robotics has traditionally emphasized low-level sensing and control tasks, path planning, and actuator design and control. In contrast, several Artificial Intelligence researchers are more concerned with providing real/simulated robots with higher-level cognitive functions that enable them to reason, act and perceive in an autonomous way in dynamic, inaccessible, continuous and non deterministic environments. Combining results from traditional robotics with those from AI and cognitive science will be thus essential for the future of intelligent robotics, showing the increased importance of informatics and computer science research on this area.

Aims.

The purpose of Intelligent Robotics in MAP-Iiis to prepare researchers in the application of Artificial Intelligence techniques in real/simulated robotics. It will also emphasise cooperative robotics and applications to a domain where the proponents are known as lead world researchers: RoboCup and Robotic Soccer. More specifically,

  • To understand the basic concepts of Robotics and the context of Artificial Intelligence in Robotics.
  • To study methods of perception and sensorial interpretation (emphasizing computer vision), which allow to create precise world estates and mobile robots' control methods.
  • To study the methods which allow mobile robots to navigate in familiar or unfamiliar environments using Planning and Navigation algorithms.
  • To study the fundamentals of cooperative robotics and of the robots teams construction.
  • To analyse the main national and international robotic competitions, the more realistic robot simulators and the more advanced robotic platforms available in the market.
Syllabus.
  1. Introduction
  2. Architectures for robotic agents
  3. Perception and sensorial interpretation
  4. Localization and mapping
  5. Mobile robots control: locomotion and action
  6. Plan automatic generation
  7. Navigation
  8. Cooperative robotics
  9. Applications

Option 2: Computer Vision
Overview.

The impressive technological evolution of signal and image capturing hardware has slowly created a new and demanding problem: How do we handle so much data? Most of us have already faced this problem in simple situations such as annotating and organizing all the digital photos we have taken, but what about television studies where a considerable number of hours of video is produced everyday, hospitals where visual exams are a very common practice, or science labs where thousands of hours of confocal microscopy videos have been recorded?

There is thus a clear need for automatic tools that can help us analyse, find and annotate the massive amount of video information captured by modern technology. This course intends to be a specialization in computer vision topics, namely image and video processing, pattern recognition and machine learning.

Aims.
  • Introduce a number of advanced topics in Computer Vision.
  • Provide students with a core-set of mathematical tools, useful for most Computer Vision challenges.
  • Introduce national and international institutions and companies where Computer Vision is a potential solution to their real-world problems.
  • Help to develop rigorous research and development methodologies
Syllabus.
  1. Image and video processing
  2. Image segmentation
  3. Pattern recognition
  4. Applications

Option 3: Distributed Computer Graphics
Overview.

Visualization and rendering of large data volumes with complex rendering algorithms are extremely expensive computational tasks and very demanding on computational resources. Parallel and distributed techniques are commonly used to partition the computational and resource load of such tasks. This course is aimed at the methodologies and techniques that allow exploring the potential of distributed computer systems targeted at computer graphics, covering all stages from modeling to rendering, and introducing current and possible practical applications.

In real applications, being these in science, industry or services, the demand in realism is large and, as a consequence, the performance of the algorithms and techniques used, as well as dedicated hardware, have to follow the same rule. Computer graphics algorithms and techniques have suffered a tremendous evolution and are nowadays able to produce results with a higher level of realism. Actually, it is already possible to produce synthetic imagery that simulates physical phenomena in a so perfect way that it is difficult to distinguish between them and a real image.

In recent years, general purpose and dedicated computer graphics hardware has evolved tremendously, as a consequence of an increased demand for better and more graphics. However, the reality is far more complicated than the graphics produced so far and probably will remain that way for many years to come. Concurrently, parallel and distributed architectures based on commodity computers and networks have also attained a good level of development and stability. These technologies have been used in several other areas of science, where processing power is also very demanding. Grid computing is one of the most recent developments and is widely used as a mean to explore the maximum processing power possible.

Aims.

The course aims mainly at preparing students to explore the potential of distributed computer systems in computer graphics related tasks such as rendering and visualization. In order to achieve this, a bottom up approach is proposed covering Geometric Modeling, Rendering and Visualization.

Syllabus.
  1. Topics of parallel and distributed processing
  2. Topics in computer graphics
  3. Parallel and distributed rendering
  4. High performance physically based rendering
  5. Distributed 3D modelling
  6. Distributed visualization
  7. Applications

Free Option

Optional course specially designed for each student to cover her/his particular needs in terms of background studies. This will be chosen for each student by her/his tutor.


Cultural Option

A course of a different PhD Program offered by one of the MAP Universities on a relevant, but different area (e.g., project management, economics, basic sciences, or cultural studies)

  • (to be announced)

Thesis Planing

Include seminars on research planning, but is mainly devoted to individual guided study for preparation of a thesis proposal (theme, problem, state of the art, research plan, calendar).