📘 Curso: Hardware para Programadores

Carga sugerida: 40–60h Público-alvo: Programadores iniciantes a avançados Objetivo: Capacitar desenvolvedores a compreender como o hardware influencia performance, paralelismo, uso de memória e eficiência de aplicações.


🔹 MÓDULO 1 – Fundamentos de Arquitetura de Computadores

Aula 1 – Como o Software Roda no Hardware

  • Do código-fonte ao binário
  • Compiladores e interpretadores
  • ISA (Instruction Set Architecture)
  • Conceitos clássicos de Computer Architecture: A Quantitative Approach

Aula 2 – Representação de Dados

  • Sistema binário, hexadecimal
  • Inteiros com e sem sinal
  • Ponto flutuante (IEEE 754)
  • Overflow e precisão numérica

Aula 3 – CPU: Estrutura e Funcionamento

  • Unidade de Controle
  • ALU
  • Registradores
  • Ciclo de instrução (fetch-decode-execute)

Aula 4 – Arquiteturas RISC vs CISC

  • Diferenças conceituais
  • Exemplos práticos
  • Introdução a ARM architecture
  • Introdução a x86

🔹 MÓDULO 2 – Memória e Performance

Aula 5 – Hierarquia de Memória

  • Registradores
  • Cache (L1, L2, L3)
  • RAM
  • Armazenamento secundário

Aula 6 – Cache e Localidade

  • Cache hit vs miss
  • Localidade temporal e espacial
  • Impacto em loops e estruturas de dados
  • Falsos compartilhamentos

Aula 7 – Stack vs Heap

  • Alocação de memória
  • Ponteiros e referências
  • Garbage Collection
  • Vazamentos de memória

Aula 8 – Memória Virtual

  • Paginação
  • TLB
  • Page fault
  • Swap

🔹 MÓDULO 3 – Concorrência e Paralelismo

Aula 9 – Processos e Threads

  • Conceitos de paralelismo
  • Multithreading
  • Context switch
  • Overhead de sincronização

Aula 10 – Sincronização

  • Mutex
  • Semáforos
  • Deadlock
  • Condições de corrida

Aula 11 – Paralelismo em Hardware

  • Multi-core
  • Hyper-threading
  • Noções de NVIDIA GPUs
  • Computação paralela

Aula 12 – Modelo de Memória

  • Consistência de memória
  • Reordenação de instruções
  • Memory barriers
  • Impacto em linguagens modernas

🔹 MÓDULO 4 – Armazenamento e I/O

Aula 13 – Dispositivos de Armazenamento

  • HDD vs SSD vs NVMe
  • Latência e IOPS
  • Impacto no backend e banco de dados

Aula 14 – Sistemas de Arquivos

  • Estrutura de arquivos
  • Journaling
  • Buffers e cache de disco

Aula 15 – Entrada e Saída (I/O)

  • Interrupções
  • DMA
  • System calls
  • Comunicação com periféricos

🔹 MÓDULO 5 – Integração Prática

Aula 16 – Projeto Final: Otimização Baseada em Hardware

  • Análise de gargalos
  • Profiling
  • Otimização de uso de memória
  • Testes comparativos de performance
  • Relatório técnico

🎯 Competências Desenvolvidas

Ao final do curso, o aluno será capaz de:

  • Entender como instruções são executadas fisicamente
  • Escrever código mais eficiente em CPU e memória
  • Compreender gargalos reais de performance
  • Tomar decisões arquiteturais baseadas em hardware
  • Diagnosticar problemas de concorrência e paralelismo

  • Adaptar para ênfase em C/C++
  • Criar versão voltada para desenvolvedores backend
  • Criar versão focada em alto desempenho (HPC)
  • Montar plano de ensino formal com avaliação e bibliografia