Plano de Ensino: Hardware para Programadores (C/C++)
1. Identificação
- Curso: Hardware para Programadores
- Carga Horária Estimada: 40 a 60 horas
- Público-Alvo: Desenvolvedores de Software, Engenheiros Backend e Estudantes Intermediários
2. Ementa
A disciplina aborda a arquitetura de baixo nível da computação e seu viés no desenvolvimento de software de alta performance, especialmente em C/C++. Envolve representação de dados, fluxo de processamento e RISC/CISC, modelamento de Hierarquia de Memória (Heap, Stack, Memória Virtual), processamento Concorrente e Paralelo (Threads, Condition Variables e Mutex), e Armazenamentos (I/O, File System, Dispositivos).
3. Objetivos
Objetivo Geral
Transmitir de forma prática como a lógica de construção e execução de hardware afeta a camada de software.
Objetivos Específicos
- Diagnosticar e aplicar as melhores práticas de gerenciamento de memória em linguagens de baixo nível.
- Desenhar arquiteturas multithread eficientes.
- Mitigar bottlenecks e vazamentos de memória (Memory Leaks).
4. Conteúdo Programático
- Módulo 1: Fundamentos de Arquitetura de Computadores (Aulas 01 a 04)
- Módulo 2: Memória e Performance (Aulas 05 a 08)
- Módulo 3: Concorrência e Paralelismo (Aulas 09 a 12)
- Módulo 4: Armazenamento e I/O (Aulas 13 a 15)
- Módulo 5: Integração Prática e Profiling (Aula 16)
5. Metodologia
Abordagem pragmática. Os alunos executarão diagnósticos com ferramentas nativas do sistema Linux e da cadeia de compilação GNU (GCC e GDB). Leituras guiadas via portal MkDocs, seguidas por interações e quizzes, e projetos hands-on a cada etapa.
6. Avaliação
Aferição sistemática, considerando o percentual de acerto sobre os 16 quizzes previstos (10 questões de múltipla escolha cada), bem como submissão dos exercícios propostos com soluções em tempo de execução submetidas aos gabaritos.
7. Bibliografia Recomendada
- Patterson, D. A., & Hennessy, J. L. (2014). Computer Organization and Design: The Hardware/Software Interface.
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating System Concepts.
- Stroustrup, B. (2013). The C++ Programming Language.