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