raphaelkaique1/study

GitHub: raphaelkaique1/study

Stars: 1 | Forks: 0

# ROADMAP - **[LINGUAGENS NATURAIS](https://github.com/raphaelkaique1/study/blob/main/natural_languages)** - **[CIÊNCIA DA COMPUTAÇÃO](https://github.com/Universidade-Livre)** - **[TRILHA DE APRENDIZADO](https://roadmap.sh/roadmaps)** - **[DEV-T](https://github.com/raphaelkaique1/study/blob/main/full-stack.md)** - **[LINGUAGENS DE PROGRAMAÇÃO](https://quickref.me/)** ## COMPUTER SCIENCE: FULL STACK CYCLE ## 1. Fundamentos de Computação ### 1.1 Hardware e Software * **Arquitetura de Computadores** - 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. * **Redes de Computadores** - 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. ### 1.2 Conceitos Básicos * **Lógica de Programação** - 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. * **Estruturas de Dados** - 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. * **Algoritmos** - Desenvolvimento e análise de algoritmos. - Otimização de algoritmos. - Algoritmos de busca, classificação, ordenação e recursividade. - Análise de complexidade. ## 2. Linguagens de Programação ### 2.1 C++ * **Sintaxe e Semântica** - 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. ### 2.2 JavaScript * **Sintaxe e Funcionalidades ECMAScript+** - Características do ECMAScript. - Arrow functions, destructuring, let/const, etc. * **Manipulação DOM** - 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. * **AJAX** - Utilização de XMLHttpRequest e Fetch API para comunicação assíncrona com servidores. - Tratamento de dados JSON. * **Server-side Rendering (SSR)** - Implementação de renderização no servidor em aplicações web. - Vantagens e desvantagens do SSR. * **Progressive Web Apps (PWAs)** - 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. ### 2.3 Python * **Sintaxe e PEP 8** - 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. * **Python (Tkinter, PyQt)** - 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. ## 3. Bancos de Dados ### 3.1 SQL * **Modelagem de Dados** - Conceitos de modelagem de dados. - Estruturação de dados relacionalmente. - Modelagem de entidades e relacionamentos. - Normalização e desnormalização de esquemas. * **Consultas Complexas** - 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. * **MySQL, PostgreSQL, SQLite** - 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. ### 3.2 NoSQL * **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. * **MongoDB, Redis, Neo4j** - 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. ## 4. DevOps ### 4.1 Ferramentas de Desenvolvimento * **Continuous Integration e Continuous Deployment (CI/CD)** - Implementação de pipelines de CI/CD. - Integração entre desenvolvimento e operações. - Práticas de Continuous Integration e Continuous Deployment (CI/CD). - Ferramentas populares como Jenkins, GitHub Actions, GitLab CI/CD. - Automação no desenvolvimento e entrega de software. - Automação de testes, construção e deploy contínuo. * **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. * **Docker e Containers** - 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. ### 4.2 Cloud Computing * **AWS, Google Cloud, Azure** - Conhecimento e utilização de serviços oferecidos por plataformas de nuvem. - Configuração e escalabilidade em ambientes de nuvem. ### 4.3 Ferramentas de Monitoramento * **Prometheus, Grafana** - Configuração e utilização do Prometheus para monitoramento. - Visualização de métricas e dados com Grafana. ## 5. Desenvolvimento Web ### 5.1 Fundamentos da Web * **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. ### 5.2 Frontend * **HTML5, CSS3, SASS/LESS** - 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. * **Frameworks JavaScript** - Desenvolvimento de componentes reutilizáveis. - Estado e gerenciamento de dados. - Integração com APIs. * **TypeScript** - Uso de tipos em JavaScript. - Tipagem estática e funcionalidades adicionadas ao JavaScript. - Migração de projetos JavaScript para TypeScript. ### 5.3 Backend * **Servidores Web (Node, Express)** - Configuração e criação de servidores com Node.js e Express. - Roteamento e middleware. * **Administração de Servidores Linux** - Configuração e administração avançada de servidores Linux. - Implementação de serviços e segurança. * **RESTful APIs / Fetch API / Consumo e Criação de APIs** - Princípios RESTful. - Consumo de APIs utilizando a Fetch API. - Desenvolvimento de APIs RESTful. * **Banco de Dados (SQL e NoSQL)** - Modelagem de dados relacional (SQL). - Operações CRUD em bancos de dados relacionais. - Utilização de bancos de dados NoSQL. * **Configuração de Redes Avançadas** - Projeto e implementação de redes complexas. - Configuração de roteadores, switches e firewalls. ### 5.4 Segurança, Autenticação e Autorização * **Práticas de Segurança em Desenvolvimento Web** - Identificação e prevenção de vulnerabilidades comuns. - Configuração segura de servidores web. * **Segurança de Rede** - Estratégias para proteção contra ameaças em redes. - Monitoramento e detecção de atividades suspeitas. * **Criptografia** - Conceitos de criptografia. - Implementação de criptografia em comunicações. * **OAuth2:** - Entendimento do protocolo OAuth2. - Implementação de autenticação e autorização baseadas em OAuth2. * **JWT (JSON Web Tokens)** - Compreensão do formato e funcionamento dos JSON Web Tokens. - Utilização de JWT para autenticação. * **OWASP Top 10** - Compreensão das principais ameaças de segurança. - Estratégias para mitigação. ## 6. Desenvolvimento Desktop ### 6.1 Introdução ao Desenvolvimento de Software para Desktop * **Conceitos e Fundamentos** - 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. * **C# (Windows Forms, WPF)** - Windows Forms: Desenvolvimento de interfaces com Windows Forms. - WPF (Windows Presentation Foundation): Utilização de recursos avançados para criação de interfaces. ### 6.2 Linguagens de Programação para Desktop * **C** - Conhecer a sintaxe e semântica da linguagem - Uso e configuração de framework * **Java (JavaFX, Swing)** - 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. ### 6.3 SDK (Software Development Kit) e Ferramentas * **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. ### 6.4 Interface Gráfica do Usuário (GUI) * **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. * **Interação com o Usuário** - Compreensão da interação homem-máquina. - Elementos de interface como botões, campos de texto, etc. * **Usabilidade** - Estratégias para melhorar a usabilidade das aplicações desktop. - Testes de usabilidade. ### 6.5 Conectividade e Comunicação * **Integração de APIs para Desktop** - Consumo de APIs em aplicações desktop. - Desenvolvimento de APIs para integração com outras aplicações. * **Comunicação em Rede** - 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. ### 6.6 Segurança em Aplicações Desktop * **Práticas de Segurança** - Implementação de boas práticas de segurança no código. - Prevenção de vulnerabilidades comuns. * **Criptografia** - 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. ### 6.7 Testes e Depuração * **Estratégias de Teste para Aplicações Desktop** - Desenvolvimento e execução de testes unitários e de integração. - Testes de usabilidade. * **Ferramentas de Depuração** - Utilização de ferramentas de depuração para identificar e corrigir erros. ### 6.8 Desenvolvimento Multiplataforma * **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. ## 7. Desenvolvimento IoT ### 7.1 Desenvolvimento para IoT (Internet of Things) * **Conceitos Básicos de IoT** - Definição e características da Internet das Coisas. - Exemplos práticos de aplicações IoT. * **Sensores e Atuadores** - 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. ## 8. Desenvolvimento Avançado ### 8.1 Arquitetura de Solução * **Conceitos de Arquitetura** - 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)** - Uso de padrões de projeto para reutilização de código e escalabilidade. - Escolha adequada de padrões para cenários específicos. - Aplicação de padrões de design para resolver problemas recorrentes. - Exemplos de Design Patterns comuns: Singleton, Factory, Observer, Strategy. - Implementação de padrões como Singleton, Observer, Factory, etc. - Utilização de design patterns como ferramenta para estruturar o código. - Implementação prática dos padrões em linguagens modernas. ### 8.2 Arquitetura de Software * **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, TDD (Jasmine, Mocha, Jest, Test-Driven Development) e Behavior-Driven Development (BDD)** - Princípios do desenvolvimento orientado a testes. - Implementação de testes automatizados. - Adoção de Test-Driven Development (TDD) como prática de desenvolvimento. - Benefícios do TDD e BDD na qualidade do código. - Ferramentas populares para testes automatizados. - Uso de frameworks de teste como Jasmine, Mocha, Jest. - Implementação prática com frameworks como Jest, Mocha e PyTest. ### 8.3 Future of Web * **web3, Blockchain, Tokenization, Smart Contracts & Metaverse** - Web3 Development - Funcionamento da Blockhain - Criação de Smart Contracts - Tokenização de ativos - Desenvolvimento no Metaverso (SandBox) ## 9. Boas Práticas ### 9.1 Clean Code * **Clean Code & more** - Boas práticas de desenvolvimento de código limpo. - Princípios do Clean Code (legibilidade, simplicidade e organização). - Nomes descritivos e significado semântico no código. - Estruturação adequada de funções e classes. - Evitando comentários desnecessários com código autoexplicativo (automentado). * **Princípios SOLID** - Single Responsibility Principle (SRP) – Princípio da Responsabilidade Única. - Open/Closed Principle (OCP) – Princípio Aberto/Fechado. - Liskov Substitution Principle (LSP) – Princípio da Substituição de Liskov. - Interface Segregation Principle (ISP) – Princípio da Segregação de Interface. - Dependency Inversion Principle (DIP) – Princípio da Inversão de Dependência. ### 9.2 Metodologias de Desenvolvimento * **Metodologias Ágeis (Agile, Scrum, Kanban)** - Princípios do Manifesto Ágil. - Scrum: papéis, eventos e artefatos. - Kanban: fluxo contínuo de desenvolvimento. - Benefícios e aplicação no ciclo de vida do software.
Copyright © 2026 Raphael Kaíque Dias Santos