🎓 Guia do Professor - Aula 01
🎯 Preparação da Aula
⏰ 30 min antes da aula:
- Testar códigos no
projeto-pratico/ - Verificar ambiente Java dos alunos
- Preparar backup dos exercícios impressos
- Abrir slides no VS Code com Marp
📋 Checklist de Material:
- Projetor funcionando com live coding
- Acesso ao código no repositório
- Exercícios prontos para distribuir
- Timer/stopwatch para cronometrar atividades
🚨 Troubleshooting Comum
❌ “Meu Java não compila!”
Problema mais comum: Classpath incorreto ou versão incompatível
# Verificação rápida
java -version # Deve ser 8+
javac -version # Deve estar presente
# Teste simples
javac ExemploDepois.java
java ExemploDepoisSoluções:
- VS Code + Java Extension Pack (mais simples para iniciantes)
- IntelliJ IDEA Community (mais robusto)
- Fallback: Compilação manual no terminal
❌ “Não consigo rodar os testes!”
Causa típica: JUnit não configurado
Solução rápida:
# Baixar JUnit 5
wget https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.9.2/junit-platform-console-standalone-1.9.2.jar
# Compilar e testar
javac -cp .:junit-platform-console-standalone-1.9.2.jar src/test/java/aula01/ExemploDepoisTest.java
java -cp .:junit-platform-console-standalone-1.9.2.jar org.junit.platform.console.ConsoleLauncher --scan-classpathAlternativa: Use IDE com JUnit integrado
❌ “Código funciona no meu PC mas não no dos alunos”
Problemas típicos:
- Encoding diferente (UTF-8 vs Latin-1)
- Quebras de linha Windows vs Linux
- Versões diferentes do Java
Prevenção:
// Use sempre UTF-8 explícito
System.setProperty("file.encoding", "UTF-8");
// Teste em ambiente "limpo" antes da aula💡 Dicas Pedagógicas
🎯 Condução do Live Coding:
- Comece com o “código ruim” - deixe os alunos sentirem a confusão
- Pergunte primeiro: “O que vocês acham que este código faz?”
- Refatore passo a passo: não mude tudo de uma vez
- Teste cada mudança: compile e execute após cada refatoração
📊 Gestão de Timing:
| Segmento | Tempo Real | Buffer | Dica |
|---|---|---|---|
| Conceitos | 12-18 min | 15 min | Se correr muito, foque só nos principais |
| Live coding | 25-35 min | 30 min | Prepare versão “fast forward” |
| Exercícios | 25-35 min | 30 min | Circule e dê dicas individuais |
| Review | 10-15 min | 15 min | Use timer visível para todos |
🤝 Engajamento da Turma:
Perguntas para fazer durante o live coding:
- “Alguém consegue adivinhar o que este método faz?”
- “Por que vocês acham que este código gerou bug em produção?”
- “Como vocês nomeariam esta variável?”
Sinais de que está perdendo a turma:
- 🔴 Muito silêncio nas perguntas
- 🔴 Pessoal mexendo no celular
- 🔴 Conversas paralelas aumentando
Soluções rápidas:
- ✅ Pare e pergunte: “Alguma dúvida até aqui?”
- ✅ Mude a abordagem: faça um exercício rápido
- ✅ Use humor: “Este código é tão confuso quanto minha explicação?”
🔧 Adaptações por Perfil de Turma
👶 Turma Iniciante (primeira experiência profissional):
- Mais tempo nos conceitos básicos (25 min)
- Exemplos mais simples: evite edge cases complexos
- Foco na prática: menos teoria, mais “mão na massa”
- Vocabulário: explique termos como “refatoração”, “legacy”
💼 Turma Experiente (já trabalha com Java):
- Acelere conceitos (10 min), foque nos exercícios
- Adicione complexidade: discuta performance, memory leaks
- Conecte com experiência deles: “Alguém já viu código assim na empresa?”
- Desafios extras: peça para otimizarem além do básico
🏫 Turma Mista:
- Forme duplas experiente + iniciante
- Exercícios em níveis: básico obrigatório, avançado opcional
- Use os experientes como “assistentes” circulando pela sala
🎭 Scripts para Situações Difíceis
”Professor, isso não faz sentido na vida real”
“Você tem razão, este é um exemplo didático. Na vida real vocês vão ver código muito pior que este. A pergunta é: quando vocês forem sêniors, que tipo de código vão deixar para quem vem depois?"
"Não estou conseguindo acompanhar”
“Normal! Este exercício é proposital mais desafiador. O importante é entender o princípio. Vou passar aqui [aproxime-se da pessoa] e te ajudo individualmente."
"Meu código é diferente mas funciona”
“Excelente! Programação não tem só uma resposta certa. Vamos comparar as abordagens - qual é mais fácil de entender? Qual é mais fácil de modificar depois?”
Sala muito agitada/dispersa:
“Pessoal, vou fazer um teste rápido prático. Quem conseguir refatorar este código em 3 minutos ganha [pequeno prêmio/dispensa 5 min mais cedo]. Cronômetro na tela!”
📊 Avaliação de Performance da Aula
✅ Indicadores de Sucesso:
- 80%+ dos alunos completaram o Exercício 1
- Pelo menos 3 alunos apresentaram voluntariamente
- Discussão ativa durante o review
- Perguntas relevantes sobre aplicação prática
⚠️ Sinais de Alerta:
- Muitas dúvidas sobre sintaxe básica Java (turma precisa nivelamento)
- Resistência aos “padrões” (discussão sobre autonomia vs padrões de equipe)
- Tempo estourado em mais de 15 min (revisar cronograma)
📈 Melhorias para Próxima Vez:
- O que funcionou bem?
- Onde perdeu tempo?
- Que dúvidas foram recorrentes?
- Como adaptar para próximas turmas?
🔗 Recursos de Backup
Se a tecnologia falhar:
- Exercícios impressos prontos
- Códigos escritos no quadro
- Discussão conceitual sem live coding
Se sobrar tempo:
- Exercício bônus: refatorar código de aluno
- Discussão: “piores códigos que vocês já viram”
- Preview da próxima aula (DRY principles)
Se faltar tempo:
- Gabarito por email
- Exercícios como tarefa de casa
- Review rápido dos pontos principais apenas