-
- Estruturas condicionais e de repetição.
- Construção de algoritmos simples e complexos.
- Manipulação de variáveis, tipos e estruturas de dados.
- Resolução de problemas computacionais.
-
- Arrays, listas, filas, pilhas.
- Estruturas de dados dinâmicas (árvores, grafos).
- Algoritmos de ordenação e busca.
- Operações e manipulações em estruturas de dados.
-
- Desenvolvimento e análise de algoritmos.
- Otimização de algoritmos.
- Algoritmos de busca, classificação, ordenação e recursividade.
- Análise de complexidade.
-
- Componentes de hardware (CPU, memória, dispositivos de armazenamento).
- Organização de sistemas computacionais.
- Arquiteturas de processadores.
-
Sistemas Operacionais (Windows, Linux)
- Funcionamento e gerenciamento de sistemas operacionais e de recursos.
- Configuração e administração de ambientes Windows e Linux.
- Virtualização e máquinas virtuais.
-
Conhecimentos de Prompt de Comando/Terminal
- Uso básico e avançado do prompt de comando/terminal.
- Navegação e manipulação de arquivos.
- Automação de tarefas por linha de comando.
- Scripting em ambientes de linha de comando.
-
- Fundamentos de redes (TCP/IP, DNS, DHCP).
- Tipos de redes (LAN, WAN, MAN).
- Protocolos de comunicação.
- Configuração e administração de redes locais.
- Segurança em redes.
-
- Detalhes da sintaxe e semântica da linguagem.
- Manipulação de variáveis, tipos de dados, operadores, estruturas de controle.
-
Estruturas de Dados e Algoritmos
- Implementação de estruturas de dados (listas, árvores, grafos).
- Algoritmos de ordenação e busca.
-
Programação Orientada a Objetos (OOP)
- Conceitos de OOP (encapsulamento, classes, herança, polimorfismo).
-
Programação Concorrente e Paralela
- Desenvolvimento de aplicações que exploram concorrência e paralelismo.
- Uso de threads e bibliotecas para programação paralela.
-
Desenvolvimento de Sistemas Embarcados
- Concepção de software para sistemas com recursos limitados.
- Programação para microcontroladores e sistemas embarcados.
-
Otimização de Código e Desempenho
- Estratégias para otimização de código em C++.
- Utilização eficiente de recursos de hardware.
-
Sintaxe e Funcionalidades ECMAScript+
- Características do ECMAScript.
- Arrow functions, destructuring, let/const, etc.
-
- Manipulação de elementos HTML.
- Event handling e interação com o DOM.
-
Assincronismo (Promises, Async/Await)
- Uso de Promises para gerenciamento de operações assíncronas.
- Implementação de funções assíncronas com Async/Await.
-
- Utilização de XMLHttpRequest e Fetch API para comunicação assíncrona com servidores.
- Tratamento de dados JSON.
-
- Implementação de renderização no servidor em aplicações web.
- Vantagens e desvantagens do SSR.
-
- Desenvolvimento de aplicações web progressivas.
- Uso de tecnologias para melhorar a experiência do usuário offline.
-
Desenvolvimento de Extensões do Navegador
- Criação de extensões para navegadores.
- Integração com APIs específicas do navegador.
-
- Conformidade com as diretrizes do PEP 8.
- Práticas recomendadas para a escrita de código.
-
Manipulação de Arquivos e Strings
- Leitura e escrita de arquivos em Python.
- Operações, formatação e manipulação avançada de strings.
-
Programação Funcional em Python
- Utilização de funções de ordem superior.
- Conceitos de programação funcional.
-
- Tkinter: Construção de interfaces gráficas usando a biblioteca padrão Tkinter.
- PyQt: Desenvolvimento de aplicações desktop com a biblioteca PyQt.
-
Ciência de Dados e Machine Learning
- Utilização de bibliotecas como NumPy, Pandas, e scikit-learn.
- Desenvolvimento de modelos de machine learning com Python.
-
Desenvolvimento Web com Django e Flask
- Construção de aplicações web utilizando Django ou Flask.
- Integração de banco de dados, templates e rotas.
-
Automação de Tarefas com Python
- Desenvolvimento de scripts para automação de tarefas.
- Utilização de bibliotecas específicas para automação.
-
- Conceitos de modelagem de dados.
- Estruturação de dados relacionalmente.
- Modelagem de entidades e relacionamentos.
- Normalização e desnormalização de esquemas.
-
- Consultas avançadas com joins, subconsultas e agregações.
- Otimização de consultas.
-
Normalização e Desnormalização
- Benefícios e desvantagens de normalizar e desnormalizar.
- Estratégias de desnormalização quando necessário.
-
- Características e diferenças entre sistemas de gerenciamento de banco de dados.
- Configuração e administração básica.
- Utilização de recursos específicos de cada banco.
-
Conceitos Básicos (Document, Key-Value, Graph)
- Características e modelos de dados para bancos NoSQL.
- Utilização de cada tipo em cenários específicos.
- Comparação e compreensão entre os diferentes tipos de bancos de dados NoSQL.
-
- Utilização e configuração de bancos NoSQL específicos.
- Características e aplicação prática de bancos de dados NoSQL específicos.
- Modelagem de dados em bancos NoSQL.
-
Controle de Versão (Git/GitHub)
- Versionamento de código com Git para controle de versão.
- Uso do GitHub (fork e etc).
- Estratégias de branching.
-
Ambientes Virtuais (venv, virtualenv)
- Criação e gestão de ambientes virtuais.
- Isolamento de dependências.
-
- Virtualização de aplicações com Docker.
- Criação e configuração de containers.
- Utilização avançada de Docker para criação de ambientes isolados.
- Orquestração de múltiplos containers com Docker Compose.
-
Continuous Integration e Continuous Deployment (CI/CD)
- Implementação de pipelines de CI/CD.
- Automação de testes, construção e deploy contínuo.
- AWS, Google Cloud, Azure
- Conhecimento e utilização de serviços oferecidos por plataformas de nuvem.
- Configuração e escalabilidade em ambientes de nuvem.
- Prometheus, Grafana
- Configuração e utilização do Prometheus para monitoramento.
- Visualização de métricas e dados com Grafana.
- Protocolos HTTP/HTTPS
- Funcionamento do protocolo HTTP/HTTPS.
- Códigos de status e métodos de requisição.
- Métodos HTTP (GET, POST, etc.).
- Segurança em comunicações web.
- Configuração e obtenção de certificados SSL/TLS.
-
- Estruturação semântica com HTML5.
- Estilização avançada com CSS3.
- Pré-processadores CSS (SASS, LESS).
-
Frameworks CSS (Bootstrap, Tailwind)
- Utilização de frameworks para desenvolvimento ágil e design responsivo.
- Personalização e extensão de frameworks.
-
- Desenvolvimento de componentes reutilizáveis.
- Estado e gerenciamento de dados.
- Integração com APIs.
-
- Uso de tipos em JavaScript.
- Tipagem estática e funcionalidades adicionadas ao JavaScript.
- Migração de projetos JavaScript para TypeScript.
-
Servidores Web (Node, Express)
- Configuração e criação de servidores com Node.js e Express.
- Roteamento e middleware.
-
RESTful APIs / Fetch API / Consumo e Criação de APIs
- Princípios RESTful.
- Consumo de APIs utilizando a Fetch API.
- Desenvolvimento de APIs RESTful.
-
Administração de Servidores Linux
- Configuração e administração avançada de servidores Linux.
- Implementação de serviços e segurança.
-
Configuração de Redes Avançadas
- Projeto e implementação de redes complexas.
- Configuração de roteadores, switches e firewalls.
-
- Modelagem de dados relacional (SQL).
- Operações CRUD em bancos de dados relacionais.
- Utilização de bancos de dados NoSQL.
-
Práticas de Segurança em Desenvolvimento Web
- Identificação e prevenção de vulnerabilidades comuns.
- Configuração segura de servidores web.
-
- Estratégias para proteção contra ameaças em redes.
- Monitoramento e detecção de atividades suspeitas.
-
- Conceitos de criptografia.
- Implementação de criptografia em comunicações.
-
- Compreensão das principais ameaças de segurança.
- Estratégias para mitigação.
-
- Compreensão do formato e funcionamento dos JSON Web Tokens.
- Utilização de JWT para autenticação.
-
- Entendimento do protocolo OAuth2.
- Implementação de autenticação e autorização baseadas em OAuth2.
-
- Definição de software para desktop e suas características principais.
- Compreensão do ciclo de vida de desenvolvimento de software para desktop.
- Diferenças entre aplicações desktop e aplicações web.
-
- Windows Forms: Desenvolvimento de interfaces com Windows Forms.
- WPF (Windows Presentation Foundation): Utilização de recursos avançados para criação de interfaces.
-
- Conhecer a sintaxe e semântica da linguagem
- Uso e configuração de framework
-
- JavaFX: Desenvolvimento de interfaces modernas e responsivas.
- Swing: Criação de interfaces gráficas tradicionais em Java.
-
Electron (para desenvolvimento multiplataforma)
- Utilização do Electron para criar aplicações desktop multiplataforma usando tecnologias web.
-
Utilização de SDKs Específicos para Desenvolvimento Desktop (gcc, make, cmake)
- Estudo de SDKs específicos para o desenvolvimento embarcado.
- Exploração de SDKs para plataformas específicas.
- Configuração e uso de ferramentas de desenvolvimento.
-
Ferramentas de Desenvolvimento Integradas (IDEs) para Desktop
- Escolha e configuração de IDEs adequadas para o desenvolvimento desktop.
-
Integração Avançada com Sistemas Operacionais
- Exploração de recursos avançados oferecidos pelos sistemas operacionais.
- Configuração e ajustes específicos para cada plataforma.
-
Design de Interfaces para Desktop (UI/UX)
- Princípios de design de interface e experiência do usuário.
- Guidelines específicas para cada plataforma.
-
- Compreensão da interação homem-máquina.
- Elementos de interface como botões, campos de texto, etc.
-
- Estratégias para melhorar a usabilidade das aplicações desktop.
- Testes de usabilidade.
-
Integração de APIs para Desktop
- Consumo de APIs em aplicações desktop.
- Desenvolvimento de APIs para integração com outras aplicações.
-
- Protocolos de comunicação em redes locais e remotas.
- Configuração e utilização de sockets.
-
WebSocket e Outras Tecnologias
- Implementação e utilização de WebSocket para comunicação em tempo real.
- Exploração de outras tecnologias de comunicação avançada.
-
- Implementação de boas práticas de segurança no código.
- Prevenção de vulnerabilidades comuns.
-
- Utilização de técnicas de criptografia para proteger dados sensíveis.
- Algoritmos de criptografia aplicados a aplicações desktop.
-
Autenticação e Autorização em Aplicações Desktop
- Estratégias de autenticação segura.
- Controle de acesso e autorização.
-
Estratégias de Teste para Aplicações Desktop
- Desenvolvimento e execução de testes unitários e de integração.
- Testes de usabilidade.
-
- Utilização de ferramentas de depuração para identificar e corrigir erros.
-
Abordagens para Desenvolvimento Multiplataforma
- Estratégias para garantir a compatibilidade em diferentes sistemas operacionais.
- Considerações sobre design responsivo.
-
Considerações sobre Compatibilidade
- Adaptação de interfaces e funcionalidades para diferentes plataformas.
-
- Definição e características da Internet das Coisas.
- Exemplos práticos de aplicações IoT.
-
- Tipos de sensores e atuadores utilizados em aplicações IoT.
- Configuração e leitura de dados.
-
Comunicação com Dispositivos IoT
- Protocolos de comunicação com dispositivos IoT.
- Integração de sensores e atuadores.
-
Protocolos de Comunicação IoT (MQTT, CoAP)
- Utilização de protocolos específicos para comunicação em dispositivos IoT.
-
Desenvolvimento de Aplicações para IoT
- Desenvolvimento de software para controle e monitoramento de dispositivos IoT.
-
Plataformas IoT (Arduino, Raspberry Pi)
- Desenvolvimento de projetos práticos utilizando Arduino e Raspberry Pi.
- Integração com plataformas populares.
-
- Escolha adequada da arquitetura de acordo com requisitos do projeto.
- Entendimento e aplicação de arquiteturas como Model-View-Controller (MVC), Model-View-View-Model (MVVM), entre outras.
-
Padrões de Projeto (Design Patterns)
- Implementação de padrões como Singleton, Observer, Factory, etc.
- Escolha adequada de padrões para cenários específicos.
- Aplicação de padrões de design para resolver problemas recorrentes.
- Utilização de design patterns como ferramenta para estruturar o código.
-
Escalabilidade e Desempenho, Estratégias de Otimização, Caching
- Estratégias para escalabilidade e otimização de desempenho.
- Implementação de cache para melhoria de performance.
-
Testes Automatizados e TDD (Jasmine, Mocha, Jest, Test-Driven Development)
- Implementação de testes automatizados.
- Adoção de Test-Driven Development (TDD) como prática de desenvolvimento.
- Uso de frameworks de teste como Jasmine, Mocha, Jest.
- web3, Blockchain, Tokenization, Smart Contracts & Metaverse
- Web3 Development
- Funcionamento da Blockhain
- Criação de Smart Contracts
- Tokenização de ativos
- Desenvolvimento no Metaverso (SandBox)