Pular para conteúdo

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?

Ir para Aula 01 Configurar Ambiente Plano de Ensino