🎓 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 ExemploDepois

Soluções:

  1. VS Code + Java Extension Pack (mais simples para iniciantes)
  2. IntelliJ IDEA Community (mais robusto)
  3. 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-classpath

Alternativa: 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:

  1. Comece com o “código ruim” - deixe os alunos sentirem a confusão
  2. Pergunte primeiro: “O que vocês acham que este código faz?”
  3. Refatore passo a passo: não mude tudo de uma vez
  4. Teste cada mudança: compile e execute após cada refatoração

📊 Gestão de Timing:

SegmentoTempo RealBufferDica
Conceitos12-18 min15 minSe correr muito, foque só nos principais
Live coding25-35 min30 minPrepare versão “fast forward”
Exercícios25-35 min30 minCircule e dê dicas individuais
Review10-15 min15 minUse 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