Fundamentos
TL;DR
Base teórica de ciência da computação, independente de linguagem ou stack: algoritmos, estruturas de dados, OO, banco de dados, redes e testes.
Esta estante reúne os fundamentos que sustentam qualquer prática de desenvolvimento — o conhecimento que sobrevive à troca de linguagem, framework ou paradigma. Aqui ficam as notas sobre algoritmos e suas análises de complexidade, estruturas de dados clássicas, princípios de orientação a objetos, modelagem e teoria de banco de dados, redes e protocolos que sustentam a comunicação entre sistemas, e práticas de testes automatizados. É o terreno comum que conecta todas as outras estantes técnicas.
Conteúdo
- Fundamentos — visão geral da área
- Algoritmos — galho: análise de complexidade (Big-O, recorrências, Teorema Mestre) e algoritmos clássicos (ordenação, busca, two pointers, divisão e conquista, DP, greedy, backtracking)
- Estruturas de Dados — galho: arrays, listas, hash, árvores, heaps, tries, grafos e especializadas, com comparação de implementação Java/TS/Python/Go
- Orientação a Objetos — galho: pilares (encapsulamento, abstração, herança, polimorfismo), interfaces, composição sobre herança, acoplamento/coesão, modelagem rica e como o modelo OO diverge entre linguagens
- SOLID — galho: os cinco princípios de design OO (SRP, OCP, LSP, ISP, DIP), DI/IoC e a leitura crítica
- Banco de Dados — galho: modelo relacional, SQL, normalização, transações (ACID), índices/EXPLAIN, performance, concorrência, distribuídos e NoSQL
- Redes e Protocolos — galho: modelo de camadas, TCP/UDP/DNS/TLS, HTTP (métodos, caching, CORS, HTTP/2-3), REST/GraphQL/gRPC, WebSocket/SSE, latência, load balancing/CDN e resiliência
- Testes — testes unitários, integração, TDD, mocks
- Complexidade de Software — galho: o que torna software difícil e como gerenciá-lo (essencial vs. acidental, abstração, as três dívidas, sistemas). Inclui O programa como teoria (Naur) e Abstrações que vazam (Spolsky)
- Dicionário de Fundamentos — glossário de termos fundamentais
Veja também
- Domínios — índice das estantes
- Arquitetura — aplicação dos fundamentos em design de sistemas
- Sendas — trilhas que cruzam fundamentos com outras áreas