Processamento de Streams

Objetivos

Aprender os conceitos fundamentais, linguagens e sistemas para construir aplicações que processam fluxos de dados. A unidade curricular aborda, apresenta e discute os sistemas generalistas para processamento de streams em tempo real, e desenvolverá com especial ênfase o estudos de sistemas para modelos de dados estruturados orientados aos fluxos de dados.

Saber

A. Conhecer os principais modelos de programação para o processamento de fluxos contínuos de dados

B. Conhecer as linguagens e assimilar as características fundamentais para resolver problemas no domínio
do processamento de streams

C. Compreender as vantagens e as desvantagens das plataformas para processamento de streams.

Aplicação

A. Ser capaz de escolher os modelos, linguagens e ferramentas mais adequadas para resolver um
problema de processamento de streams

B. Set capaz de desenvolver e executar aplicações para processamento de streams usando ferramentas e tecnologias correntes.

Caracterização geral

Código

11562

Créditos

6.0

Professor responsável

Nuno Manuel Ribeiro Preguiça, Sérgio Marco Duarte

Horas

Semanais - 4

Totais - 50

Idioma de ensino

Português

Pré-requisitos

Adequate programming skills in the Python programming language. 

Bibliografia

Opher Etzion and Peter Niblett. Event Processing in Action. Manning Publications, 2010.

Lukasz Golab and Tamer Özsu. Data Stream Management. Morgan and Claypool, 2010.

Bifet et al., (2018) Machine Learning for Data Streams, MIT Press

Several papers will be provided for further reading.

Método de ensino

As aulas teóricas apresentam os modelos, linguagens e plataformas dominantes para cada área temática do programa, usando exemplos paradigmáticos para enquadrar a discussão e o entendimento das questões tratadas.

As aulas práticas focam-se na utilização prática dos sistemas e linguagens estudadas, incluindo o desenvolvimento de aplicações para cenários particulares de processamento de streams. As aulas consistem em demonstrações, exercícios e o acompanhamento da realização dos dois projectos de programação a desenvolver ao longo do semestre. Exemplos de tais aplicações, que têm sido usados, são os challenges da principal conferência nesta área (DEBS).

A avaliação consiste em dois testes (25% cada) e dois trabalhos práticos (25% cada).

Método de avaliação

Esquema Geral

A avaliação é composta por uma componente teórica-prática e por uma componente de projeto. 

Ambas as componentes são avaliadas numa escala de 0 a 20, arredondado a unidades.

A nota final da disciplina é a média pesada das duas componentes, na qual a componente de projeto contribui com 1/2 e a componente teórica-prática com 1/2.

Para obter aprovação à disciplina um estudante necessita ter uma classificação igual ou superior a 8 valores na componente teórica-prática, e de 10 valores na nota final.

A obtenção de frequência  necessita uma classificação final na componente de projeto igual ou superior a 10 valores.

Componente teórica-prática

Esta componente é obtida através de dois testes individuais.

Supletivamente, esta componente pode também ser realizada por exame de recurso. 

Componente de projeto

Desta componente fazem parte a realização, apresentação e discussão de dois trabalhos. O primeiro trabalho deverá ser entregue até ao final da 7ª semana de aulas, e o 2º trabalho até ao final das aulas (datas a confirmar com a comissão pedagógica do curso). O trabalho é feito em grupos de até 2 alunos. 

Apesar do trabalho ser feito em grupo, a nota desta componente será sempre individual (e não atribuída ao grupo). Para ela contribuem o trabalho e o relatório feitos em grupo, mas também o desempenho na apresentação oral e discussão. A nota final da componente é a média aritmética das notas indivuduais dos dois projetos.

Conteúdo

Distributed Stream Processing Systems.

System models for stream processing: streams as sequences of mini-batches (e.g. Spark streaming); continuous processing (e.g. Apache Flink, Storm).
Programming models. System aspects: distribution, scalability and fault-tolerance.
Distributed time-series databases. Systems for IoT stream processing.

Data Stream Management Systems (DSMS).

Structured Data Models for Streams. Algebraic operators on stream and relations.
Continuous query languages (extensions to SQL and database management systems to deal with data streams).

Machine Learning for Streams.

Introduction to learning from data Dimensionality reduction for streams.
Learning under concept drift. Incremental learning.
Learning under imbalance and learning from graphs.

Cursos

Cursos onde a unidade curricular é leccionada: