---
title: "Mestrado em Engenharia de Software - José DA COSTA"
description: "Master Expert em Engenharia de Software na ESIEA (2023-2026). Título RNCP Nível 7, formação em alternância com a empresa ACCENSEO."
locale: "pt"
canonical: "https://portfolio.josedacosta.info/pt/trajetoria/mestrado-em-engenharia-de-software"
source: "https://portfolio.josedacosta.info/pt/trajetoria/mestrado-em-engenharia-de-software.md"
html_source: "https://portfolio.josedacosta.info/pt/trajetoria/mestrado-em-engenharia-de-software"
author: "José DA COSTA"
type: "journey"
slug: "mestrado-em-engenharia-de-software"
generated_at: "2026-04-23T15:46:30.574Z"
---

# Mestrado em Engenharia de Software

**Period:** 2023-12-31 - 2026-03-31  
**Type:** education  
**Level:** Mestrado - BAC+5 - RNCP Nível 7  
**Training hours:** 738 horas de formação  
**Institution:** ESIEA - Escola de Engenharia para um Digital Útil

## Overview

Master Expert em Engenharia de Software na ESIEA (2023-2026). Título RNCP Nível 7, formação em alternância com a empresa ACCENSEO.

- Título RNCP Nível 7 (equivalente Master)
- Formação em alternância empresa/escola
- Especialização em engenharia de software

## Competencies (33)

- **Padrões de Arquitetura de Software** (confidence 5/5) _(technical)_: Projetar sistemas de software escaláveis usando padrões arquiteturais como arquitetura em camadas, arquitetura hexagonal, microsserviços, arquitetura orientada a eventos e CQRS.
- **Princípios SOLID e Código Limpo** (confidence 5/5) _(technical)_: Aplicar os princípios SOLID (Responsabilidade Única, Aberto/Fechado, Substituição de Liskov, Segregação de Interfaces, Inversão de Dependências) e práticas de código limpo para software manutenível.
- **Design Patterns (Gang of Four)** (confidence 5/5) _(technical)_: Implementar os design patterns do Gang of Four (Criacionais, Estruturais, Comportamentais) para resolver problemas de design recorrentes e construir software orientado a objetos flexível e reutilizável.
- **Estratégia de Testes e Qualidade de Software** (confidence 5/5) _(technical)_: Definir e executar estratégias de testes abrangentes incluindo testes unitários, testes de integração, testes de ponta a ponta, práticas TDD/BDD e processos de garantia de qualidade de software.
- **Segurança de Aplicações Web (OWASP)** (confidence 4/5) _(technical)_: Proteger aplicações web aplicando as diretrizes OWASP Top 10, implementando autenticação/autorização, prevenindo ataques de injeção, XSS, CSRF e realizando auditorias de segurança.
- **Programação JavaScript (POO, Eventos, Assíncrono)** (confidence 5/5) _(technical)_: Dominar os paradigmas de programação JavaScript incluindo programação orientada a objetos, arquitetura orientada a eventos, padrões assíncronos (Promises, async/await) e funcionalidades modernas ES6+.
- **Desenvolvimento TypeScript** (confidence 5/5) _(technical)_: Desenvolver aplicações type-safe com TypeScript, aproveitando sistemas de tipos avançados, genéricos, decoradores, interfaces e integração com frameworks e ferramentas de build modernos.
- **Programação Java SE** (confidence 2/5) _(technical)_: Programar aplicações robustas em Java SE, dominando conceitos fundamentais como coleções, genéricos, streams, multithreading, I/O é o ecossistema JVM.
- **Java Spring e Hibernate** (confidence 2/5) _(technical)_: Desenvolver aplicações empresariais usando o framework Spring (Boot, MVC, Security, Data) e Hibernate ORM para persistência de dados, gerenciamento de transações e desenvolvimento de APIs RESTful.
- **Design e Implementação de API REST** (confidence 5/5) _(technical)_: Projetar e implementar APIs RESTful seguindo boas práticas incluindo modelagem de recursos, métodos HTTP, códigos de status, autenticação, versionamento, documentação e segurança de APIs.
- **Docker e Práticas DevOps** (confidence 5/5) _(technical)_: Containerizar aplicações com Docker, criar imagens otimizadas, gerenciar ambientes multi-contêiner com Docker Compose e integrar práticas DevOps para entrega contínua.
- **Workflows Git Avançados (GitHub e GitLab)** (confidence 5/5) _(technical)_: Aplicar workflows Git avançados incluindo estratégias de branching (GitFlow, trunk-based), pull requests, revisões de código, integração CI/CD e colaboração nas plataformas GitHub e GitLab.
- **Práticas Avançadas de Agile e Scrum** (confidence 5/5) _(technical)_: Aplicar práticas avançadas de Agile e Scrum incluindo planejamento de sprints, refinamento de backlog, acompanhamento de velocidade, retrospectivas e frameworks de escalabilidade para projetos de software complexos.
- **Execução e Pilotagem de Projetos de Software** (confidence 5/5) _(technical)_: Executar e pilotar projetos de engenharia de software de ponta a ponta, gerenciando escopo, prazos, orçamentos, entregas e expectativas dos stakeholders ao longo do ciclo de vida do projeto.
- **Algoritmos Avançados e Complexidade** (confidence 5/5) _(technical)_: Analisar e projetar algoritmos eficientes, compreender complexidade computacional (notação Big O) e aplicar estruturas de dados avançadas e estratégias algorítmicas para resolver problemas complexos.
- **Design UML de Aplicações Complexas** (confidence 3/5) _(technical)_: Modelar designs de aplicações complexas usando diagramas UML incluindo diagramas de classes, de sequência, de casos de uso, de componentes e de implantação.
- **Desenvolvimento Front-End Angular** (confidence 4/5) _(technical)_: Construir aplicações front-end de nível empresarial com Angular, incluindo componentes, serviços, injeção de dependências, roteamento, formulários reativos, observáveis RxJS e gerenciamento de estado.
- **Desenvolvimento Mobile Kotlin e Android** (confidence 1/5) _(technical)_: Desenvolver aplicações Android nativas usando Kotlin, incluindo design de UI com Jetpack Compose, arquitetura MVVM, persistência de dados, integração de API e boas práticas para dispositivos móveis.
- **Arquitetura Distribuída e Big Data** (confidence 3/5) _(technical)_: Projetar e implementar sistemas distribuídos e arquiteturas Big Data usando tecnologias como Hadoop, Spark, Kafka e bancos de dados distribuídos para processamento de dados em larga escala.
- **Bancos de Dados NoSQL (Redis, MongoDB, Cassandra, Neo4j)** (confidence 4/5) _(technical)_: Trabalhar com sistemas de bancos de dados NoSQL incluindo Redis (chave-valor), MongoDB (documento), Cassandra (coluna) e Neo4j (grafo), selecionando o modelo aprópriado para cada caso de uso.
- **Programação Funcional (Scala)** (confidence 1/5) _(technical)_: Aplicar paradigmas de programação funcional com Scala, incluindo imutabilidade, funções de ordem superior, pattern matching, monads e abordagens funcionais para programação concorrente.
- **Fundamentos de Machine Learning** (confidence 4/5) _(technical)_: Compreender e aplicar os fundamentos de machine learning incluindo aprendizado supervisionado/não supervisionado, redes neurais, avaliação de modelos e integração de capacidades de IA em aplicações de software.
- **Análise Funcional e Engenharia de Requisitos** (confidence 4/5) _(technical)_: Coletar e analisar as necessidades do cliente, modelar específicações funcionais e traduzir requisitos de negócio em requisitos de software acionáveis usando técnicas como casos de uso, user stories e matrizes de rastreabilidade de requisitos.
- **Design UX e Wireframing** (confidence 3/5) _(technical)_: Projetar interfaces centradas no usuário através de pesquisa UX, wireframing, prototipagem, testes de usabilidade e aplicação de princípios de design para criar produtos digitais intuitivos e acessíveis.
- **Estratégia de Comunicação de Projeto** (confidence 4/5) _(technical)_: Desenvolver e executar estratégias de comunicação de projeto incluindo relatórios para stakeholders, dashboards de progresso, comunicação de riscos e técnicas de alinhamento de equipe.
- **Direito Contratual de TI e Conformidade** (confidence 3/5) _(technical)_: Compreender o direito contratual de TI incluindo SLAs, propriedade intelectual, conformidade com LGPD/GDPR, cláusulas de responsabilidade e marcos legais que regem o desenvolvimento de software e serviços digitais.
- **Liderança de Equipe e Coaching** (confidence 5/5) _(soft)_: Liderar e orientar equipes de desenvolvimento através de mentoria, delegação, motivação, feedback de desempenho e promoção de uma cultura de aprendizado contínuo e crescimento profissional.
- **Gestão Multifuncional** (confidence 5/5) _(soft)_: Coordenar equipes multifuncionais, alinhar stakeholders diversos e gerenciar projetos transversais abrangendo múltiplos departamentos com diferentes prioridades e restrições.
- **Design Thinking e Inovação** (confidence 3/5) _(soft)_: Aplicar a métodologia Design Thinking para impulsionar a inovação, incluindo mapeamento de empatia, ideação, prototipagem rápida e validação iterativa com usuários finais.
- **Relacionamento com Cliente e Consultoria em TI** (confidence 4/5) _(soft)_: Construir e manter relacionamentos de confiança com clientes através de consultoria em TI, análise de necessidades, propostas de soluções e serviços de assessoria alinhando tecnologia com objetivos de negócio.
- **Documentação Técnica e Comunicação** (confidence 4/5) _(soft)_: Produzir documentação técnica clara, redigir comunicações de projeto eficazes, criar registros de decisão arquitetural e apresentar conceitos técnicos complexos para públicos diversos.
- **Proficiência em Inglês para Negócios** (confidence 1/5) _(soft)_: Comunicar-se efetivamente em inglês profissional em documentação técnica, apresentações, reuniões e colaboração internacional com equipes de desenvolvimento globais.
- **Colaboração internacional** (confidence 1/5) _(soft)_: Gestão intercultural, comunicação de RH internacional e capacidade de colaborar com equipes distribuídas por vários países e culturas.

## Curriculum

### Bloco 1 - Gestão do relacionamento com o cliente em engenharia de software

- **Análise funcional de um projeto de SI**
  _Topics:_ Introdução - Definição, Os tipos de análises funcionais, O caderno de encargos funcionais, As etapas da AF, A análise da necessidade, Expressão funcional das necessidades, Necessidades funcionais e não funcionais, Funções de serviço, Análises funcionais técnicas, SADT, Arquitetura técnica, Testes com usuários, User Stories, Tradução das soluções em tarefas
  _Objectives:_ Explicar o papel da análise funcional em um projeto de SI, Conduzir uma análise funcional (requisitos funcionais e não funcionais), Redigir um caderno de específicações funcionais, Traduzir as necessidades em user stories e tarefas técnicas
- **Iniciar eficazmente um projeto de SI**
  _Topics:_ O que é um projeto de SI?, Tipologia de projeto de SI, Projetos e produtos, Papel do responsável técnico (MOE), Papel do responsável pelo negócio (MOA), Papel do responsável pelo produto, O que é um sistema de criação de valor?, O que é um SI?, Ambiente interno do SI, Ambiente externo do SI, Conhecer seu SI, Visão do ecossistema, Visão de negócio do sistema de informação, Visão dos dados, Visão das aplicações - cobertura funcional, Visão da administração, Visão das infraestruturas lógicas e físicas, Identificar os projetos de melhoria e evolução, Identificar os projetos de ruptura, Estabelecer uma vigilância tecnológica, Benchmarking, Explorar um business case, Criar um business case, Plano de gestão de benefícios, Estimativa e precisão, Estimar os prazos, Estimar os custos, Estimar as competências, Priorizar os projetos de SI, Mecanismo de licitação (chamada de propostas), O caderno de encargos, Tipo de contrato, Iniciar um projeto como responsável técnico (MOE), Iniciar um projeto como responsável pelo negócio (MOA), Iniciar um projeto como gerente de produto, Acompanhar a mudança, Comunicar!, A governança
  _Objectives:_ Analisar a estrutura e os desafios de um sistema de informação, Identificar, avaliar e priorizar projetos de SI, Estimar custos, prazos e recursos de um projeto de SI, Explorar e construir um business case, Comunicar e acompanhar a gestão de mudanças em projetos de SI
- **Direito dos contratos de TI**
  _Topics:_ Contratos de TI - Definição e desafios, Panorama dos riscos jurídicos em prestações de TI, Uma tipologia dos contratos de TI, O quadro jurídico da prestação de serviços de TI, Os documentos preparatórios ao contrato de TI, A negociação do contrato de TI, Caso prático relativo à fase pré-contratual, A formalização do contrato de TI, A validade do contrato de TI, As cláusulas sensíveis do contrato de TI, As especificidades dos contratos em modo ágil, Princípios relativos à execução dos contratos, As cláusulas relativas à propriedade intelectual, Dever de assessoria do prestador vs dever de colaboração do cliente, A obrigação de entrega da prestação de TI, Foco na cláusula de aceite, Foco nas cláusulas de 'service level agreement', Foco nas cláusulas de proteção de dados, O impacto da implantação das IAs, A resolução do contrato de TI, Foco na cláusula de reversibilidade, As cláusulas de resolução de disputas, O contrato de desenvolvimento de software específico, O contrato de manutenção, O contrato de terceirização de TI, O contrato de fornecimento em modo SaaS, Redigir uma cláusula de licença de software, O checklist útil ao prestador de TI
  _Objectives:_ Aplicar os princípios jurídicos dos contratos profissionais (B2B), Identificar os mecanismos de propriedade intelectual aplicáveis às soluções de TI, Detectar as cláusulas essenciais dos contratos de desenvolvimento ou fornecimento de soluções de TI, Identificar e analisar os contratos úteis para garantir o fornecimento e uso de soluções de TI, Compreender os riscos jurídicos específicos dos contratos internacionais
- **UX e Wireframing**
  _Topics:_ O que é UX design, A gestão de projeto de UX design, As leis de Gestalt, Pesquisas com usuários, 5W, Entrevistas e questionários, Focus group, Benchmark UX, Análise de dados, Shadowing, Personas, Caso prático - Persona, Jornadas do usuário, Caso prático - Jornada do usuário, Hierarquizar e organizar conteúdos, A ordenação de cartões (card sorting), Conceber uma arquitetura de informação, Flowchart e storyboard, 10 mitos de UX-UI, UX-UI - exemplos e tendências, Especificidades do design mobile, Design responsivo e aspectos técnicos, Elementos constitutivos de uma interface, Zoning, Sketching, Caso prático - Workshop de sketching, Wireframes, Protótipos interativos, Testes com usuários, Teste em laboratório, Teste A/B, Eye tracking, E depois?
  _Objectives:_ Compreender os desafios é o escopo do UX Design, Descobrir as diferentes etapas da métodologia, Identificar os usuários, suas necessidades, expectativas e barreiras, Projetar uma interface utilizando e combinando os elementos que a compõem, Testar seu projeto para identificar oportunidades de melhoria
- **Design Thinking**
  _Topics:_ Definição e origens do Design Thinking, A filosofia e a abordagem Design Thinking, A métodologia em 5 etapas, Exemplo de caso de uso, A imersão - como conduzir entrevistas com usuários, Descobrir as ferramentas da imersão, Identificar o problema fundamental, A fase de ideação é o enquadramento do brainstorming, As 3 etapas da criatividade, Exemplo de ferramentas para quebrar o gelo, Descobrir as ferramentas de divergência (1-2), Descobrir as ferramentas de divergência (2-2), Identificar a solução a prototipar - as ferramentas de convergência, Definição e importância da prototipagem, Exemplos de prototipagem física e digital, Demonstração de ferramentas online de prototipagem, Confrontar seu protótipo e iterar, Estruturar uma sessão de teste, Exemplo de aplicações, Apresentar sua solução para convencer, Por que e como enquadrar um workshop de Design Thinking, Conceber um roteiro de workshop bem elaborado, Ferramentas para conceber um roteiro de workshop, A estrutura para fazer o debriefing após um workshop, O papel e a postura do facilitador, Gerenciar a energia e as personalidades dentro do grupo, Desenvolver sua confiança para facilitar com tranquilidade, Gerenciar imprevistos durante uma sessão de cocriação, Técnicas de fala em workshop, Zoom sobre a facilitação gráfica, Os diferentes formatos de workshop de cocriação, As diferentes modalidades - remoto vs presencial, Ferramenta para facilitar sessões coletivas remotas, Síntese e desafio - é a sua vez!
  _Objectives:_ Aplicar a métodologia de design thinking e técnicas de pesquisa com usuários, Estimular a criatividade dentro de um grupo e gerar ideias inovadoras, Dominar as ferramentas de prototipagem para dar vida às soluções, Testar e iterar soluções com os usuários para otimizar sua proposta de valor, Conceber e facilitar workshops de inteligência coletiva usando técnicas de facilitação
- **Gestão transversal**
  _Topics:_ A transversalidade na empresa, Gestão transversal vs hierárquica, Posicionar-se em um papel transversal, As 3 alavancas da gestão transversal, Pilotar a atividade, Planejar e gerenciar o tempo, Estabelecer uma relação de qualidade e confiança, A agilidade relacional: adaptar-se, sincronizar-se, Adaptar-se aos perfis introversão vs extroversão, Adaptar-se aos perfis sensação vs intuição, Adaptar-se aos perfis pensamento vs sentimento, Adaptar-se aos perfis organização vs adaptação, Traços dominantes por profissão e função, Resistência e não oposição centrada, A colaboração generativa: atitude coach, Transformar os bloqueios, Afirmar-se transversalmente e desenvolver sua liderança, Visão e mobilização, Ousar animar a coesão do grupo, Critérios de motivação individual, Comunicação influente: rede e equipe indireta, Autodiagnóstico, Ficha prática: o quadro de intervenção, Reforçar sua liderança e transformar a oposição, Episódio 1 - Gerenciar conflitos em sua equipe, Episódio 2 - Facilitar uma reunião remota, Episódio 3 - Saber dizer não a um colaborador, Episódio 4 - Remotivando um colaborador, Episódio 5 - Reorientar um colaborador
  _Objectives:_ Implementar ferramentas e comportamentos-chave da gestão transversal, Adaptar-se a diferentes perfis comportamentais para colaborar efetivamente, Organizar e coordenar uma equipe sem vínculo hierárquico, Gerir resistências e desenvolver liderança transversal
- **Animar e liderar uma equipe**
  _Topics:_ Os fundamentos da gestão, Integração do gestor, Recrutamento, Integração de um colaborador, Os quatro estilos de gestão, A postura ideal, O modelo DISC, O modelo Herrmann, As crenças limitantes e os drivers, A inteligência emocional, A confiança em si mesmo e a exemplaridade, Funcionamento da confiança mútua, O triângulo de Karpman, A postura de adulto responsável para adulto responsável, As alavancas da relação de confiança, Os princípios da comunicação, A CNV (Comunicação Não Violenta), Três métodos complementares de comunicação, Funcionamento e prevenção de conflitos, Os diferentes métodos para gerenciar conflitos, Reorientar respeitosamente, As fontes de motivação, Definir os objetivos, Roteiro, Painel de indicadores prospectivo, Desdobramento dos objetivos com os ritmos gerenciais, Os ritmos gerenciais coletivos, Os ritmos gerenciais individuais, Lean management, A gestão ágil, Criar uma forte coesão de equipe, A dinamização individual, A dinamização coletiva, Empresas liberadas ou teal, Exemplo da empresa Buurtzorg, Exemplo da empresa FAVI, Episódio 1 - Gerenciar conflitos em sua equipe, Episódio 2 - Facilitar uma reunião remota, Episódio 3 - Saber dizer não a um colaborador, Episódio 4 - Remotivando um colaborador, Episódio 5 - Reorientar um colaborador
  _Objectives:_ Adquirir ferramentas e métodos para uma gestão eficaz da equipe, Adaptar o estilo de gestão em função dos perfis e das situações, Dominar as técnicas de comunicação (CNV) e de gestão de conflitos, Ativar os mecanismos de motivação individuais e coletivos

### Bloco 2 - Pilotagem de projeto de engenharia de software

- **Executar e pilotar a realização de um projeto de Engenharia de Software**
  _Topics:_ Para que serve o gerenciamento de projetos?, Diferenças entre projetos e operações, Descobrir o contexto do projeto, Definir o escopo do projeto, Estabelecer o termo de abertura do projeto, O que é uma parte interessada?, Gerenciar eficazmente as partes interessadas, Coletar os requisitos, Definir os objetivos e restrições, Interesse em escolher sua abordagem de projeto, O que é uma abordagem preditiva?, O que é uma abordagem incremental?, O que é uma abordagem iterativa?, O que é uma abordagem ágil?, O que é uma abordagem híbrida?, Escolher uma abordagem de projeto, Construir sua equipe, Identificar os entregáveis, Criar a EAP (WBS), Decompor os entregáveis em atividades, Avaliar as atividades, Identificar os riscos, Avaliar os recursos, Avaliar o orçamento, O que é qualidade em um projeto?, Definir as modalidades de aceite dos entregáveis, Planejar a execução do projeto, Criar o cronograma do projeto preditivo, Criar o cronograma do projeto ágil, Acompanhar o andamento do projeto, Análise do valor agregado, Comunicar sobre o andamento do projeto, Encerrar o projeto
  _Objectives:_ Analisar e compreender o ambiente do projeto, Escolher e implementar um framework de execução adequado, Identificar e estimar o trabalho e os recursos do projeto, Organizar e sequenciar a execução do trabalho, Acompanhar e comunicar o progresso do projeto
- **Métodos Ágeis avançados / Scrum**
  _Topics:_ A história do gerenciamento de projetos, Os diferentes modelos de gerenciamento de projetos, Começar pelo porquê, Os OKR, Conhecer nossos usuários finais, Contar a história de nossos usuários, O Product Backlog, A user story, A roadmap, Design Sprint, As bases do Scrum, Os papéis do Scrum, Os artefatos, Os rituais, A velocidade, As estimativas relativas, A previsibilidade, Kanban, Gestão visual, A melhoria contínua, A agilidade em escala, Conclusão
  _Objectives:_ Diferenciar as abordagens tradicionais das abordagens ágeis e de produto, Dominar o framework Scrum: papéis, artefatos, cerimônias e estimativas, Organizar um backlog de produto, redigir user stories e planejar um roadmap, Aplicar Kanban e os princípios de melhoria contínua
- **Liderança e Gestão**
  _Topics:_ O que é gestão?, As missões-chave do gestor, O que é liderança?, Vários estilos de liderança, Começar por (melhor) se conhecer, Abrir a janela (de Johari), Definir seus objetivos de desenvolvimento, Trabalhar seu próprio estilo - Exercícios para começar, Trabalhar seu próprio estilo: uma árvore para contínuar, Estar a serviço dos objetivos.. ou de si mesmo - A liderança inspiradora, Combater seu sentimento de impostor, Autoestima ou autoconfiança? Eis a questão, Assumir sua ambição, Enfrentar seus medos, Aceitar elogios, Reforçar o engajamento da equipe - 3 pilares vencedores, Garantir o sentimento de inclusão de cada um, Melhorar suas capacidades de escuta, Definir regras de trabalho compartilhadas pelos membros da equipe, Comunicar com impacto, Fazer reuniões individuais eficazes, Dar feedback positivo, Reorientar um comportamento quando necessário, Realizar entrevistas de desenvolvimento com sucesso, Dizer não quando necessário, Gerenciar as situações mais delicadas, Para concluir, Pré-requisitos
  _Objectives:_ Compreender os desafios da liderança em relação à gestão, Descobrir técnicas de autoconhecimento que fortalecem a liderança do gestor, Desenvolver competências interpessoais a serviço do engajamento da equipe, Lidar com situações difíceis (síndrome do impostor, tensões, estresse, sexismo..)
- **Comunicar em modo projeto**
  _Topics:_ O que é um projeto?, Definir a comunicação, Os diferentes tipos de comunicação, Em quais etapas do projeto comunicar, Por que comunicar em um projeto, Os tipos de comunicação a evitar, 10 reflexos para comunicar bem, A proposta de valor, Elaborar seu plano de comunicação, Construir seus objetivos, Identificar seus públicos-alvo, Criar personas, Apresentar seu plano de comunicação, Desenvolver sua comunicação em cada etapa do projeto, Conhecer-se bem e compreender o outro, Motivar as equipes, Identificar os diferentes suportes de comunicação, Utilizar as ferramentas de uma comunicação eficiente, Organizar e animar as reuniões de projeto, As reuniões de briefing, Os kick-offs de projeto, As revisões de projeto, As resoluções de problemas, Os balanços de projeto, Conclusão geral
  _Objectives:_ Conhecer os fundamentos da comunicação de projetos, Compreender como elaborar um plano de comunicação eficaz, Identificar os suportes de comunicação essenciais em modo projeto, Dominar a comunicação no encerramento do projeto

### Bloco 3 - Integração, indústrialização e implantação do software

- **JavaScript: iniciação e programação orientada a objetos**
  _Topics:_ A linguagem da web, Ambiente de trabalho, As variáveis, Os operadores, As estruturas condicionais, As estruturas iterativas, Os arrays, Os arrays multidimensionais, As funções, Os parâmetros, A recursividade, A POO, Os modificadores de acesso, As classes built-in, Aplicação Padaria / Análise, Aplicação Padaria / Codificação, A herança, Aplicação Padaria / Os confeiteiros, Aplicação Padaria / Solução, Contexto e arrow functions, Conclusão
  _Objectives:_ Compreender o uso do JavaScript no desenvolvimento front-end, Dominar a sintaxe e os fundamentos essenciais da linguagem JavaScript, Aplicar os fundamentos da POO (Programação Orientada a Objetos) comum a todas as linguagens web, Conceber código utilizando métodos específicos do JavaScript
- **JavaScript: programação orientada a eventos e assíncrona**
  _Topics:_ JavaScript é o DOM, O objeto global window, Selecionar elementos, Criar e remover elementos, Gerenciar regras CSS, A programação orientada a eventos, Os listeners, Exercício Peão enjaulado (Parte 1), Exercício Peão enjaulado (Parte 2), Programação assíncrona, A API Fetch, Aplicação Meteorologia (Parte 1), Aplicação Meteorologia (Parte 2), Aplicação Meteorologia (Parte 3), As funções assíncronas, Aplicação Meteorologia (Parte 4), Conclusão
  _Objectives:_ Manipular a estrutura DOM de uma página web, Manipular folhas de estilo CSS, Práticar a programação orientada a eventos e assíncrona, Dominar a API Fetch
- **Desenvolva suas aplicações web com TypeScript**
  _Topics:_ Introdução ao TypeScript, Instalar TypeScript e configurá-lo, Os tipos fundamentais, Os tipos Tuples, Os tipos Object e Array, Os tipos Enums, Os tipos Functions, Os módulos import, export, Classe private, protected, public, Classe readonly, static, get, set, Classe abstrata, Criar uma interface simples, Ir mais fundo nas interfaces, Os generics, As classes genéricas, Os tipos avançados, Criação de um decorator simples, Usar um decorator como validador, Namespace, Mixin, Documentar o código com JSDoc, Implementar TypeScript no Node.js e Jest, Implementar TypeScript com Parcel e Webpack
  _Objectives:_ Dominar os tipos do TypeScript, Implementar controles com interfaces, Estruturar um projeto com módulos e namespaces, Aprofundar-se em programação orientada a objetos (POO), Utilizar TypeScript em diferentes ambientes
- **Fundamentos do desenvolvimento Front-end com Angular**
  _Topics:_ Era uma vez.. Angular!, Instalação, Edição da nossa aplicação, Introdução aos componentes, Criação de um componente, Template, estilo e seletores de componentes, Databinding e string interpolation, Ligação de propriedades e eventos, Two way databinding, A diretiva ngIf: exibir condicionalmente, Diretivas ngStyle/ngClass: alterar o estilo dinamicamente, Diretiva ngFor: exibir listas, Ajuda para debug, Componentes @Input e @Output: custom property binding, Componentes e CSS: entender o encapsulamento de view, Acessar elementos do DOM com @ViewChild, O ciclo de vida dos componentes, Criação de uma diretiva customizada, @HostListener e @HostBinding, Por que usar um serviço?, Entender a injeção de dependência, Entender os observables, Criação de um observable, Os subjects e os operadores
  _Objectives:_ Dominar o funcionamento de uma aplicação Angular, Aplicar os blocos fundamentais do Angular: Componentes, Serviços e Diretivas, Debugar uma aplicação Angular, Utilizar observables
- **Aprofundamento do desenvolvimento Front-end com Angular**
  _Topics:_ Introdução, Configuração do projeto base, As rotas, Navegação, Passar parâmetros às rotas, Rotas aninhadas e links ativos, Redirecionamentos e wildcards, Guard CanActivate, Guard CanDeactivate, Passagem de dados para uma página, Os formulários, A abordagem template-driven, A abordagem model-driven, Model-driven - custom validators, Usar pipes, Criar um pipe customizado, Criar um pipe de filtro, Entender o pipe async, Requisições HTTP: Introdução, POST, GET e DELETE, Tratamento de erros, Alterar Headers, query params e tipo de resposta, Uso de um interceptor
  _Objectives:_ Criar uma aplicação Angular completa, Criar e navegar entre páginas usando o roteador, Criar formulários complexos usando model-driven forms ou template-driven forms, Utilizar pipes e criar pipes personalizados, Fazer requisições HTTP (GET, POST..), Utilizar interceptadores
- **Dominar Java SE**
  _Topics:_ Apresentação e histórico do microcosmo Java, Apresentação e instalação do JDK 17, Apresentação e instalação do Eclipse 2022-12, Primeira classe, a classe HelloWorld, Os tipos primitivos, os objetos e os arrays, O projeto 'adivinhe um número', A classe String é o projeto palíndromo, Escrita de classes POJO, o projeto poker, As palavras-chave static e final, A herança é o polimorfismo: as classes Document, Orçamento e Fatura, As exceções, As interfaces, As coleções - 1ª parte, As coleções - 2ª parte, Implementação das interfaces Comparable e Comparator, Implementação da interface Serializable, Escrita de interfaces e sua utilização nas camadas de software, As anotações, Maven, Lombok, Importação de um arquivo CSV com commons-csv, A API Stream e as lambdas - 1ª parte, A API Stream e as lambdas - 2ª parte, Apresentação do JUnit e escrita de uma classe de teste, Apresentação do Log4J e integração no projeto poker
  _Objectives:_ Desenvolver classes Java, Dominar as principais palavras-chave da linguagem, Implementar camadas de software utilizando interfaces, Utilizar a API Stream e as lambdas, Compreender a ferramenta Maven, as bibliotecas Lombok e Log4J é o framework JUnit
- **Desenvolver em Java com Spring e Hibernate**
  _Topics:_ Apresentação do Jakarta EE e do Spring, Apresentação do Jakarta Persistence e Hibernate, Os projetos do Spring, Apresentação do projeto Avis, Os modelos em camadas do Spring e a noção de estereótipo, As primeiras anotações do Jakarta Persistence, As anotações do Jakarta Persistence relacionadas a relações e herança, Inicialização do projeto Avis com Spring Initializr, Importação do projeto Avis no IntelliJ e instalação dos plugins, Configuração do projeto Avis em XML e autoconfiguração, Configuração do projeto Avis com classes Java, Configuração do projeto Avis com um arquivo properties, Configuração do projeto Avis com um arquivo YAML, Escrita e anotação JPA das classes do modelo no projeto Avis, Adição de validações nas classes do modelo, Escrita da camada de acesso aos dados com Spring Data, Escrita da classe de inserção de dados e primeiro conceito-chave do Spring, Apresentação do HQL, Utilização do HQL na camada de acesso aos dados, Escrita de métodos derivados na camada de acesso aos dados, Noção de projeção e prática na camada de acesso aos dados, A páginação dos dados, Escrita da camada de serviço, Revisão do protocolo HTTP e seus códigos de retorno, Escrita dos controllers e das views Thymeleaf, Escrita de controllers REST, Implantação e utilização do Swagger, A noção de advice, Os Spring REST repositories, Segundo conceito-chave - A programação orientada a aspectos, Conclusão
  _Objectives:_ Dominar Jakarta Persistence e Hibernate para persistência de dados, Desenvolver uma aplicação empresarial com o framework Spring, Projetar e expor uma API REST com Spring Boot, Documentar uma API com Swagger e aplicar programação orientada a aspectos
- **Git avançado - GitHub e GitLab**
  _Topics:_ Algumas revisões sobre Git, Selecionar um commit (cherry-pick), Recuperar commits desaparecidos (reflog), Adicionar notas, Importar um repositório SVN, Encontrar a origem de modificações, Ignorar arquivos com precisão, Definir um hook, Gerenciar submódulos, Designar intervalos de commits, Gerenciar arquivos volumosos, Workflows Git, Apresentação do GitHub, Criar um repositório GitHub, Trabalhar em equipe no GitHub, Sincronizar Pull Requests, Os comandos de linha do GitHub, As GitHub Actions, Compartilhar snippets no Gist, Introdução ao GitLab, Criar sua conta GitLab, Trabalhar em grupo no GitLab, Sincronizar uma Merge Request, Os objetos internos do Git, Comandos de administração e otimização
  _Objectives:_ Dominar os comandos e conceitos do Git, Dominar Pull Requests no GitHub, Gerenciar um projeto no GitLab, Aplicar os conceitos internos do Git
- **Dominar Docker e DevOps**
  _Topics:_ O que é DevOps?, Introdução ao Docker, Instalar o Docker, Gerenciamento de imagens Docker, Lançamento e gerenciamento de containers, As redes Docker, Os volumes Docker, Utilização de arquivos Dockerfile, As instruções avançadas em um Dockerfile, Infrastructure As Code com Docker Compose, Ir mais fundo no Docker Compose, Utilizar o Docker Hub, Criar um registry privado, Introdução ao Docker Swarm, Criar um cluster com Docker Swarm, Tornar a infraestrutura extensível com Docker Swarm, Compartilhar dados em vários servidores, Utilizar secrets, Entender a integração contínua e a implantação contínua, A integração contínua com Docker e GitHub, Ir ao próximo nível: Kubernetes
  _Objectives:_ Compreender os conceitos fundamentais do Docker, Utilizar as ferramentas Docker Compose para definir e gerenciar aplicações multi-contêiner, Implantar e gerenciar aplicações usando Docker Swarm, Utilizar ferramentas de integração contínua com Docker para automatizar processos de implantação
- **Implantação de uma aplicação**
  _Topics:_ A implantação no ciclo de vida de uma aplicação, O diagrama UML de implantação, O diagrama UML de componentes, Tipologia de hospedagens clássicas, Tipologia de hospedagens Cloud, Estrutura de uma arquitetura distribuída, Implantação em um serviço PaaS, O versionamento semântico de uma aplicação, Os workflows de versionamento de código, Integração contínua de uma aplicação, Implantação contínua de uma aplicação, Os princípios da containerização, Criação de imagem e implantação de container, Implantação de containers múltiplos, Gerenciamento de volumes e redes com containers, Orquestração de containers, Implantação do tipo 'rolling update', Implantação do tipo 'blue-green', Implantação do tipo Canary, Migração de dados, Monitoramento de uma aplicação, Assinatura de código
  _Objectives:_ Descrever e executar a implantação de uma aplicação, Escolher um modo de implantação adequado ao tipo de hospedagem, Preparar a implantação de uma aplicação web e microsserviço, Considerar a segurança na implantação de aplicações
- **Kubernetes para orquestrar seus containers**
  _Topics:_ Introdução, Docker, as bases, Volumes, Dockerfile e Registry, Docker - as bases: demonstração, Docker Compose, Docker Compose: demonstração, Kubernetes: introdução, Interagir com Kubernetes, Interagir com Kubernetes: demonstração, Recursos de base, Namespace, pods e services, Namespace, pods: demonstração, Label: demonstração, Services: demonstração, ReplicaSet e Deployment, ReplicaSet e Deployment: demonstração, Secrets e ConfigMap, Secrets e ConfigMap: demonstração, Lifecycle, Jobs, Jobs e CronJobs: demonstração, Domínio das capacidades, Domínio das capacidades: demonstração, PersistentVolumes e PersistentVolumeClaims, PersistentVolumes e PersistentVolumeClaims: demonstração, Arquitetura do Kubernetes, Autenticação e autorização, Autenticação e autorização: demonstração, Implantar uma aplicação com HELM, Implantar uma aplicação com HELM: demonstração
  _Objectives:_ Compreender os conceitos fundamentais do Kubernetes, Dominar os fundamentos de contêineres e demonstrar como o Kubernetes facilita sua gestão, Implantar uma aplicação simples no Kubernetes, Criar um serviço para expor uma aplicação em um cluster, Utilizar kubectl para monitorar o estado do cluster e recuperar logs
- **Dominar a linguagem Kotlin**
  _Topics:_ Apresentação, HelloWorld, Os diferentes tipos de tipagem, Otimizar sua IDE, Função e função expressão, Criação de objetos básicos, Data class, Objeto complexo (capítulo avançado), Singleton e companion object, Explorar uma API REST, GSON Otimização (capítulo avançado), Tratamento de exceções, Condição, Loop, Coleção, TP Recapitulativo: explorar uma API com uma coleção, Extensions, Lambda - Sintaxe (capítulo avançado), Lambda e as coleções, Let, also, apply, run, Herança, Tarefas assíncronas com Threads
  _Objectives:_ Dominar os fundamentos e a sintaxe da linguagem Kotlin, Aplicar programação orientada a objetos e funcional em Kotlin, Consumir APIs REST e manipular dados JSON, Gerenciar tarefas assíncronas com threads
- **Desenvolver aplicações mobile Android em Kotlin**
  _Topics:_ Apresentação, HelloWorld, Dominar a arquitetura do projeto, Criar uma interface gráfica, Internacionalizar sua aplicação, Otimizar sua IDE, Manipular a interface, Dominar o tema da sua aplicação, Desenvolver um menu e caixas de diálogo, Entender o ciclo de vida de uma atividade, Usar uma tarefa assíncrona, Realizar uma requisição HTTPS, Explorar uma API REST, GSON Otimização (capítulo avançado), Tratamento de exceções, Retrofit (capítulo avançado), Arquitetura ViewModel, LiveData e MVVM, Projeto recapitulativo, Databinding, Gerenciamento de permissões, Implementação de um RecyclerView, Google Maps - teoria
  _Objectives:_ Criar uma aplicação nativa Android em Kotlin, Projetar e manipular interfaces gráficas (RecyclerView, menus, temas), Consumir APIs REST com Retrofit e a arquitetura MVVM, Gerenciar o ciclo de vida das atividades, permissões e erros
- **Construir uma API REST com Spring Boot**
  _Topics:_ O que é uma API REST?, Apresentação do Spring Boot, Modelar sua API com draw.io, Configurar seu ambiente de trabalho, Descobrir a arborescência e iniciar a aplicação, Recuperar as empresas com um GET, Usar Spring Boot Dev Tools, Implementar uma interface de serviço, Comunicar com o banco de dados, Recuperar uma empresa específica com um GET, POST - Criar uma nova empresa, PUT - Modificar uma empresa, PATCH - Atualizar campos específicos da empresa, DELETE - Excluir uma empresa, Vincular empresa e jogo, Expor um endpoint para nosso jogo, Recuperar os jogos de uma empresa com GET, POST - Criar um novo jogo para uma empresa, PUT - Modificar um jogo, DELETE - Excluir um jogo, Documentar com Swagger, Validar seus dados com constraints
  _Objectives:_ Descobrir o conceito de API REST, Aprender a gerar um projeto Spring Boot, Saber interagir com uma API REST como cliente, Documentar sua API para facilitar a compreensão, Validar seus dados com annotations

### Bloco 4 - Concepção avançada da arquitetura do software

- **Princípios SOLID em Java**
  _Topics:_ A problemática da qualidade do código, Os princípios SOLID, uma resposta aos desafios de um código manutenível, S: Single Responsibility Principle - Introdução, Não conformidade com o Single Responsibility Principle, Conformidade com o Single Responsibility Principle, Impacto do Single Responsibility Principle no gerenciamento de versão do código, O: Open-Close Principle - Introdução, Não conformidade com o Open-Close Principle, Conformidade com o Open-Close Principle com o uso de interfaces, Conformidade com o Open-Close Principle em multi-módulos, L: The Liskov Substitution Principle - Introdução, Não conformidade com o Liskov Substitution Principle, Conformidade com o Liskov Substitution Principle, I: The Interface Segregation Principle - Introdução, Não conformidade com o Interface Segregation Principle, Conformidade com o Interface Segregation Principle, D: The Dependency Inversion Principle - Introdução, Não conformidade com o Dependency Inversion Principle, Conformidade com o Dependency Inversion Principle graças às interfaces, Conformidade com o Dependency Inversion Principle em um projeto multi-módulos, Os pontos-chave
  _Objectives:_ Identificar os desafios do clean code, Compreender os princípios SOLID, Implementar os princípios SOLID em Java
- **Arquitetura de software**
  _Topics:_ A necessidade da arquitetura de software, Panorama das arquiteturas de software, Introdução à arquitetura monolítica, Caso de uso da arquitetura monolítica, Implementação da arquitetura monolítica em Java, Introdução à arquitetura orientada a serviços, Caso de uso da arquitetura orientada a serviços, Implementação da arquitetura orientada a serviços em Java, Introdução à arquitetura de microsserviços, Caso de uso da arquitetura de microsserviços, Implementação da arquitetura de microsserviços em Java, Introdução à arquitetura baseada em eventos, Caso de uso da arquitetura baseada em eventos, Implementação da arquitetura baseada em eventos em Java, Introdução à arquitetura centrada em dados, Caso de uso da arquitetura centrada em dados, Implementação da arquitetura centrada em dados em Java, Conclusão: revisão das arquiteturas de software
  _Objectives:_ Identificar e comparar as principais arquiteturas de software (monolítica, SOA, microsserviços, orientada a eventos, centrada em dados), Avaliar os casos de uso adequados a cada tipo de arquitetura, Implementar uma arquitetura de software em Java
- **Concepção de aplicação complexa com UML**
  _Topics:_ Introdução à modelagem estrutural com UML, O diagrama de classe (classe e herança), O diagrama de classe com Visual Paradigm, Tradução do diagrama de classe em código (classe e herança), O diagrama de classe (relação e multiplicidade), O diagrama de classe com Visual Paradigm (relação e multiplicidade), Tradução do diagrama de classe em código (relação e multiplicidade), O diagrama de classe (interface e enumeração), O diagrama de classe com Visual Paradigm (interface e enumeração), Tradução do diagrama de classe em código (interface e enumeração), Ilustração em torno de um caso prático FantasyRPG 1, Ilustração em torno de um caso prático FantasyRPG 2, O diagrama de classe para modelar um banco de dados, O diagrama de sequência (linha de vida e mensagem), O diagrama de sequência com Visual Paradigm (linha de vida e mensagem), O diagrama de sequência (Fragment e Jacobson), O diagrama de sequência com Visual Paradigm (Fragment e Jacobson), Tradução do diagrama de sequência em código, Ilustração em torno de um caso prático FantasyRPG 3, Apresentação do diagrama de componentes, O diagrama de componentes com Visual Paradigm, Apresentação do diagrama de pacotes, O diagrama de pacotes com Visual Paradigm, Ilustração em torno de um caso prático FantasyRPG 4, Apresentação do diagrama de implantação, O diagrama de implantação com Visual Paradigm
  _Objectives:_ Produzir código fonte a partir de um diagrama de classes, Representar um cenário complexo utilizando um diagrama de sequência, Ilustrar uma arquitetura de software utilizando um diagrama de componentes, Elaborar um diagrama de implantação, Produzir um diagrama de pacotes a partir do código fonte
- **Design Patterns em Java**
  _Topics:_ Introdução: Design Patterns do GoF, a lenda, Descrição dos Design Patterns de criação, Descrição do Design Pattern Singleton, Implementação de Singleton, Descrição do Design Pattern Factory Method, Implementação de Factory Method, Descrição do Design Pattern Abstract Factory, Implementação de Abstract Factory, Descrição dos DP Builder e DP Prototype, Descrição dos Design Patterns de estrutura, Descrição do Design Pattern Proxy, Implementação de Proxy, Descrição do Design Pattern Composite, Implementação de Composite, Descrição do Design Pattern Adapter, Implementação de Adapter, Descrição do Design Pattern Facade, Implementação de Facade, Descrição do Design Pattern Decorator, Implementação de Decorator, Descrição dos DP Flyweight e DP Bridge, Descrição dos Design Patterns comportamentais, Descrição do Design Pattern Observer, Implementação de Observer, Descrição do Design Pattern Strategy, Implementação de Strategy, Descrição do Design Pattern Iterator, Implementação de Iterator, Descrição do Design Pattern Interpreter, Implementação de Interpreter, Descrição do Design Pattern Chain of Responsibility, Implementação de Chain of Responsibility, Descrição dos DP Template Method e DP Mediator, Descrição dos DP Visitor e DP Memento, Descrição dos DP Command e DP State, Os outros Design Patterns: Exemplo Composite Specification, Implementação do Design Pattern Composite Specification
  _Objectives:_ Conhecer os 23 Design Patterns do Gang of Four (GoF), Aplicar os principais padrões de criação em Java (Singleton, Factory, Abstract Factory), Aplicar os principais padrões estruturais em Java (Adapter, Proxy, Composite, Facade, Decorator), Aplicar os principais padrões comportamentais em Java (Observer, Strategy, Iterator, Interpreter, Chain of Responsibility), Adaptar um ou mais padrões de projeto a situações reais
- **Segurança de aplicações web**
  _Topics:_ Introdução à segurança de aplicações web, A autenticação e a autorização em aplicações web, Descubra as recomendações OWASP, Recomendação A01-2021: Broken Access Control, Recomendação A02-2021: Cryptographic Failure, Recomendação A03-2021: Injection, Recomendação A04-2021: Insecure Design, Recomendação A05-2021: Security Misconfiguration, Recomendação A06-2021: Vulnerable and Outdated Components, Recomendação A07-2021: Identification and Authentication Failures, Recomendação A08-2021: Software and Data Integrity Failures, Recomendação A09-2021: Security Logging and Monitoring Failures, Recomendação A10-2021: Server-Side Request Forgery (SSRF), Implementação do Spring Security em um projeto Java Spring Boot, Configurar uma cadeia de filtros de segurança 'Basic Authentication', Usar usuários do banco de dados para autenticação, Gerenciar a autorização com a implementação de roles de segurança, A autenticação baseada em tokens, Configurar uma cadeia de filtros de segurança 'Bearer Token Authentication', Criar seu próprio filtro de segurança baseado em tokens, Testar sua segurança com Spring Security Test, Descubra o protocolo de autorização OAuth2, Descubra o protocolo de identidade OpenID, Revisão dos pontos-chave
  _Objectives:_ Compreender as recomendações OWASP, Conhecer os modos de autenticação para aplicações web, Implementar autenticação baseada em tokens em Java com Spring Security
- **Algoritmia avançada**
  _Topics:_ Otimizar, por onde começar?, Pesquisar, uma tarefa complexa?, Melhorar a pesquisa com uma ordenação, Complexidade da ordenação, Melhoria da ordenação no melhor caso, Verificar, tão complicado quanto fazer?, Simplificar e simplificar mais, Equivalência recursivo e iterativo, As Torres de Hanói, Dividir para conquistar, A busca binária, O quicksort, Comparemos as ordenações, A memória, Memória e recursividade, Arrays e memória, Performance e arrays, Listas encadeadas, Operações em lista encadeada, Lista duplamente encadeada, Lista duplamente encadeada circular, Implementação de uma lista encadeada, Pilha e fila, Mochila: Força bruta, NP-Completude, Algoritmo de aproximação, Os algoritmos gulosos, Mochila gulosa, Programação dinâmica, A sequência de Fibonacci, Clássico versus Dinâmico, Mochila dinâmica, As versões de mochila, O tempo, a memória e as estratégias
  _Objectives:_ Ser capaz de comparar dois algoritmos, Melhorar um algoritmo em termos de tempo de execução, Melhorar um algoritmo em termos de uso de memória, Aplicar uma estratégia de resolução de problemas
- **Programação funcional em Scala**
  _Topics:_ Introdução à programação funcional, Regras e leis sobre funções, Introdução ao Scala, Instalação do IntelliJ IDEA / Utilização do SBT, Uma visão geral do Scala, Programação orientada a objetos, Tipos e composição de tipos, Enumeração de tipos, Funções em Scala, Pattern Matching, Dados imutáveis, Recursividade, Funções de alta ordem, Implementação de uma coleção, Tratamento de erros em Scala, Efeitos, programação paralela e concorrente em Scala
  _Objectives:_ Compreender os conceitos fundamentais da programação funcional, Saber utilizar funções como valores, Dominar as técnicas de manipulação de dados imutáveis, Aplicar os conceitos de recursividade e funções de ordem superior, Utilizar Scala para práticar os conceitos de programação funcional
- **Arquitetura distribuída e Big Data**
  _Topics:_ Introdução ao Big Data, Arquitetura distribuída, Implicações de negócio do Big Data e da arquitetura distribuída, Sistema de gerenciamento de banco de dados, NoSQL, Hadoop, MapReduce, MapReduce: demonstração, DataFlow Engines, Spark, RDD, RDD: demonstração, RDD: transformações e ações, Demonstração: RDD, transformações e ações, Arquitetura Spark, Spark, API de alto nível, Demonstração: Spark, API de alto nível, Otimização Spark, Spark SQL, DataFrames e Datasets, Demonstração: Spark SQL, DataFrames e Datasets, Escolha da API, Streaming, Spark Streaming, Spark Structured Streaming, Demonstração - Spark Structured Streaming
  _Objectives:_ Compreender os desafios do Big Data, Dominar o armazenamento relacional e NoSQL: suas garantias e limitações, Explorar as características dos sistemas distribuídos, Dominar os fundamentos do processamento em lote: MapReduce, Data Flow Engines (Spark..), Analisar dados em tempo real com Streaming
- **NoSQL**
  _Topics:_ Introdução ao armazenamento, O modelo relacional, As bases do relacional, OLAP vs OLTP, Agregações, transações e otimizador, As bases do relacional: demonstração, Relacional - motor de armazenamento: demonstração, Relacional - transações: demonstração, Relacional - otimizadores: demonstração, Introdução ao NoSQL, NoSQL: Chave-valor, Redis - CRUD: demonstração, Redis, transações e pub-sub: demonstração, Redis: Arquitetura, Redis, arquitetura: demonstração, NoSQL: Coluna, Cassandra, CRUD: demonstração, NoSQL Cassandra: Arquitetura, Cassandra, arquitetura: demonstração, NoSQL: Documento, MongoDB, CRUD: demonstração, MongoDB, CRUD: Arquitetura, MongoDB, arquitetura: demonstração, NoSQL: Grafo, Neo4j, CRUD: demonstração, Neo4j, grafo complexo: demonstração, Neo4j: Arquitetura, Neo4j, arquitetura: demonstração
  _Objectives:_ Comparar os modelos de bancos de dados relacionais e NoSQL, Dominar os bancos NoSQL: chave-valor (Redis), coluna (Cassandra), documento (MongoDB), grafo (Neo4j), Projetar e gerenciar bancos de dados em um ambiente distribuído, Compreender a distribuição de carga, a consistência de dados e a tolerância a falhas
- **Estrutura de dados**
  _Topics:_ A estrutura certa, O que contém um grafo?, Grafo orientado e grafo não orientado, Grafo ponderado, Estrutura de dados grafo, Representar um grafo em Python, Tornar um grafo ponderado em Python, Percurso em largura, Percurso em profundidade, Percurso de grafo em Python, Caminho em um grafo, Caminho hamiltoniano, Caminho hamiltoniano em Python, Caminho euleriano, Presença de um caminho euleriano em Python, Algoritmo de Fleury em Python, Árvore geradora mínima, Algoritmo de Kruskal em Python, O caminho mais curto, Algoritmo de Dijkstra, Os limites de Dijkstra, Árvore binária de busca, Manipular uma árvore binária de busca, Operações em uma árvore binária de busca, Modificações de uma árvore binária de busca, Árvores rubro-negras, Inserir em uma árvore rubro-negra, Remover de uma árvore rubro-negra, Heap e heap sort, Implementar o heap sort, Usar a estrutura de dados correta
  _Objectives:_ Compreender as estruturas não lineares através da estrutura de grafos, Representar um grafo em uma linguagem de programação, Percorrer um grafo, Resolver problemas comuns utilizando grafos
- **Planos de testes de uma aplicação**
  _Topics:_ Objetivos de um plano de testes, Conteúdo de um plano de testes, Criação de um caso de teste, Tipologia e hierarquia dos testes automatizados, As bases de um teste unitário, O TDD - desenvolvimento orientado por testes, Aplicação concreta do TDD, Testes unitários avançados no backend, Cobertura do código pelos testes, Testes na parte front-end, Testes e integração contínua com GitLab, Os testes de integração e os conjuntos de dados, Os testes de integração de API, Execução dos testes de integração no GitLab, O BDD - Os testes com os usuários, Os testes de ponta a ponta, Análise estática de código, Desafios dos testes de segurança com o OWASP, Segurança - Controle de acesso deficiente, Segurança - Falhas criptográficas, Segurança - Injeção SQL, Segurança - Falhas XSS, Fuzzing - Análise de segurança por testes aleatórios, Testes de carga, Conclusão
  _Objectives:_ Construir e executar um plano de testes adaptado à métodologia de desenvolvimento, Diferenciar os tipos de testes e escolher uma estratégia adequada ao contexto, Criar e executar testes automatizados em ambientes adequados, Analisar a segurança de uma aplicação e aplicar correções segundo as recomendações da OWASP
- **Introdução ao Machine Learning**
  _Topics:_ O Machine Learning em plena expansão, Descobrir os conceitos do Machine Learning, Compreender o aprendizado supervisionado, Visualizar o ciclo de vida de um projeto de Machine Learning, Configurar seu ambiente de trabalho, Começar com Python e NumPy, Pandas, Scikit-learn, Descobrir nosso primeiro modelo: KNN, O KNN na prática, Avaliar seu modelo de regressão, Avaliar seu modelo de regressão com sklearn, Explorar os dados, Entender o 2º modelo: regressão linear, Treinar uma regressão linear, Compreender um problema de classificação, Preparar dados - Parte 1, Preparar dados - Parte 2, Implementar uma métodologia de avaliação - Parte 1, Avaliar seu modelo de classificação, Implementar uma métodologia de avaliação - Parte 2, Manipular um 3º modelo: Árvore de decisão, Combater o overfitting com a regularização, Ajustar seu modelo com os hiperparâmetros, Descobrir os modelos de ensemble com a floresta aleatória, Selecionar as features relevantes, Implantar seu modelo de predições, Estruturar seu projeto de Machine Learning, Descobrir o Deep Learning, Implementar uma rede neural, Classificar imagens com redes neurais convolucionais
  _Objectives:_ Definir machine learning e seus componentes, Ser capaz de preparar dados, Saber treinar e utilizar um modelo de machine learning, Identificar casos de uso relevantes de machine learning

### Bloco 5 - Preparação para o seu nível de inglês

- **Inglês comercial**
  _Topics:_ Superar as falsas crenças comuns no aprendizado do inglês, Como gerenciar as interações profissionais básicas, Como usar o vocabulário comum ao inglês e ao francês nas interações profissionais, Identificar e evitar as armadilhas mais comuns na comunicação profissional em inglês, Como criar o ambiente para aumentar sua desenvoltura em situações profissionais, Presenting yourself and your company, Redigir um e-mail profissional, Telefonar para obter informações (ou agendar uma reunião), Resolver um problema de atendimento ao cliente, Participar de uma reunião, Entender as solicitações e instruções, Entender as perguntas e reformular, Identificar e definir os problemas, Acompanhar uma reunião, Entender uma proposta comercial, Apresentar informações de forma simples e coerente, Garantir o acompanhamento de um projeto, Expressar divergências de opinião e informar colaboradores sobre problemas, Estruturar claramente suas ideias e propostas, Como intervir durante uma reunião, Como lidar com assuntos complexos ou ambíguos, Como se preparar para acompanhar uma negociação, Como gerenciar viagens profissionais em inglês, As chaves para participar de uma feira em inglês, Como lidar serenamente com a multiculturalidade
  _Objectives:_ Saber acolher, informar e fazer preencher uma ficha de informação, Ser capaz de comunicar e dominar as bases do inglês comercial, Tratar reclamações de clientes por escrito, Enriquecer e utilizar um vocabulário específico e adequado
- **Inglês Comercial Nível Avançado**
  _Topics:_ Vocabulary Expansion for Professional Contexts, Speaking Skills for Business Meetings and Presentations, Writing Skills for Business Emails and Reports, Business Negotiations, Professional Presentations and Public Speaking, Sales Methodologies and Techniques-Persuasive Techniques for Sales, Negotiation Techniques in English, Handling Objections and Closing Deals, Sales Forecasting and Performance Evaluation, Sales Team Management and Leadership, Cultural Awareness and Sensitivity in Business, Global Business Etiquette and Protocol, Cross Culture Negotiation Styles, Adapting Communication Styles for Different Markets, Managing Cross-Cultural Teams and Relationships, B2B Sales Process and Relationship Building, Advanced Negotiation Skills and Harvard Style Negotiation, Account Management and Customer Retention, Handling Complex Sales Cycles and Objections, Sales Forecasting and Performance Evaluation for B2B Sales, Marketing Strategy and Planning for Business Growth, Customer Needs Analysis and Lead Generation, Product Marketing and Promotion Techniques, Effective Customer Communication and Relationship Management, Sales Forecasting and Performance Evaluation for Marketing
  _Objectives:_ Melhorar as habilidades de comunicação em inglês de negócios, Desenvolver técnicas e estratégias avançadas de vendas, Aprimorar habilidades de comunicação intercultural para negócios internacionais, Aplicar habilidades de vendas B2B e gestão de contas, Compreender habilidades de marketing e comunicação com clientes
- **Inglês Comercial Nível Intermediário**
  _Topics:_ Professional English Communication in Sales, Professional English Communication in Sales, Communication via Phone and Email, Managing Misunderstandings and Expressing Disagreement in English Conversations, Differences between French and Anglo-Saxon Cultures, Tips for Improving English Pronunciation, Reading aloud to Enhance Fluency and Confidence, Common expressions for managing stress and nervousness during presentations in English, Breathing and Relaxation Techniques to Enhance Confidence in English, Practical exercises to improve diction and voice projection in English, Effective Presentation Techniques in English, Key Phrases for a successful presentation in English, Structure of sales proposals in English, Action verbs for formulating business ideas and proposals in English, Writing professional presentation materials in English, Understanding commercial terminology in English, Managing misunderstandings in English, Variations in customer needs based on culture, Reformulating customer requests to better meet expectations, Active listening- techniques and tools for empathy and understanding prospects, Sales process and product-service presentation, Presenting solutions aligned with customer needs, Crafting persuasive sales proposals, Action verbs for formulating sales proposals in English, Handling common sales objections in English
  _Objectives:_ Comunicar-se efetivamente com colaboradores, clientes ou fornecedores em inglês, Descobrir métodos para melhorar a pronúncia e a articulação em inglês, Dominar as técnicas de apresentação eficaz em inglês para cativar a audiência, Compreender as necessidades dos clientes e reformulá-las, Formular propostas comerciais e responder a objeções
- **Inglês: preparação para o TOEIC**
  _Topics:_ Introdução ao TOEIC®, Os tipos de TOEIC®, Foco no TOEIC®: listening and reading, O novo TOEIC®, Como se preparar, O vocabulário geral, Os temas gerais, O vocabulário profissional, Ampliar seu vocabulário, Ampliar seu vocabulário 2, As palavras-ferramenta, Preposições e "phrasal verbs", A gramática do TOEIC®, A forma -ing, Uso do gerúndio, Os auxiliares, Os modais, Conjugar com "be", Conjugar com "have", Conjugar com "will", "would", "do" e "did", Dicas e truques de conjugação, Seção "listening" (compreensão oral), Part 1, Como passar na "Part 1", Mini teste "Part 1", Part 2, "Part 2": Perguntas / respostas típicas, Como passar na "Part 2", Mini teste "Part 2", Part 3, Perguntas típicas da "Part 3", Mini teste "Part 3", Part 4, Perguntas típicas da "Part 4", Mini teste "Part 4", Seção "reading" (compreensão escrita), Part 5, Perguntas típicas da "Part 5", Mini teste "Part 5", Part 6, Como passar na "Part 6", Mini teste "Part 6", Part 7, Como passar na "Part 7", As particularidades da "Part 7", Últimos conselhos para o dia da prova
  _Objectives:_ Familiarizar-se com o formato do teste TOEIC, Identificar os pontos gramaticais a dominar é o vocabulário a adquirir, Evitar as "armadilhas" do TOEIC, Maximizar sua pontuação no TOEIC com dicas de preparação e simulado

### Bloco 6 - Módulos de nívelamento preparatório e reforço

- **Inglês de Recursos Humanos**
  _Topics:_ Apresentar-se e apresentar seu cargo, Profissões de RH na empresa, Entender e usar os códigos profissionais de comunicação (hierarquia, distância, formal-informal), Coletar as necessidades e adaptar uma descrição de cargo a um recrutamento internacional, Redigir uma oferta de emprego em inglês clara e atrativa, Públicar uma vaga nas plataformas - Site de carreiras da empresa, LinkedIn, jobboards, Entender os currículos internacionais e tendências culturais, Obter as informações essenciais durante uma entrevista de recrutamento (presencial ou remoto), Dar um retorno a um candidato, Apresentar o processo de onboarding, Responder às perguntas comuns durante uma entrevista, Gestão administrativa de pessoal - Promessa de contratação e formalização do contrato de trabalho, Entender a influência cultural no conteúdo dos relatórios de integração, Preparar e conduzir uma entrevista de fim do período de experiência, Redigir e-mails de RH padrão (convocação, acompanhamento, follow-up..), Realizar tarefas correntes - One-to-one com o colaborador, telefone, videoconferência, Tomar notas e redigir uma ata concisa de entrevista ou reunião de RH, Gerenciar solicitações administrativas de colaboradores internacionais, Conduzir uma avaliação anual e profissional, Gerenciar talentos e avaliar necessidades de treinamento, Iniciar um procedimento disciplinar contra um colaborador, Acompanhar um plano de desenvolvimento individual, Validar um perfil com um gestor, Identificar as principais diferenças culturais nas práticas de RH, Reconhecer incompreensões ou tensões interculturais, Gerenciar incompreensões ou tensões interculturais, Comunicar com assertividade (feedback, situações delicadas, conflitos), Promover sua empresa junto a um candidato internacional, Explicar os benefícios sociais e a vida na França, Valorizar a diversidade e a cultura da empresa, Redigir a apresentação de um projeto de RSE (inclusão, qualidade de vida no trabalho), Avaliar o impacto de uma ação de RH (ex: treinamento, onboarding), Extrair informações de uma ferramenta de RH (ATS, SIRH..), Usar eficazmente uma ferramenta de tradução, Comunicar sobre a política de confidencialidade da empresa em inglês (transparência, LGPD, consentimento dos colaboradores..)
  _Objectives:_ Conceber e adaptar estratégias de comunicação em inglês para situações de RH complexas e internacionais, Desenvolver e enriquecer um léxico de RH especializado para formular com precisão políticas e procedimentos de RH em inglês, Elaborar mensagens e materiais de RH (e-mails, entrevistas, apresentações) em inglês integrando dimensões linguísticas e interculturais, Produzir uma comunicação de RH coerente, clara e credível, adaptada a interlocutores multiculturais e contextos organizacionais variados

## Program Stats

#### Courses

1151

#### Hours

738

#### Objectives

186

#### Topics

43

## Rankings

### Rankings nacionais de escolas de engenharia na França (2024-2026)

- Rank: 1 - Specialty: Especialidade em Informática - Observation: L'Usine Nouvelle 2026 - empate - Url: https://www.esiea.fr/lesiea-classee-n1-ex-aequo-des-ecoles-dingenieurs-en-informatique-en-2026/
- Rank: 3 - Specialty: Escolas especializadas em Informática - Observation: L'Usine Nouvelle 2025 - Url: https://www.esiea.fr/lesiea-parmi-les-meilleures-ecoles-dingenieurs-en-informatique-en-2025/
- Rank: 4 - Specialty: IA & Ciência de Dados - Observation: Eduniversal 2026 - Url: https://meilleurs-bachelors.fr/classement-ecoles-d-ingenieurs-et-ecoles-specialisees-en-informatique-et-numerique-post-bac.html
- Rank: 5 - Specialty: Top 20 Informática Pós-Bac - Observation: L'Étudiant 2024 - Url: https://www.letudiant.fr/etudes/ecole-ingenieur/classement-des-ecoles-dingenieurs-le-top-10-des-ecoles-dinformatique.html
- Rank: 6 - Specialty: Engenharia Informática - Observation: Le Figaro Étudiant 2024 - Url: https://www.esiea.fr/les-classements-de-2024-sont-tombes/
- Rank: 10 - Specialty: Ranking Geral Pós-Bac - Observation: L'Étudiant 2025 - Url: https://objectif-ast.fr/classement-letudiant-ecoles-ingenieurs/
- Rank: 11 - Specialty: Escolas de Engenharia Pós-Bac - Observation: L'Étudiant 2026 - empate - Url: https://objectif-ast.fr/classement-etudiant-2026-meilleures-ecoles-ingenieurs/
- Rank: 13 - Specialty: Engenharia Generalista Pós-Bac - Observation: Eduniversal 2026 - Url: https://meilleurs-bachelors.fr/classement-ecoles-d-ingenieurs-generalistes-post-bac.html

## Pedagogy Objectives

- **Coletar e analisar as necessidades** do cliente, adotar uma **abordagem consultiva** oferecendo soluções de software adaptadas
- Atender as expectativas dos negócios **entregando o valor esperado**, com a qualidade adequada, **controlando custos e prazos**
- **Prototipar, projetar, desenvolver, entregar e manter** soluções de software **multiplataforma**
- Usar **inteligência artificial** e **processamento massivo de dados** no desenvolvimento de aplicações empresariais
- Dominar as **linguagens de programação essenciais** e os **ambientes de desenvolvimento** correspondentes
- **Proteger aplicações web** aplicando as recomendações OWASP e as melhores práticas de cibersegurança
- Validar a **qualidade do software** por meio de estratégias de testes automatizados, testes de desempenho e integração contínua

**Pedagogy Vision:** Abordagem de aprendizado baseada em projetos combinando conhecimento teórico aprofundado com aplicações reais em empresas. Os alunos trabalham em **projetos de nível profissional** ao longo do currículo, cobrindo todo o ciclo de desenvolvimento de software: do design arquitetural ao deploy em produção, incluindo desenvolvimento, testes e segurança. O programa é projetado para formar **especialistas capazes de projetar, desenvolver, testar, proteger e gerenciar projetos de software complexos**.

**Presentation:** A ESIEA é uma **escola de engenharia** francesa fundada em 1958, credenciada pela Comissão de Títulos de Engenheiro (CTI). A escola **forma engenheiros digitais capazes de enfrentar os desafios tecnológicos atuais e futuros**. O título '**Especialista em Engenharia de Software**' é uma certificação RNCP Nível 7 (equivalente a Mestrado) certificada pela ESIEA. Este programa cobre todas as competências necessárias para **projetar, desenvolver, testar, proteger e gerenciar projetos de software complexos** em um ambiente profissional exigente.

## Related achievements

- [magicplaylist-android-music-discovery](https://portfolio.josedacosta.info/pt/realizacoes/magicplaylist-android-music-discovery.md)
- [plateforme-gestion-projets-collaboratif](https://portfolio.josedacosta.info/pt/realizacoes/plateforme-gestion-projets-collaboratif.md)
- [gamesup-plateforme-ecommerce-ml](https://portfolio.josedacosta.info/pt/realizacoes/gamesup-plateforme-ecommerce-ml.md)

Full interactive version with timeline navigation: https://portfolio.josedacosta.info/pt/trajetoria/mestrado-em-engenharia-de-software
