Sistemas reativos interagem continuamente com o ambiente sob os quais estão inseridos. Eles representam um campo amplo de aplicações e plataformas de hardware: de jogos eletrônicos em desktops, passando por apps em celulares inteligentes, até a emergente internet das coisas em sistemas embarcados.
Neste curso iremos abordar os sistemas reativos sob diversos aspectos de software: modelos de concorrência, linguagens, técnicas de programação, e aplicações em diversas plataformas.
Ementa: Sistemas Reativos, Modelos de Concorrência Síncrono e Assíncrono, Padrão Observer, Máquinas de Estado, Corrotinas, Programação Reativa Funcional, Jogos, Arduino, Redes de Sensores sem Fio, Projeto.
-
O que é um sistema Reativo?
- Sistemas transformacionais
- Sistemas interativos
- Sistemas reativos
-
Modelos de Concorrência
- Concorrência e Paralelismo
- Modelo assíncrono
- Sincronismo explícito
- Threads (memória compartilhada)
- Atores (troca de mensagens)
- Modelo síncrono
- Sincronismo implícito
- Hipótese de sincronismo
- Restrições
-
Técnicas de Programação
- Padrão Observer (callbacks)
- Máquinas de estado
- Corrotinas
- Futures & Promises
- Programação Reativa Functional (FRP)
- Programação Reativa Imperativa
-
Linguagens e Ferramentas
- Lua/Love
- C/SDL
- C/Arduino
- C/TinyOS
- Elm
- Céu
-
Aplicações
- Jogos (SDL, Love)
- Sistemas embarcados (Arduino)
- Internet das coisas (TinyOS)
-
Avaliação
- Mini testes baseados em leitura de artigos científicos
- Pequenos projetos
- Projeto final