📘 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