Programação Avançada para Ciência de Dados

Objectivos

Este curso é direcionado a alunos que já sabem programar em python
Nesta unidade, os alunos familiarizam-se com conceitos avançados de programação. Mais complexos,
os conceitos permitem abstrações de nível superior no código. Abstrações de código como objetos e classes
permite maior funcionalidade, implantação mais rápida e permite colaborações em projetos de software.
A gestão do ciclo de vida de um produto de ciência de dados num ambiente corporativo deve seguir
diretrizes específicas. As diretrizes, embora construídas sobre estruturas de programação comuns,
diferem nas especificidades dos modelos matemáticos usados. Abordagens atuais para
programação e gestão de projetos são introduzidos e explorados.

Caracterização geral

Código

67892

Créditos

3.5

Professor responsável

Carlos Damásio (FCT)

Horas

Semanais - A disponibilizar brevemente

Totais - A disponibilizar brevemente

Idioma de ensino

Inglês

Pré-requisitos

N/A

Bibliografia

The replication crisis
Slides and tutorials to complement following documentation of libraries and frameworks:
Pep8
Flake8
Sphinx
Git
Python Testing : pytest .
Pip
Conda
Virtualenv
Data Lifecycle Management
Time series analysis (Class Notebooks)
Apache Spark

Método de ensino

Os alunos são obrigados a trazer os seus laptops para as aulas. As palestras devem ser o principal canal de
formação. Os tópicos serão tratados com exemplos práticos e demonstrações.
Os materiais da aula serão executados em cadernos Jupyter, quando possível.
É altamente recomendável que os alunos instalem o Anaconda: https://www.anaconda.com/products/individual
Devido a um forte componente de desenvolvimento de código na Unidade, será necessária alguma interface de linha de comando.

Método de avaliação

A avaliação geral de desempenho consiste em 3 partes:
Participação nas aulas por meio de 3 questionários (20%)
Projeto de grupo (30%)
Exame final (50%)
Os alunos precisam de participar em questionários de classe pelo menos 2 vezes. Se e somente se os alunos estiverem presentes em todos
questionários, os dois melhores questionários são levados em consideração (os melhores 2 de 3).
Os alunos precisam de propor um projeto de codificação usando um conjunto de dados públicos e criar uma análise de dados
pipeline que deve passar por uma série de testes. Os testes serão executados no framework pytest.
O código será armazenado num repositório junto com instruções sobre como gerar um
ambiente virtual apropriado. Qualquer pessoa com as instruções deve ser capaz de clonar o
repositório, instale o ambiente virtual e execute as análises desenvolvidas pelos alunos.

Conteúdo

O curso é dividido em 6 módulos. Os módulos serão ministrados um por semana.
Notebooks Jupyter com demonstrações são fornecidos para cada módulo.
Os módulos são:
Semana 1. Introdução aos conceitos avançados de programação. Conceitos de reutilização de código, estilo
guias e fiapos. Aprenda fazendo: exemplo de análise de série temporal com pandas.
Semana 2. Documentação e teste. Testes de unidade, testes funcionais e testes de integração com o
estrutura pytest.
Semana 3. Controle de versão com git. Automatizando linting e teste com Contínuo
Integração / entrega contínua.
Semana 4. Implantação de software: ambientes virtuais com conda e dockers.
Semana 5. Análise de séries temporais: decomposição e previsão.
Semana 6. Trabalhando em escala: aprendizado de máquina em Big Data com Pyspark


Cursos

Cursos onde a unidade curricular é leccionada: