Sobre o Curso
🎓 Hardware para Programadores - A Ponte Entre Silício e Software
Este curso foi idealizado para preencher a lacuna entre código abstrato e os processadores que o executam. Durante 16 aulas focadas, especialmente ricas em exemplos C/C++, você aprenderá a dominar performance, concorrência, otimização de Cache e uso eficiente de Memória.
🎯 Objetivos do Curso
-
Performance e Arquitetura
Compreender a diferença prática das arquiteturas RISC e CISC, pipeline, ciclo de instrução e como isso impacta seu código compilado.
-
Uso Avançado de Memória
Dominar a dinâmica entre Stack e Heap, evitar vazamentos (Memory Leaks), dominar ponteiros e entender como o SO gerencia a memória virtual.
-
Concorrência e Paralelismo
Aprender a operar múltiplos cores com Threads e Processos, tratando condições de corrida com Mutex, Semáforos e conhecendo o Memory Consistency Model.
-
I/O e Armazenamento
Lidar com a latência de discos (SSD vs HDD vs NVMe), interrupções, system calls e as características críticas da persistência em Bancos de Dados / Backend.
📚 O Que Você Vai Aprender
MÓDULO 1 – Fundamentos de Arquitetura de Computadores
- Como o Software Roda no Hardware.
- Representação de Dados (Binário, Hex, IEEE 754).
- Estrutura e Ciclo de CPU (Control Unit e ALU).
- RISC vs CISC (ARM vs x86).
MÓDULO 2 – Memória e Performance
- Hierarquia de Memória.
- Cache, Localidade (Temporal e Espacial) e False Sharing.
- Stack vs Heap e Alocações em C/C++.
- Memória Virtual, TLB e Paginação.
MÓDULO 3 – Concorrência e Paralelismo
- Diferenças entre Processos e Threads.
- Mutex, Semáforos e Prevenção de Deadlocks.
- Paralelismo no Hardware (Hyper-threading e GPUs).
- Modelo de Memória e Barrier de Instruções.
MÓDULO 4 – Armazenamento e I/O
- Latência em Dispositivos de Armazenamento.
- Sistemas de Arquivos e Journaling.
- I/O, Interrupts e DMA.
MÓDULO 5 – Integração Prática
- Projeto Final: Profiling e Análise de Gargalos.
🛠️ Metodologia
-
Aulas Didáticas
Teoria fundamentada, mesclada com animações e slides construídos com Reveal.js.
-
Exercícios Progressivos
Listas que abordam problemas teóricos e implementações obrigatórias em C/C++.
-
Projetos Práticos
Aplicações diretas para solidificar os desafios e observar melhorias tangíveis no tempo de execução.
-
Quizzes Interativos
Avaliações modulares formatadas com feedback instantâneo para mensurar a retenção do saber.
👨🎓 Para Quem é Este Curso
- Desenvolvedores Intermediários a Avançados querendo melhorar a eficiência do seu código em linguagens de baixo nível ou alto nível.
- Engenheiros Backend / Software.
- Entusiastas de C e C++ e programadores que almejam desenvolver embarcados, games e sistemas críticos.
📋 Pré-requisitos
- Experiência prévia em programação (variáveis, loops, condicionais, funções).
- É recomendável (embora não obrigatório) ter lido ou estudado C/C++.
- Um sistema ou máquina virtual Linux (Ubuntu/Debian) configurada para compiladores e debugging.
🎖️ O Que Você Receberá
- ✅ Domínio do funcionamento da CPU e memória (Cache Hit, Profiling).
- ✅ Escrita de scripts eficientes e multi-processamento em sintonia fina com hardware.
- ✅ Autonomia em diagnósticos de performance.
🚀 Comece Agora
Pronto para entender o silício?