Programme Structure

This PhD Programme is organised in three phases: Preparation, Research, and Writing Up. The programme has typically a total duration of four years, but the duration of the research and dissertation writing phases may vary, but a student will not be allowed to enrol in the programme for more than 6 years.


In the preparation phase, expected to span from 12 to 18 months, the students should

  1. Complete the PhD Course , with 30 ECTS credit points (see below); and
  2. Prepare and defend a Thesis Plan that motivates and justifies the intended research work in the context of the current state-of-the-art on the scientific area.

Upon enrolment, all students are assigned individual tutors by the PhD Programme Committee (among the lecturers of the programme) that will support them, in particular in the selection of units of the PhD course.

Tutors are eventually replaced by PhD supervisors, chosen by mutual consent, that will support the preparation of the Thesis Plan, and subsequently supervise their research work.

The candidates must present their Thesis Plan publicly before an Advisory Committee, composed by their supervisor(s) and two other specialists in the specific area of research.

Upon completion of the PhD Course, students are entitled to receive a “Diploma de Estudos Avançados”.


Upon approval of their Thesis Plan, students should carry on with their supervised research work. After the first year, the student must present a progress report to the Advisory Committee. After two years, the student must prepare and submit a Thesis Proposal. The purpose of this document, that will be orally presented and formally reviewed and evaluated by the Advisory Committee, is to assess the maturity and results of the work already produced, and to determine whether the student will be able to produce the final written dissertation after another year of full-time work.

Writting Up

After the “Thesis Proposal” is approved the student may enter the final phase of the PhD Programme, the dissertation writing up phase. This final phase is not supposed to be exclusively dedicated to dissertation writing, so that the student is expected to extend or review results already produced as a result of the “Thesis Proposal” evaluation.

PhD Courses

The PhD Course structure is presented in the table below. Two units are mandatory: Research Seminars and Technical and Scientific Communication.

Students must obtain, at least, 12 credit points in advanced units. For each area, several units will open each year: the list of units proposed for 2008/09 is presented in the table. Students wishing to obtain the 12 credit points in the same area should take the Advanced Studies unit, which can be instantiated with any other unit.

Students must additionally obtain, at most, 12 credit points in complementary units. The “Complementary Studies” and the “Free Studies” units can be instantiated with units from other graduate programmes in the University or units of affiliated or joint graduate programmes. The “Free Studies” units can additionally be instantiated with other activities relevant to the student work, such as participation in Summer/Winter Schools.

Research Seminars 3 Mandatory
Technical and Scientific Communication 3 Mandatory


Artificial Intelligence Constraint Programming 6 Optional
Knowledge Representation Reasoning and Agents 6 Optional
Machine Learning and Knowledge Extraction 6 Optional
Computer Graphics and Multimedia Computer Graphics Modelling 6 Optional
Interaction and Visualization in Multimedia Environments 6 Optional
Computer Systems and Networks Computer Systems and Communications Security 6 Optional
Parallel, Grid and Autonomic Computing 6 Optional
Transactional Systems 6 Optional
Information Systems Technology Information Systems Technology 6 Optional
Programming Languages and Models Communication and Concurrency-Centric Programming Languages 6 Optional
Algorithms and Data Structures for Information Retrieval 6 Optional
Software Engineering Advanced Software Development 6 Optional
Experimental Software Engineering 6 Optional
Advanced Studies 6 Optional


Complementary Studies

6 Optional
Free Studies 6 Optional

PhD Courses description

Artificial Intelligence

KRRA - Knowledge Representation, Reasoning and Agents

Lecturers: José Júlio Alferes, Carlos Damásio, João Leite

Description: The course provides the fundamental basis for advanced study of state-of-the-art knowledge representation and reasoning formalisms, and surveys state-of-the-art work in this area, exploring applications to the Semantic Web and to Multi-Agent Systems.
It introduces the theory and techniques for defining the semantics of knowledge representation languages, namely logic programming based ones, including the study of both fixpoint based definitions and as well as modal logic based definitions (in  particular, definition of disjunctive, paraconsistent, fuzzy and probabilistic semantics).
Description Logics languages and reasoning are addressed and their integration with rule systems, namely via hybrid logics, are explored with special interest on open versus closed world reasoning. Applications to the Semantic Web will be investigated.
The application of logic and logic programming based languages will be further explored in Multi-Agent Systems, namely BDI-CTL, ATL*, MetateM, 2APL, AgentSpeak(L)/Jason, Minerva, IMPACT, and SOCS.

CP – Constraint Programming

Lecturers: Pedro Barahona, Francisco Azevedo, Jorge Cruz, Ludwig Krippahl

Description: The course addresses state of the art constraint programming technology that has recently made it possible to solve efficiently combinatorial problems of non trivial complexity, in several domains such as finite domains, sets, graphs and continuous domains, as well as specific domains (e.g. in bioinformatics).
A brief overview of basic concepts, namely constraint propagation and consistency maintenance is followed by a study on advanced topics in finite domains (search heuristics, global constraints, redundant and channeling constraints, symmetry breaking, and optimization) and its adaptations to other domains.
The main pitfalls of these techniques are also discussed, together with directions of current research that are being followed to overcome them. In particular, research that is being carried out in the UNL is presented, as well as potential applications not only to typical application areas (e.g. resource management) but also less usual bioinformatics problems.

MLKE - Machine Learning and Knowledge Extraction

Lecturers: Nuno Marques, Susana Nascimento, Joaquim Ferreira da Silva, Gabriel Pereira Lopes

Description: This course addresses several machine learning and data mining methods, surveying both theoretical and practical aspects of these methods, and discussing open research directions in this area. This should allow students to develop new algorithms or adapting those studied, to understand and change learned models for specific problems and apply the methods to new problems assess the results obtained.
Covered research subjects include neuro-symbolic systems; crisp and fuzzy clustering, and clustering validation techniques; knowledge mining from text, multilingual access to information, detection of relevant parts in text and its applications, clustering and classification of documents, pattern recognition in text.
Real world applications of those methods will be of primary concern, with emphasis on those covering the research carried out in the UNL, including pattern recognition of mesoscale oceanographic phenomena, computational ontology profiling of research activities, lexical and grammar analysis and machine translation.

Computer Graphics and Multimedia

CGM - Computer Graphics Modelling

Lecturers: Próspero dos Santos, Fernando Birra

Description: The main focus of this course will be the domain of modelling suitable to the generation of synthetic images, either static or dynamic (i.e., for computer animation) and at several levels of interaction.
The underlying mathematics of useful modelling techniques will be explained, namely those concerning solid modelling and physically based modelling. Complex object models play a very important role in many scientific, medical and engineering applications, as well as in the domain of pure entertainment.
In addition to classical models, active areas of research will also be referred during the course. For instance: cloth modelling, mesh representation and appearance modelling, which are essential for rendering convincing images.

IVME - Interaction and Visualization in Multimedia Environments

Lecturers: Nuno Correia, Adriano Lopes, Teresa Romão, Armanda Rodrigues, Sofia Cavaco

Description: Digital media consumption and production is an important part of many professional and personal activities. The course addresses the areas of media processing, visualization and interaction, and provides an overview of the main topics of media representation and how it is used in different computational and programming frameworks. It also discusses how to combine heterogeneous media in hypermedia structures and its extensions to narrative models and repurposing tools.
A key aspect for searching, sharing, and repurposing information is the need for semantic descriptions of multimedia items obtained through semi-automatic processing. There are many environments and application areas where media is produced and consumed such as mobile applications, augmented and mixed environments, and scientific visualization systems. These generate multiple requirements for visualization and interaction, leading to different application models, user interfaces, and input/output modalities, that will be covered in this course.

Computer Systems and Networks

CSCS - Computer Systems and Communications Security

Lecturers: Henrique João, Sérgio Duarte

Description: The course provides a research-oriented broad and deep knowledge about new security problems, new adversarial models and new trustworthy conditions related to malicious and selfish distributed computing environments. These environments include new and emergent network technology and new experimental large scale distributed settings, such as, MANETs (mobile and ad-hoc networks), WSN (wireless sensor networks) and mesh-based or p2p internetworking technology.
Based on those environments the course introduces new theoretical foundations, concepts, characteristics, requirements and design principles to support security services on possible malicious and faulty selfish behaviors, considering the limitations of classic Dolev-Yao or byzantine adversarial models. New foundations on adversary models and novel security mechanisms, algorithms, protocols and services are introduced, namely: foundations for pervasive intrusion detection and prevention; DoS and DDoS protection; malware auditing; resilience and containment techniques; secure multicasting and group-oriented secrecy; and new challenges and design issues for secure MANET and WSN architectures and middleware services.

PGAC - Parallel, Grid and Autonomic Computing

Lecturers: José Cardoso e Cunha, Pedro Medeiros, Vitor Duarte, Cecília Gomes

Description: Large-scale applications including e-Science Grand Challenges increasingly require forms of parallelism and distribution with large volumes of data. These applications execute in the presence of uncertainty, partial knowledge, unpredictability, adversity, and dynamic change (a consequence of the diversity of current cluster and network / grid computing platforms).
The course studies models and approaches to manage dynamic and adaptive applications and systems, presenting an overview of the state of the art, and addressing open issues and current research challenges, related to ongoing research in the department.
It covers three main subthemes with a common goal: how to exploit parallelism and distribution for complex problem-solving in computing systems with varying degrees of scale, heterogeneity, and dynamic behavior, including clusters and grids; such goal is pursued at three main levels in a unifying perspective: (i) high-level abstractions for parallel programming, (ii) autonomic and adaptive computing models; (iii) distributed resource and data management.

TS - Transactional Systems

Lecturers: Nuno Preguiça, João Lourenço

Description: Transactional processing mechanisms have been used for many years in a large number of systems, notably in database management systems and more recently as a concurrency control mechanism for multicore computers.
The main objective of the course is to provide students with a broad and deep knowledge of the transactional model, its use, evaluation (analysis) and implementation, targeting centralized, distributed/replicated and Byzantine fault-tolerant databases and shared memory concurrency control access for multicore systems.
In this context, the course intends to provide students with state of the art knowledge on the theory and practice of implementing transactional systems in volatile and stable memory storage; the theory and practice of implementing transactional systems in distributed settings, including support for byzantine faults; the techniques used to evaluate transactional systems; how to apply transaction processing systems in a given scenario, and the pros and cons of such solutions.

Information Systems Technology

IST - Information Systems Technology

Lecturers: António Porto, Carlos Damásio, João Moura Pires

Description: The dawn of the Web originated new opportunities, applications and challenges for information systems. The increasing complexity demands new formalisms, techniques and methodologies, as is the case of the integration of services at the global scale over the Semantic Web, requiring a new Services Sciences, Management and Engineering (SSME).
This course aims at providing the student with a perspective of present challenges in the development of information systems, exploring in depth selected approaches addressing research topics in areas like data and knowledge modeling, integration and service orchestration, or data analysis and decision support, the wide importance of construction and exploitation of meta-data being singled out.
In addition, students will also acquire general capabilities expected in a PhD, namely self-study and search of bibliography and information sources, as well as a critical look regarding the interest of the new approaches and innovations in the frontier of scientific knowledge.

Programming Languages and Models

ADSIR - Algorithms and Data Structures for Information Retrieval (PLM)

Lecturers: Margarida Mamede, Luís Russo, Fernanda Barbosa

Description:The course addresses algorithms and data structures for performing information retrieval. The search can be either to match corresponding objects or to find similar objects from a larger set.
The exact matching problem is important for a wide range of applications (e.g. word processors). However the established solutions for small applications do not scale up to process the massive amounts of text appearing in Information Retrieval systems, web search engines, or molecular sequence databases. The course addresses this problem, both on-line and with indexing data structures (a very active area of research), focussing on the impact of succinct and compressed data structures in the performance of these indexes.
The course also studies several data structures for coping with the problem of matching similar objects in high-dimensional domains, relevant to many applications, such as natural language dictionaries, databases of DNA or protein sequences, databases of images, multimedia databases, and geographic information systems.

CCPL - Communication and Concurrency-Centric Programming Languages

Lecturers: Luís Caires, Carla Ferreira, João Seco

Description: With the advent of pervasive concurrency and communication centric software, both at the small scale (multicore processors), and at the large scale (distributed web services), new programming language abstractions are being proposed, together with related static analysis techniques based in type systems, logics, or finite-state model checking, able to certify key properties of software without actually running the programs, so that defects may be caught as early as possible.
The course will have two parts. Firstly, students will learn how to formally define the semantics of programming languages (essentially operational techniques), and to analyze and verify properties of programs written in such languages by means of type systems and logics (small yet expressive functional and concurrent languages will be covered). Secondly, students will learn the state of the art from key publications in the areas of programming language principles and implementation, concurrency models, and foundations of global computing.

Software Engineering

ASD - Advanced Software Development

Lecturers: Ana Moreira, João Araújo, Vasco Amaral

Description: A primary challenge of Software Engineering is the taming of ever-increasing complexity in software systems. Advanced Software Development (ASD) focuses on this challenge, by covering Aspect-Oriented Software Development (AOSD), Model-Driven Development (MDD) and Software Product Lines (SPL).
AOSD deals with problems that map to non-aligning decomposition criteria and aims to manage systems modularity through aspects. The AOSD module covers basic concepts and terminology; aspect-oriented programming, design, analysis, requirements and architecture.
MDD focuses on the systematic use of models and model transformations as primary artifacts, to (re)create software automatically. The MDD module covers basic concepts and approaches; Metamodels; Meta-Object Facility; Platform Independent and Specific Models; Domain Specific Languages; Transformation languages and tools. SPL approaches aim at minimizing costs and time to market, through the systematic identification, representation and composition of variations. The SPL module covers SPL concepts, Domain Engineering, Feature models, Variabilities and commonalities, Generative Programming and Software Factories.

ESE - Experimental Software Evaluation

Lecturers: Fernando Brito e Abreu, Miguel Monteiro, Vasco Amaral

Description: This course will help candidates in setting up experiments to raise statistical evidence on the validity of their proposals (e.g. methods, techniques and/or tools) by applying the scientific method. The course is outlined as follows. First we will review some techniques for supporting domain knowledge formalization. Then, students will learn how to perform hypothesis elicitation in the context of Software Engineering.
We will study how to design an experiment and introduce several exploratory data analysis techniques for quantitative and qualitative data. Next, we will perform a data collection exercise upon real-world data. Formulated hypotheses will be tested against the collected sample and results discussed. Threats to inference will be identified.
Other data analysis techniques will be overviewed such as applying: (i) cluster analysis to assess modularization (e.g. in reengineering or aspects mining), (ii) time series to software evolution studies or (iii) linear and non-linear regression modeling to resource estimation problems.