|
Entregável do Bloco: |
Um software que roda de forma paralelizada e distribuída para processar algoritmos complexos, que demandam grande poder computacional, apresentando uma análise quantitativa e qualitativa sobre o impacto da utilização da arquitetura paralela e distribuída.
|
|
Estrutura de Dados e Algoritmos Avançados I |
Explicar a importância de estrutura de dados |
Aplicar estruturas de dados em diferentes problemas |
Construir software com estruturas de dados: listas, pilhas, filas, hash tables |
Construtir software com encadeamento, sequência, árvores e grafos |
|
Arquitetura de Computadores e Sistemas Operacionais |
Explicar os fundamentos da arquitetura de computadores |
Avaliar a performance de computadores e dispositivos móveis |
Explicar os fundamentos de sistemas operacionais |
Construir software utilizando paralelismo |
|
Estrutura de Dados e Algoritmos Avançados II |
Analisar complexidade de algoritmos |
Analisar e projetar algoritmos de busca e ordenação |
Projetar algoritmos com técnicas de algoritmos gulosos, divisão e conquista, programação dinâmica e algoritmos genéticos |
Analisar e reconhecer problemas P, NP e NP-Completos |
|
Arquitetura de Redes de Computadores |
Praticar e explicar a visão de redes em camadas e os modelos OSI e TCP/IP |
Monitorar o funcionamento e a segurança de redes de computadores |
Construir software utilizando as camadas do modelo TCP/IP |
|
|
Projeto de Bloco: Ciência da Computação |
Explicar as vantagens e trade-offs da implementação de software de forma paralela e distribuída |
Conceber um projeto de software em que a implementação de uma arquitetura paralela e distribuída seja vantajosa |
Implementar um projeto de software seguindo arquitetura paralela e distribuída |
Avaliar quantitativa e qualitativamente o impacto da utilização da arquitetura paralela e distribuída em um projeto de software |
Refletir criticamente sobre a sua prática profissional, seu planejamento e desenvolvimento de carreira e sua capacidade de trabalho em equipe, estabelecendo relações com o projeto desenvolvido e qualificando ou quantificando a sua expertise em engenharia de software |
Entender o contexto social da engenharia de software e refletir criticamente sobre o impacto do software desenvolvido às pessoas, à sociedade e à economia |