Architectures for Software Systems aims to teach you how to design, understand, and evaluate systems at an architectural level of abstraction. By the end of the course you will be able to:

  • Understand the influence of architectural drivers on software structures.
  • Understand the technical, organizational, and business role of software architecture.
  • Recognize some major architectural structures (styles, patterns, tactics, etc.)
  • Understand the principles of good architectural documentation.
  • Understand the impact that COTS has on architectural designs.
  • Generate architectural alternatives in a given context and choose among them.
  • Understand how formal notations can be used to specify architectures.
  • Evaluate the fitness of an architectural design in meeting a set of system requirements and balancing quality trade-offs.
  • Be aware of the future trends in software architecture.

The purpose of this course is for graduate students to gain a breadth of understanding in the toolbox of AI approaches employed in digital games. This involves learning/reinforce some basic topics covered in other AI courses, but with a focus on applied knowledge within the context of digital games.

To be updated...

The Capstone Project course is a 28-week long capstone project for the Masters in HCI and ETC programs that integrates everything the students have learned in their coursework into one “end-to-end” experience. For the second time this year the capstone project also integrates the ETC Projects, which are a more intensive one semester long projects. Both HCI and ETC capstones have a different sponsor and retain their own identity and standards. HCI and ETC student groups working with the same sponsor will share their project space and will be encouraged to share experiences, techniques and results. In both HCI and ETC capstones students work in interdisciplinary teams with an industry client to produce a working prototype that serves as a proof of concept and requirements document for a valuable new or enhanced computed-based service, product or system. The students come from a variety of backgrounds including computer science, psychology, art, design, multimedia, and other related programs. The industrial client defines the project area and guides its direction. In the first few months of the project (January to May), MHCI students make a plan, conduct user research and brainstorm designs or product ideas. The plan defines the iterative design process in the summer, and will usually include contextual inquiry, background research, and/or other investigations to understand the nature and needs of the customer/user and tasks relevant to their problem. Based on that understanding, students go through an innovation phase producing product ideas situated to meet the identified needs. Students should plan to produce a small number of low-fidelity prototypes early so that they can get meaningful feedback from their clients in a timely fashion.  With strong client input, students narrow down their ideas and select one or more to pursue further. During the Spring semester MET students go through a more intensive process leading to a working prototype. The ETC project will share the same sponsor but will follow its specific deadlines and process. Then for MHCI, in the fall semester, students engage in a prototyping, analysis and user-testing phase where they produce prototypes with increasing fidelity and iteratively test them with users to improve the design. They do weekly iteration cycles, so by the end of the summer, product prototypes are well refined and adapted to user needs. In most cases, the end goal is a high fidelity working prototype that clients can use.

The capstone project integrates all the skills and knowledge acquired during the professional master in a unique end-to-end experience of development of a prototype for an interactive system or service from a problem definition provided by an industry sponsor. Students learn to work in interdisciplinary groups, integrating conflict and team management skills with perspectives from design, psychology and computer science. The course consolidates the development of project and documentation management skills, communication with clients, and preparation of multimedia contents for concept validation. Project focuses on the following technical skills: concept ideation and generation, iterative prototyping, and the development of interactive software-based systems and services.

Companies are turning to design to address the opportunities and challenges faced by the shift to a knowledge-based service-centered society. In the past, services have been consciously designed, but rarely with the participation of designers or transdisciplinary teams. When they have, they’ve looked back toward product design for inspiration. In this course, we will look forward toward designing for service in ways that stimulate senses, connect deeply with people’s lifestyles, emphasize the broader social and cultural context of people’s actions and provide support through a networked service ecology or system of systems.

Objetivos de Aprendizagem 
  • Compreensão dos conceitos fundamentais de desenho e arquitetura de software;
  • Compreensão dos princípios fundamentais do desenho de software;
  • Compreender e saber usar os principais padrões de desenho;
  • Compreender e distinguir várias estratégias de desenho de software;
  • Aplicação prática dos padrões de desenho numa linguagem de programação orientada aos objetos.
Hard Skills
  • Capacidade em aplicar conhecimentos de matemática, ciências e engenharia;
  • Capacidade de desenhar um sistema de software;
  • Capacidade em identificar, formular e resolver problemas de engenharia;
  • Reconhecer a necessidade e ter capacidade para aprendizagem ao longo da vida.
Soft Skill
  • Capacidade de trabalhar em equipas multidisciplinares;
  • Capacidade de comunicar de forma efetiva;
  • A educação geral necessária para compreender o impacto das soluções de engenharia num contexto global, económico, ambiental e social;
  • Conhecimento das questões contemporâneas.

A inserir...

The goal of this course is to expose students to the engineering, medical, and social issues faced by individuals with special needs through the design, development and use of technology for health and wellness.

The notion of Embodiment, as defined by Paul Dourish lies at the intersection of two areas of research, what has been until now called Tangible computing together with Social computing.

This course is concerned with humans as embodied actors interacting in the world in the absorbed and unreflective manner of everyday experience. This standpoint is of particular relevance to emerging HCI disciplines of tangible computing and social computing. The goal of this approach is to create interaction experiences for users which are seamlessly intertwined with the surrounding physical and social environment. This course will provide the theoretical background to embodied interaction, explore the domains in which its model is applicable and provide practical experience with the fundamentals of constructing such systems. It culminates with a substantial project exploring sensors and interaction.

Introdução ao processo de engenharia de requisitos

Principais tópicos

  • Elicitação de requisitos
  • Gestão de requisitos
  • Validação de requisitos
  • Requisitos não funcionais

Utilização de ferramentas de prototipagem
Desenvolvimento de um documento de requisitos para um problema real

Docente : Filipe Quintal

Introdução/Motivação: Engenharia Organizacional (EO) é uma disciplina/área científica multidisciplinar, emergida das áreas de Sistemas de Informação, Gestão e Ciências Organizacionais, entre outras. Tem vindo a ganhar cada vez mais relevo a nível internacional e pretende contribuir para solucionar o gravíssimo problema de a maioria dos projetos de mudança organizacional (incluindo ou não a implementação de sistemas informáticos) falharem em atingirem as expectativas geradas. A solução passa pelo desenvolvimento de teorias, métodos e ferramentas adequadas para uma análise e representação fidedignas da realidade estrutural e operacional de uma empresa/organização (seja pública, seja privada) antes de se avançar para iniciativas de mudança organizacional com ou sem a automatização com base em Tecnologias de Informação (TI). Uma das principais causas de tantas falhas nos projetos mencionados é uma compreensão incompleta e/ou ambígua da realidade organizacional, levando a falhas e lacunas na mudança da realidade organizacional e/ou sistemas informáticos incompletos ou desadequados. Na disciplina de EO é dado ênfase à necessidade de, essencialmente através de um conjunto de diagramas, modelos e teorias associadas, chegar-se a uma compreensão e especificação clara e neutra das organizações como sistemas predominantemente sociais, passíveis de serem alvo de métodos precisos e ferramentas práticas de engenharia, com vista a uma mais eficaz mudança organizacional e/ou implementação de sistemas de informação e tecnologias associadas. Na prática, um engenheiro organizacional fica capaz de melhor analisar qualquer realidade organizacional, com recurso a análise de documentação e/ou entrevistas e a especificação desta realidade através de diagramas/modelos formais específicos da área de EO, mas fáceis de interpretar por qualquer colaborador da organização. Durante o semestre são basicamente ensinadas e treinadas técnicas de análise e modelação, tendo em conta as teorias que estão na base desta disciplina.

No âmbito de uma parceria entre o M-ITI/UMa e o Enterprise Engineering Institute (EEI) da Holanda, esta disciplina inclui toda a formação necessária para a obtenção do Diploma: DEMO Bachelor, sendo necessário, para tal, a obtenção de nota final superior a 14 nesta UC. No caso de nota inferior a 14 é ainda possível a realização de um exame no EEI (possível de fazer, remotamente, nas instalações da UMa no final do período complementar do primeiro semestre) que, graças à parceria realizada é livre de custos para os alunos de EO. A possibilidade da obtenção deste diploma oficial e internacional é, portanto, gratuita para os alunos e uma mais valia para o currículo de quem frequente EO com sucesso.

Objectivos: Estudo da engenharia organizacional (EO) como disciplina agregadora de conceitos e métodos de engenharia aplicados às organizações tendo por fim compreender e representar, através de diagramas e modelos, múltiplas facetas das mesmas, bem como facilitar a análise e mudança organizacional. Desenvolver competências relativas à modelação, aplicação de metodologias e ferramentas utilizadas na representação, desenvolvimento e mudança organizacional a nível de estratégia, arquitetura, estrutura, processos e sistemas de informação.

Tópicos teóricos: Introdução à disciplina de Engenharia Organizacional: o contexto da Engenharia de Sistemas de Informação e Ciências de Gestão e Organização; Noções teóricas basilares: ontologia, semiótica, sistema e modelo; Estado da arte de métodos e notações de modelação; Introdução ao método DEMO (Design and Engineering Methodology for Organizations); Axiomas e Teorema do DEMO; A metodologia do DEMO; Modelos de Interação, Atores e Transações; Modelos de Processos e Workflow; Modelos de Factos, Estados e Informação; Delegação e Autorização; Missão, estratégia e arquitetura organizacional; Controlo da organização; Mudança organizacional: a Geração, Operacionalização e Descontinuação de artefactos organizacionais.

Trabalhos práticos:

1) Trabalho de Modelação As-Is (TMAI) - consiste na execução, por cada grupo de alunos, de alguns exercícios de modelação de alguns casos documentados do curso "DEMO Professional". Após publicação do enunciado numa determinada semana, os alunos têm de realizar alguma análise e/ou desenhar diagramas/tabelas seguindo o método DEMO e entregar um pequeno relatório com o trabalho feito, alvo de discussão e avaliação contínua na aula prática da semana seguinte;

2) Trabalho Avançado de Modelação - este trabalho desenrola-se em moldes semelhantes ao TMAI sendo que, após o ganho de experiência obtido com os casos teóricos, cada grupo terá como missão modelar uma certa parte da organização da UMa com a produção do respetivo modelo ontológico, realizar uma análise crítica e propor sugestões de melhoria, eventualmente aplicando conceitos das organizações G.O.D e Controle. Para o efeito é disponibilizada documentação oficial da UMa a cada grupo, sendo esta a base principal do trabalho.

Students work as teams to finish a semester-long HCI project where they go through several design, implementation and evaluation cycles.  Each team will develop a product/service to solve a given design problem.  Students are strongly encouraged to submit their work to international design competitions, such as the one at the CHI conference.

At the beginning of the semester, each student has to propose a design direction/plan/solution for a targeted design problem. Students who win the proposal competition will recruit other students and control the schedule created to execute the project plan. Each team needs to meet the instructor for individual work sessions, and to present their progress to the class. At the end of the semester, there will be a public presentation and prototype demonstration.


•Introduction to Design Studio
•Brainstorming and bootlegging
•Project management
•Concept pitching and team building
•Project proposal
•Project development
•Project development, stage 1 - low fidelity prototype > Feedback, testing, iterating
•Project development, stage 2 - high fidelity prototype > Feedback, testing, iterating
•Project development, stage 3 - final output
•Project presentation

The goal of this course is to prepare you for a career involving design of computer games and other interactive experiences. Students in this course will read and write about game design, and design many games of their own. Do not mistake this for a course in computer game development. This course is focused on the rules and methods of game design, which remain fairly constant regardless of the technology used to develop a game. While technology will play a significant role in our studies, technological details will not be our focus. You will study and design games of all sorts: card games, dice games, athletic games, story games, and yes, even video games. How to design games, how to design them well, and how to see your designs to completion will be what you study here.

Docente: Ana Isabel Torres Garcia Portugal

quatro horas semanais

segunda feira das 4 ás 8 na sala 23


Desenvolver nos alunos as capacidades de gestão de projectos de software e trabalho em equipa, habilitando-os assim a resolver a diversidade de problemas que tipicamente surgem em projectos deste tipo numa organização real

This course is designed to: 
1. To introduce students to theoretical aspects of human factors, cognitive science, and social science that will assist them in understanding and designing the interactions of humans with the world, tools and technology.
2. To assist students investigate and understand problems that arise out of the interaction of humans with systems; 
3. To introduce students to methods and principles for analyzing problems that involve human factors, such as: perception, cognition, decision making and human errors; 
4. To introduce students to physical and cognitive ergonomics; 
5. To teach students to consider human factors for technology design; 
6. To teach students to understand problems and apply human factors knowledge to analyze them, find sources of error, and propose the design (or redesign) of systems in order to improve human system interactions.

This course discusses the fundamentals of human-centered software engineering. The central topics are about bridging HCI and software engineering. Students are introduced to the main process, methods and techniques of HCSE. Agile development methods (usageCD, Wisdom and SCRUM) are detailed in this project based course, including the techniques of activity modeling, user and task modeling, abstract prototypes and model-based UIDs.

Dotar os alunos de conhecimentos sobre a Interacção Homem-Máquina, em particular os métodos e técnicas associados ao desenvolvimento de sistemas interactivos fáceis de utilizar e centrados nos utilizadores.

Curso de suporte à direção da Licenciatura em Engenharia Informática.

To be updated...

This course aims to provide a strong knowledge on multimedia systems and its different components, such as, methodologies and technologies of information representation, compression (e.g., BMP, PNG, JPEG, MPEG1, MPEG4, MPEG7) and processing (e.g., convolution masks); media transmission (HTTP vs RTP); authoring tools (HTML5); multimedia interaction and applications. It will be composed of theoretical and practical components, providing to the student a strong and solid background knowledge on the different multimedia systems paradigms. The practical component will include the implementation of a multimedia system prototype (Processing/openFrameworks).

Objetivo genérico: Dotar os alunos de conhecimentos teóricos, metodológicos e práticos sobre o desenvolvimento de programas no âmbito de vários paradigmas.
Objetivo específico 1: Iniciação à programação em Python: paradigmas de programação recursiva, imperativa e funcional; método de programação modular em grande escala (por camadas e centrado nos dados); breve introdução à programação orientada por objetos.
Objetivo específico 2: Aplicações em diferentes áreas, nomeadamente na computação simbólica e numérica.

Generic goal: Provide the students with theoretical, methodological and practical knowledge on the development of programs under various paradigms.
Specific objective 1: Introduction to programming in Python (recursive, imperative, functional, object oriented);
Specific objective 2: Applications in different areas, such as symbolic and numerical computation.

O objectivo desta disciplina é fornecer uma visão geral do Processo de Desenvolvimento do Software, das suas leis, das principais metodologias e ferramentas e medidas utilizadas no seu âmbito, a fim de, mais tarde, na vida profissional, o aluno ter capacidade de escolher as ferramentas indicadas para usar no seu posto de trabalho e aprofundar, então, os seus conhecimentos práticos sobre elas. Saberá, quando obtiver aprovação nesta disciplina, como desenvolver software com qualidade e como avaliar o risco e custos que cada desenvolvimento comporta.

Na disciplina de programação avançada pretende-se que os alunos complementem os conhecimentos adquiridos nas disciplinas de introdução à programação (Paradigmas da Programação , Estruturas de Dados e Algoritmos e Programação Orientada por Objectos). Esta disciplina foca-se em desenvolver competências em 3 aspetos avançados da engenharia informática.

Programação Paralela: através do estudo de multithreading, concorrência, escalonamento de recursos e como preparar um problema para ser resolvido paralelamente.

Segurança: Com o estudo de técnicas de segurança, como encriptação, utilização de chaves de acesso e a utilização de frameworksterceiras para esse efeito.

Introdução à computação gráfica: Através do estudo de técnicas de médio e baixo nível usadas para a apresentação de gráficos.

Resumidamente PA abordará problemas como:

  • Escolher e implementar a melhor solução de segurança para cada problema.
  • Compreender o custo computacional de diversos métodos de segurança.
  • Implementar animações gráficas de baixo nível
  • Compreender a pipeline de processamento gráfico num sistema
  • Compreender o sistema de coordenadas, transformações e renderização de um sistema computacional
  • Dado um problema escolher o método adequado para a divisão em sub problemas 
  • Implementação de soluções paralelas utilizando threadsthread queues, semáforos e comunicação entre processos 

Esta disciplina pretende fornecer aos alunos as seguintes competências:

- Obtenção de conhecimentos teóricos e práticos da programação orientada a objetos.

- Prática de produção de software, usando a linguagem de programação Java.

This course is a combination programming course and design studio, and is for those who want to express their interactive ideas in working prototypes. Students will learn how to use programming languages, how to design and implement effective GUI interfaces, and how to perform rapid, effective iterative user tests. The course will cover several prototyping tools and require a number of prototypes to be constructed in each. These will range from animated mock- ups through fully functional programs. The course will also cover usability testing of interactive prototypes. This course is intended for HCII Masters students who come to CMU with a minimal, but competent programming background.

Esta disciplina está desenhada de modo a que os participantes aprendam a pensar de forma independente e criativa em como desenhar e implementar sistemas usando métodos e tecnologias de Data Warehousing e Data Mining.

Uma das aplicações mais típicas das técnicas e software desta área são uma melhor gestão de clientes graças à descoberta automática e inteligente de padrões de compra - por exemplo,  com o auxílio dos famosos "cartões de cliente" - que permitem a recolha de muita informação útil e a geração automática e personalizada de promoções, recomendações de produtos e catálogos. Também uma melhor gestão de produtos e campanhas de marketing graças às capacidades poderosas de análise, relatório e previsão automáticas, usando-se regras de associação, clustering, redes neuronais, entre outras técnicas.

Com os recentes desenvolvimentos nas Tecnologias de Informação há cada vez mais sistemas coleccionando e gerando quantidades astronómicas de dados. Por exemplo, sistemas de empresas de venda a retalho, multinacionais, projectos relacionados com o genoma humano e a World Wide Web facilmente geram gigabytes ou terabytes de dados. Para serem úteis e entendidos, estes dados precisam de ser analisados e minerados de modo a que informação útil possa ser extraída. As técnicas de data warehousing e mineração de dados capacitam a análise automática de enormes conjuntos de dados, providenciando informação útil e muitas vezes inesperada, para a tomada de decisões. Esta é uma área multi-disciplinar, agregando vários campos de investigação como gestão de sistemas de bases de dados, data warehousing, OLAP, estatística, inteligência artificial e algoritmos.

Os objectivos gerais são: estudo de princípios, algoritmos e aplicações dos vários tipos de sistemas de apoio à decisão; ganho de experiência prática na implementação e/ou configuração destes sistemas. Nas aulas práticas serão exploradas várias ferramentas e potencialidades da suite de business intelligence Pentaho ( Trata-se de um dos mais conceituados agrupamentos open source (com versão enterprise) de componentes de business intelligence para data warehousing, data mining e reporting. Serão também utilizadas outras suites/alternativas ao pentaho.

This course is an introduction to the main concepts underlying distributed systems, e.g. communication, naming, clock synchronisation and distributed algorithms.
We aim to explain the main characteristics of components that take part in the distributed systems and that impact the way the systems are designed and implemented. The main concepts and techniques that have been developed to help in the tasks of designing and implementing distributed systems will be introduced.

Esta disciplina está desenhada de modo a que os alunos aprendam a pensar de forma independente e criativa em como implementar sistemas e aplicações com bases de dados e tecnologias associadas.

Uma das consequências do tremendo avanço das TI é oportunidade de colecção e geração de enormes quantidades de dados. Para que os mesmos estejam bem organizados e consultáveis e alteráveis de forma eficiente são necessários Sistemas Gestores de Bases de Dados (SGBDs) funcionais, bem como uma correcta aplicação das suas potencialidades e funcionalidades.

Conhecer os conceitos fundamentais subjacentes aos sistemas operativos, com ênfase nos seus mecanismos e algoritmos, assim como a estrutura interna dos sistemas operativos mais relevantes. Programar, ao nível sistema, usando todas as funcionalidades dos sistemas operativos tendo em conta os modelos de programação sequencial e concorrente.

Know the fundamental concepts underlying operating systems, with emphasis on their mechanisms and algorithms, as well as the internal structure of the most relevant operating systems. Program at the system level using all operating system functionalities taking into account sequential and concurrent programming models.

Fonte da imagem:

Objetivos da disciplina

1-Introduzir aspetos teóricos e técnicos sobre sistemas personificados e ubíquos

2-estudar as interações que usam a computação física e tangível como meio de ligação entre o indivíduo e os contextos físico e social

3-proporcionar oportunidade de desenvolver um sistema ubíquo ou uma aplicação

4-Desenvolver o pensamento crítico e as capacidades de escrita científica e apresentação de trabalhos

This course is designed to:

-Introduce students to the basic organizing principles found in interactive software
-Provide experience with user interface implementation
-Explore advanced interaction techniques

It considers factors of input, output, application interface, and related infrastructure as well as the typical patterns used to implement them (e.g., MVC model). It will also consider how these components are organized and managed within a well-structured object oriented system. After considering these fundamental concepts in the first portion of the class, the later part will consider advanced topics related to emerging future concepts in user interface design.

This course includes: an introduction to functional design of the user interface; basic principles of GUI implementation; event handling and event dispatching models; among other topics.

The course includes the development of an interactive prototype with traditional and non-traditional interfaces (Android).

This course is designed to
-Introduce students to the theoretical aspects of how online communities operate
-Help students identify those characteristics that make social websites succeed or fail
-Provide experience in becoming part of a social website
-Develop students’ critical thinking and writing, and presentation skills

This course is taught as a reading class, meaning that students are expected to do reading assignments before each class, and to actively participate in discussion. Each week one student, the “Lecturer”, will be responsible for presenting the course topic to the rest of the class, and to lead a discussion on this topic. This student will be responsible for kick-starting an online discussion on this topic, which should begin at lest 72 hours before the lecture. The rest of the students are expected to contribute to this discussion before the day of the lecture by writing a critique of the material and preparing questions for the class. In addition, each student must adopt a social website of their choosing, become active members in it, and at the end of term present to the rest of the class an empirical account of how this website works.