https://github.com/raphaelkaique1/study
Este repositório é uma coleção abrangente de materiais de estudo organizados em diversas áreas de ciência da computação e desenvolvimento de software.
https://github.com/raphaelkaique1/study
back-end cloud computer-science computer-technology computer-thinking data-science database desktop-application devsecops front-end full-stack iot-application logical-programming operating-system programming server software-architecture software-development software-engineering web-application
Last synced: 2 months ago
JSON representation
Este repositório é uma coleção abrangente de materiais de estudo organizados em diversas áreas de ciência da computação e desenvolvimento de software.
- Host: GitHub
- URL: https://github.com/raphaelkaique1/study
- Owner: raphaelkaique1
- License: other
- Created: 2024-09-22T12:36:28.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-03-26T20:31:01.000Z (3 months ago)
- Last Synced: 2025-03-26T21:32:54.396Z (3 months ago)
- Topics: back-end, cloud, computer-science, computer-technology, computer-thinking, data-science, database, desktop-application, devsecops, front-end, full-stack, iot-application, logical-programming, operating-system, programming, server, software-architecture, software-development, software-engineering, web-application
- Language: C++
- Homepage:
- Size: 809 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# ROADMAP
- **[ENGLISH](https://github.com/raphaelkaique1/study/blob/main/0-languages/english)**
- **[CIÊNCIA DA COMPUTAÇÃO](https://github.com/Universidade-Livre)**
- **[TRILHA DE APRENDIZADO](https://roadmap.sh/roadmaps)**
- **[STACKS](https://quickref.me/)**
- **[PROJECT PORTIFOLIO](https://github.com/raphaelkaique1/study/tree/main/coding)**## 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
* **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.* **Continuous Integration e Continuous Deployment (CI/CD)**
- Implementação de pipelines de CI/CD.
- Automação de testes, construção e deploy contínuo.### 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.* **OWASP Top 10**
- Compreensão das principais ameaças de segurança.
- Estratégias para mitigação.* **JWT (JSON Web Tokens)**
- Compreensão do formato e funcionamento dos JSON Web Tokens.
- Utilização de JWT para autenticação.* **OAuth2:**
- Entendimento do protocolo OAuth2.
- Implementação de autenticação e autorização baseadas em OAuth2.## 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)**
- 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.### 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 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.### 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)
---Copyright © 2025 Raphael Kaíque Dias Santos