Engenharia de Grandes Dados
Áreas Científicas |
Classificação |
Área Científica |
CNAEF |
Informática |
Ocorrência: 2021/2022 - 2S (de 26-02-2022 a 16-07-2022) 
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
MECD |
27 |
Plano de estudos Oficial |
1 |
- |
6 |
42 |
162 |
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
A extração de informação a partir de grandes conjuntos de dados -- chamados “big data” -- tem sido o motor de várias empresas grandes e pequenas nos últimos anos e impõe um conjunto de desafios próprios, que esta UC aborda. O objetivo desta UC é dar a conhecer ao estudante os principais paradigmas, desafios, e abordagens de desenvolvimento de sistemas e aplicações big data.
Resultados de aprendizagem e competências
No final desta unidade curricular, o estudante deverá:
1) conseguir distinguir os diferentes conceitos que suportam a computação paralela e distribuída incluindo o processamento de dados;
2) compreender as arquiteturas e sistemas de armazenamento e processamento existentes para grandes conjuntos de dados;
3) conseguir desenvolver aplicações sobre grandes dados, nomeadamente de pesquisa de dados e de aprendizagem a partir de dados, e caracterizar o seu desempenho;
4) conseguir identificar e discutir desafios ao desenvolvimento e uso de aplicações e modelos big data.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Programação; aprendizagem de dados.
Programa
1. Conceitos fundamentais da computação paralela: medidas de desempenho, tipo de processadores, gestão da memória e localização dos dados, limitações da computação paralela, tipos de paralelismo, etapas na paralelização, e modelos de programação paralela.
2. Modelos de programação paralela com dados: paralelismo de dados em GPU e multi-core, organização em threads e mapeamento em dados multi-dimensionais; modelo Map-Reduce, organização de dados com chave-valor, fases de execução, execução especulativa, relação com sistema Hadoop de ficheiros distribuídos e gestão de recursos; modelo Spark, unidade de dados resiliente e distribuída (RDD), difusão de variáveis, e modo streaming.
3. Desenvolvimento de aplicações e caracterização do seu desempenho: pesquisa (Hadoop Pig, Spark SQL) e aprendizagem (Spark mllib, deeplearning em GPU/tensorflow); debugging, medição, e tuning de tarefas, trabalhos, e passos de execução em Spark, Hadoop, e tensorflow.
4. Desafios ao desenvolvimento de aplicações e modelos big data, incluindo privacidade e anonimização dos dados, interpretação de resultados de aprendizagem, viés (bias), e vulnerabilidades
Bibliografia Obrigatória
Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee;
Learning Spark -- Lightning-Fast Big Data Analysis, 2nd Edition, O'Reilly, 2020. ISBN: 978-1492050049
David B. Kirk and Wen-mei W. Hwu;
Programming Massively Parallel Processors - A Hands-on Approach, Morgan Kaufmann, 2017. ISBN: 978-0128119860
Bibliografia Complementar
Tom White;
Hadoop: The Definitive Guide: Storage and Analysis at Internet Scale 4th Edition, O'Reilly, 2015. ISBN: 978-1491901632
Tomcy John, Pankaj Misra; Data Lake for Enterprises: Lambda Architecture for building enterprise data systems, Packt Publishing, 2017. ISBN: 978-1787281349
Métodos de ensino e atividades de aprendizagem
1. Exploração dos conceitos de programação paralela com dados, modelos de programação e arquitetura de sistemas “big data”, e aplicações, através de a) exposição em sala de aula, b) pesquisa autónoma de artigos científicos, casos de estudo, e informação disponível na Internet, c) técnica de flipped classroom (sala de aula invertida) com auto-aprendizagem dos conteúdos disponibilizados previamente e discussão dos conceitos em sala de aula.
2. Exploração autónoma, apresentação, e discussão de artigos científicos
3. Projeto incluindo especificação, desenvolvimento, teste, e caracterização de desempenho de aplicações “big data” recorrendo às tecnologias e conceitos discutidos na UC.
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
50,00 |
Trabalho prático ou de projeto |
50,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Elaboração de projeto |
60,00 |
Estudo autónomo |
60,00 |
Frequência das aulas |
42,00 |
Total: |
162,00 |
Obtenção de frequência
Realizar o projeto e frequentar as aulas.
Fórmula de cálculo da classificação final
CF = 0,5*T + 0,5*P; if ( T < 10,0 or P < 10,0 ) then CF =MIN(CF, 9.0)
T - test
P - project
Melhoria de classificação
A classificação da componente de frequência (Projeto) pode ser melhorada na próxima ocorrência da Unidade Curricular. A componente de teste pode ser melhorada no exame de recurso.