An open API service indexing awesome lists of open source software.

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.

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