Publicação em Diário da República: Despacho n.º 13495/2022 - 18/11/2022
10 ECTS; 1º Ano, 1º Semestre, 30,0 PL + 30,0 TP + 30,0 OT , Cód. 390913.
Docente(s)
- Ricardo Nuno Taborda Campos (1)(2)
(1) Docente Responsável
(2) Docente que lecciona
Pré-requisitos
Não aplicável
Objetivos
Esta UC tem por objetivo introduzir os alunos à aquisição, processamento, armazenamento e recuperação de dados em larga escala como suporte a tarefas de Ciência de Dados (CD).
No final da UC o aluno deverá saber
1. listar os passos envolvidos num projeto de CD em larga escala e descrever as funções de cada um;
2. conhecer as principais ferramentas de desenvolvimento de um projeto de CD;
3. estar familiarizado com os conceitos fundamentais dos grandes volumes de dados;
4. saber aplicar métodos de aquisição de dados com recurso a pacotes de software python, APIs e web scraping;
5. dominar o processo de armazenamento e recuperação de dados em larga escala;
6. conhecer e saber aplicar de forma adequada as estratégias de processamento de dados em larga escala;
7. entender o paradigma map-reduce;
8. conhecer os fundamentos das principais frameworks de processamento de dados em larga escala;
9. saber usar, programar e processar dados em larga escala com recurso à framework Spark.
Programa
1. Introdução à Ciência de Dados
- Definição de ciência de dados em larga escala
- Visão geral das competências de um cientista de dados em larga escala
- Etapas de um projeto de ciência de dados
- A importância da ciência de dados em ambientes com grandes volumes de dados
- Desafios e oportunidades em ciência de dados e big data
- Áreas de atuação da ciência de dados em larga escala
- Tópicos emergentes
- Repositórios de dados
- Data lakes
2. Ferramentas de desenvolvimento no contexto da Ciência de Dados
- Git
- Github
- Docker
- Python (Anaconda - Jupyter Notebook)
- Google Colab
3. Introdução ao Big Data
- Definição de Big Data
- Evolução histórica
- Características
- Vantagens
- Aplicações práticas com grandes volumes de dados
- Arquitetura de um sistema de Big Data
- Plataformas para processamento de dados em larga escala
4. Aquisição de Dados em Larga Escala
- Formatos de dados (estruturados; semi-estruturados; não-estruturados)
- Extração de Informação a partir de ficheiros
- Extração de Informação com recurso a packages
- Extração de Informação com recurso a APIs
- Extração de Informação com recurso a Web Scraping
- Princípios e ética do web scraping
5. Armazenamento e Recuperação de Dados em Larga Escala
- Bases de dados NoSQL
- Vantagens
- NoSQL vs SQL
- Tipos de bases de dados NoSQL
- Bases de dados NoSQL open-source
6. Estratégias de Processamento de Dados em Larga Escala
- Quantos dados são muitos dados?
- Visão geral das estratégias para processamento de dados em larga escala (compressão de dados; bases de dados; chunking; scale-up (expansão de recursos); scale-out (data parallelism) e big data)
- A importância dos GPUs no contexto da ciência de dados em larga escala
7. Programação de Aplicações de Larga Escala com base no Paradigma Map-Reduce
- Visão geral do paradigma map-reduce
- História do map-reduce
- Funcionamento
- Vantagens
- Frameworks
8. Frameworks de Processamento Dados em Larga Escala (Hadoop, Spark, Dask)
Hadoop
- Visão geral do Hadoop
- História e evolução
- Características
- Arquitetura
- Ecosistema
Spark
- Visão geral do Spark
- História e evolução
- Características
- Arquitetura
- Spark vs Hadoop Map-Reduce
Dask
- Visão geral do Dask
- Características
- Arquitetura
- Dask vs PySpark
9. Processamento de Dados em Larga Escala com Spark
- Introdução aos conceitos fundamentais de Spark
- RDDs (Resilient Distributed Datasets)
- Spark DataFrames
- Spark Streaming
Metodologia de avaliação
Avaliação Periódica
- P1 - Projeto I (trabalho de grupo): 40%
- P2 - Projeto II (trabalho de grupo): 40%
- F - Frequência: 20%
A classificação final da UC resulta da média ponderada das classificações obtidas nas componentes de avaliação definidas. O aluno obtém aprovação à UC, estando dispensado de Exame, no caso de obter uma nota igual ou superior a 9.5 valores.
Avaliação Final
- Exame: 100% (prova realizada em computador com consulta parcial dos conteúdos)
Requisitos de admissibilidade à frequência e ao exame:
- Mínimo de 70% de assiduidade às aulas durante o período de ensino-aprendizagem (exceto trabalhadores estudantes);
- Nota mínima de 6 valores em AE, onde AE = ((P1 * 40%) + (P2 * 40%) + (F * 20%))
O incumprimento de qualquer um destes itens (incluindo a submissão de projetos fora do prazo) impede o aluno de se submeter à frequência e ao exame.
Bibliografia
- Galar, M. e Triguero, I. (2023). Large-Scale Data Analytics with Python and Spark. UK: Cambridge University Press
- Marr, B. (2022). Data Strategy: How to Profit from a World of Big Data, Analytics and the Internet of Things. USA: Kogan Page
- McKinney, W. (2017). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. USA: O'Reilly
- Rioux, J. (2022). Data Analysis with Python and PySpark. USA: Manning
Método de Ensino
Exposição dos conteúdos programáticos com recurso ao método expositivo e demonstrativo. Análise e resolução de casos práticos através de notebooks. Os conhecimentos adquiridos serão avaliados através da realização e apresentação de projetos e testes
Software utilizado nas aulas
Python: Anaconda e Jupyter Notebooks; PySpark
Aprovado em Conselho Técnico Cientifico: Aprovada na Ata nº 23/2024 de 26/06
Download da Ficha da Unidade Curricular (FUC)