e-Science


Computação Científica Avançada (Sem. 1)

Objectivos de aprendizagem

Um estudante que complete com sucesso a UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
-caracterizar e avaliar qualitativa e quantitativamente a arquitetura de sistemas de computação HPC relevante
para a comunidade científica
- analisar, medir e avaliar o desempenho de sistemas de computação na execução de aplicações com
requisitos de computação intensiva
- analisar e modificar aplicações computacionais de ciência/engenharia com vista a optimizar o seu
desempenho e escalabilidade.

Conteúdos programáticos

1. Sequential Computing
1.1 The Von Neumann architecture
1.2 Numerical data representation
1.3 Memory Hierarchies
1.4 Multicore architectures
1.5 Locality and data reuse
1.6 Programming strategies for high performance
1.7 Performance metrics and measurement techniques
2 Parallel Computing
2.1 Instruction Level Parallelism
2.2 Parallel Computers Architectures
2.3 Different types of memory access
2.4 Interconnection topologies
2.5 Granularity of parallelism
2.6 Parallel programming
2.7 Performance evaluation
2.7 Efficiency of parallel computing
2.8 Multi-threaded architectures
2.9 GPU computing
3 Case study analysis

Metodologias de ensino e avaliação

Métodos de ensino:
- exposição teórica de conceitos com exemplos
- revisão e discussão de tópicos e artigos científicos
- palestras temáticas por investigadores em ciência computacional, para posterior seleção de temas a tratar no
projeto integrado
- análise e execução laboratorial de problemas experimentais, com apresentação oral e discussão pública dos
resultados
- participação em internship internacional, na UTexas em Austin
A classificação final será uma média ponderada de elementos de avaliação relativos às atividades acima
referidas:
- prova escrita individual para aferir os conhecimentos e as capacidades intelectuais adquiridos; peso ~40%
- trabalhos de análise e de síntese documental sobre temas complementares; peso ~20%
- trabalho prático laboratorial, com elaboração de relatório (em inglês) e apresentação e defesa de trabalhos;
peso ~40%.

Bibliografia

• David Patterson, John Hennessy, Computer Architecture. A Quantitative Approach, 5th Ed., Morgan Kaufmann,
2011
• David Kirk and Wen-mei Hwu, Programming Massively Parallel Processors, A Hands-on Approach, Morgan
Kaufmann, 2010

Modelação e Simulação (Sem. 2)

Objectivos de aprendizagem

- Explicar em contexto os conceitos de Modelação e Simulação.
- Aplicar algoritmos e métodos numéricos de análise numérica aplicada a um conjunto pequeno mas
representativo de problemas de Física Computacional.
- Discutir a complexidade dos algoritmos e da sua implementação eficiente num ambiente de programação
paralela usando hardware heterogéneo (multicore CPU, multicore CPU-GPU, etc.).
- Resolver 3 Case studies de complexidade controlada usando métodos de Monte Carlo, resolução numérica de
equações diferenciais parciais e Análise de Fourier.
- Compreender e discutir a complexidade dos algoritmos, do ponto de vista da implementação eficiente numa
perspectiva de e-Ciência.
- Compreender e discutir as questões que a Modelação e Simulação procuram responder, do ponto de vista do
significado físico das soluções.
- Adquirir, através do exemplo, a capacidade de trabalhar num ambiente multidisciplinar.

Conteúdos programáticos

1. Física Computacional e e-Ciência, definições e questões.
Modelos, simulação e experiências computacionais, variáveis adimensionais; consequências da
representação interna e dos algoritmos.
2. Monte-Carlo: geração de números aleatórios. Aleatoridade determinística. Aplicações com um modelo de
termodinâmica. Métodos de amostragem. Aplicações em problemas de difusão.
3. Equações diferenciais parciais (PDEs): potenciais electrostática e propagação de ondas. Maxwell: ondas EM
e o algoritmo FDTD.
4. Difusão: integração numérica da equação de difusão e condições fronteira.
5. Análise de Fourier de oscilações não lineares. Algoritmo FFT. Solução em série de Fourier da equação de
Laplace .

Metodologias de ensino e avaliação

A transmissão de conteúdos será feita com exposição, escrita no quadro e resolução de pelo menos três Case
studies, em grupos de 2 a 4 pessoas. Os materiais de apoio das aulas são disponibilizados através da
plataforma de e-learning.
A avaliação será feita através da apresentação pública e discussão em privado dos Case studies realizados
em grupo.

Bibliografia

[1] R.H.Landau, M.J. Paez, C.C. Bordeianu, A Survey of Computational Physics, Introductory Computational
Science, Princeton University Press, 2008.
[2] P.O.J. Scherer, Computational Physics, Simulation of Classical and Quantum Systems, Springer, 2010.
[3] D. Frenkel, B. Smit, Understanding Molecular Simulations, From Algorithms to Applications, Academic Press,
2002.
[5] M. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003.
[6] D.B. Kirk, W.W. Hwu, Programming Massively Parallel Processors: A Hands-on Approach, Nvidea, Morgan
Kaufmann, 2010.
[7] William H. Press, Saul A. Teukolsky,William T. Vetterling, Brian P. Flannery, Numerical Recipes: The Art of
Scientific Computing,3rd. Ed., Cambridge, 2007.

Análise de Dados em Larga Escala (Sem. 1)

Objectivos de aprendizagem

Um estudante que complete com sucesso esta UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
• Identificar as técnicas existentes para o armazenamento e processamento de dados em larga escala
• Aplicar técnicas de extração de conhecimento sobre dados em contínuo (streams)
• Utilizar ferramentas/bibliotecas comuns para processamento e análise de dados em larga escala e em
contínuo
• Desenvolver/implementar algoritmos de processamento paralelo e distribuído de dados

Conteúdos programáticos

• Conceitos de extração de conhecimento, aprendizagem automática e mineração de dados: clustering, regras
de associação, modelos de classificação e regressão, algoritmos de indução de árvores e regras, redes
neuronais artificiais, máquinas de vector de suporte,avaliação/estimação de erro de modelos de aprendizagem,
meta-aprendizagem: seleção de modelos,conjuntos de modelos
• Mineração de dados em stream; processamento de streams; técnicas de agregação de dados; stream
clustering;
deteção de alterações em streams; aplicações a dados em contínuo (e.g. mercados financeiros)
• Mineração de grafos e redes
• Sistemas de armazenamento dados em larga escala: armazenamento de dados não estruturados; grelhas de
dados; computação e armazenamento na nuvem; Processamento paralelo/distribuído de dados
• Casos de estudo de análise de dados científicos em larga escala: análise de dados ómicos em Biologia
Computacional; análise de dados financeiros
• Visualização de dados: princípios e aplicações

Metodologias de ensino e avaliação

A UC é lecionada com uma sessão teórica de 2H e uma sessão laboratorial de 1H semanalmente.
Nas sessões teóricas são lecionados os fundamentos e conceitos. As sessões teóricas são essencialmente de
exposição de matéria.
Nas sessões laboratoriais são consolidados os conhecimentos adquiridos nas sessões teóricas, através da
resolução de exercícios. Os vários exercícios permitem aos alunos a consolidação dos conhecimentos através
do desenho e implementação de vários algoritmos para análise e processametno de dados. As sessões
laboratoriais servirão ainda para esclarecer dúvidas.
A avaliação é realizada através de um trabalho prático.

Bibliografia

Data Mining. Pratical Machine Learning tools and techniques. (third edition) Ian Witten & Eibe Frank, Morgan
Kaufman 2011.
Knowledge Discovery from Data Streams J. Gama (2010), Chapman & Hall/CRC Press
Scientific Data Mining and Knowledge Discovery: Principles and Foundations, Mohamed Medhat Gaber,
Springer, 2009

Algoritmos e Métodos Numéricos (Sem. 2)

Objectivos de aprendizagem

Um estudante que complete com sucesso esta UC deverá ser capaz de demonstrar que adquiriu as seguintes
competências:
• Apreender os fundamentos teóricos matemáticos e numéricos para suporte aos métodos estudados
• Identificar, a diferentes níveis (complexidade, robustez numérica, etc.) pontos fortes e fracos dos métodos
• Desenvolver implementações sequenciais e paralela, usar bibliotecas numéricas e discutir os resultados de
desempenho e eficiência obtidos
• Identificar, nos algoritmos numéricos paralelos, eventuais problemas de balanceamento de carga e/ou
elevados custos de comunicação entre os elementos de computação

Conteúdos programáticos

• Métodos de Monte Carlo: geradores sequenciais e paralelos de números aleatórios, aplicações do método de
Monte Carlo
• Multiplicação de matrizes: implementações sequenciais, implementações paralelas no modelo messagepassing
• Sistemas de equações lineares: método de eliminação de Gauss, métodos iterativos, análise da convergência,
implementações sequenciais e paralelas
• método das diferenças finitas: resolução numérica das equações diferenciais que ocorrem em certos
problemas "clássicos" (vibração de uma corda, difusão de calor)
• Transformada rápida de Fourier: análise de Fourier, as transformadas DDT (discreta) e FFT, algoritmos
sequenciais e paralelos.

Metodologias de ensino e avaliação

A UC é lecionada com uma sessão teórica de 2H e uma sessão laboratorial de 1H semanalmente.
Nas sessões teóricas são lecionados os fundamentos e conceitos. As sessões teóricas são essencialmente de
exposição de matéria.
Nas sessões laboratoriais são consolidados os conhecimentos adquiridos nas sessões teóricas, através da
resolução de exercícios. Os vários exercícios permitem aos alunos a consolidação dos conhecimentos através
da implementação de vários algoritmos numéricos. As sessões laboratoriais servirão ainda para esclarecer
dúvidas.
A avaliação é realizada através de um trabalho prático e de um teste escrito.

Bibliografia

Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their
Implementation, George Em Karniadakis and Robert M. Kirby II, Cambridge University Press, 2003
Matrix Computations, G. Golub, C. F. Van Loan, 3rd. Ed., John Wiley & Sons, 1996