Ensinar Ciência da Computação é difícil.
Projetos interessantes são complexos e demoram para serem desenvolvidos, projetos iniciantes geralmente são chatos.
Nesse contexto, o professor Joseph Bergin trabalhou no desenvolvimento de diversos padrões pedagógicos que podem ser utilizados para tornar o ensino de qualquer área da ciência da computação mais interessante tanto para o professor quanto para os alunos.
Segue abaixo resumo de 14 destes padrões:
14 Padrões Pedagógicos -Joseph Bergin
Este trabalho apresenta catorze padrões pedagógicos para o desenvolvimento de cursos na área da Ciência da Computação. Os padrões possuem vários níveis de aplicação, desde a organização geral de um curso até mesmo práticas em sala de aula.
Os padrões são apresentados em ordem de escala, iniciando pelos que envolvem o planejamento de cursos semestrais até atividades diárias em salas de aula.
1 Pássaro da Manhã / O Mais Importante Primeiro / (Early Bird)
O curso é organizado de modo que o mais importante deve ser apresentado primeiro (e frequentemente), e caso isto seja impossível, o quanto antes. Por exemplo, se funções for mais importante que estruturas if, ensine funções primeiro, se objetos são mais importantes que funções, ensine objetos primeiro.
Esta prática é importante porque os estudantes geralmente se lembram melhor do que viram primeiro e é importante que eles percebam desde o início a ideia principal do curso.
Alguns exemplos são:
- Ensinar objetos primeiro;
- Ensinar projeto primeiro;
- Ensinar concorrência primeiro em sistemas operacionais;
- Ensinar requisitos de usuário primeiro em Banco de Dados;
- Ensinar recursão antes de loops;
2 Espiral (Spiral)
Quando um conteúdo é trabalhado em sua ordem lógica, o instrutor precisa entrar em muitos detalhes, tornando o ensino desgastante para os estudantes.
Uma solução é trabalhar os conteúdos em fragmentos que permitam que o estudante resolva um determinado problema, posteriormente, mais fragmentos são trabalhados de modo a resolver outros problemas, e assim, sucessivamente, trabalhando o mesmo conteúdo mas em nível de detalhe crescente. Deste modo, desde cedo o estudante é empoderado a construir aplicações.
3 Metáfora Consistente (Consistent Mataphor)
Ao ensinar tópicos complexos, é importante utilizar metáforas cuja base seja conhecida pelos estudantes, de modo que ele tenham clareza sobre como o sistema deve se comportar e possam fazer conexões dos novos conceitos com conceitos que já são bem conhecidos por eles.
4 Caixa de Brinquedos (Toy Box)
O objetivo deste padrão é permitir que desde cedo os estudantes possam entrar em contato com o conhecimento da área do curso através de ferramentas pedagógicas ilustrativas, os brinquedos.
Estes brinquedos podem ser classes que abstraem parte da complexidade envolvida no desenvolvimento de um software de maior escala, ferramentas que tornam a programação mais acessível, ou qualquer outro tipo de artefato que permita que os estudantes desenvolvam projetos maiores e mais interessantes.
Um dos requisitos deste padrão é que os instrutores precisam preparar o material e ter tempo disponível para que os estudantes explorem os recursos disponibilizados.
5 Caixa de Ferramentas (Tool Box)
Desde o início do curso os estudantes desenvolvem ferramentas que lhes serão úteis em fases avançadas do curso, funcionando também como ensino de reuso de software.
Os exercícios do curso devem ter diversos níveis e nos níveis iniciais os estudantes são estimulados a discutir e desenvolver seus componentes. É importante também que o projeto de software para reuso seja discutido e apresentado o quanto antes pelo instrutor.
Estes componentes desenvolvidos pelos alunos podem ser complementados por bibliotecas fornecidas pelo instrutor. Um bom exemplo da aplicação deste padrão é o uso de elementos construídos em disciplinas de estruturas de dados.
6 Disposição da Terra (Lay of the Land)
Os estudantes devem examinar um artefato do domínio que estão estudando de maior complexidade, de modo a ver a imagem real de um produto na sua área de atuação.
Isto permite que eles façam conexões das diversas partes do sistema com os concteúdos que estão aprendendo, situando cada um deles no contexto de uma aplicação real. Exemplos podem ser:
- Um software com várias classes interagindo em Orientação a Objetos;
- Um modelo entidade relacionamento com diversos relacionamentos em um curso de bases de dados;
- O projeto completo de um software em um curso de projeto orientado a objetos.
É importante que o artefato seja algo semelhante ao que o instrutor deseja que o estudante desenvolva ao final do curso. É essencial também, que o artefato tenha um design e utilize os conceitos do curso de forma excelente.
Assim, as diversas partes do artefato a suas interações podem ser examinadas pelos estudantes e posteriormente utilizadas como exemplo de um determinado conceito do curso.
7 Corrigir para cima (Fixer Upper)
Neste padrão, um artefato de grande porte é oferecido aos alunos com falhas cuidadosamente preparadas. Este padrão permite o ensino de novos conceitos e da análise e correção de erros.
As falhas devem ser óbvias para a maioria dos leitores, contendo uma ou duas falhas de maior complexidade.
A origem do nome do padrão vem da expressão “Fixxer Upper” que representa uma casa vendida em condições ruins, de modo que o comprador precisará repará-la após a compra.
8 Maior que a Vida (Larger than Life)
Em cursos de literatura, sociologia e história por exemplo, é comum que os estudantes trabalhem com textos que eles não teriam condições de criar.
E como ler é mais fácil do que escrever, este padrão fala sobre usar artefatos de software de maior complexidade e bem escritos como exemplos a serem copiados.
Esta é uma forma de estimular o conhecimento sobre o desenvolvimento de softwares reais que os estudantes ainda não teriam condições de projetar e desenvolver.
Um exemplo são bibliotecas padrão das linguagens de programação atuais.
9 Sprint de Projeto dos Estudantes (Student Design Sprint)
Ensinar a projetar softwares é hoje reconhecido como necessidade por muitos instrutores. Este padrão sugere o uso de atividades que permitam que os estudantes projetem soluções para problemas, recebam feedback, projetem novamente, recebam novo feedback, e assim sucessivamente.
Um exemplo de atividade é separar os alunos em grupos de dois ou três e solicitar o projeto para um determinado problema. Ao final, são levantadas questões que não podem ser respondidas com um design inadequado e os estudantes são organizados em grupos de 4 ou 5 de modo que cada grupo tem pelo menos duas propostas de projeto. Eles são desafiados a criarem uma nova proposta, ao final, mais questões podem ser levantadas e alguns projetos discutidos. O processo pode continuar enquanto o professor desejar.
10 Engano (Mistake)
Os estudantes são estimulados a criarem artefatos com erros propositais, de modo a ensiná-los como reconhecer erros e suas consequências.
Todos cometemos erros, profissionais experientes geralmente conseguem reconhecer um erro quando visualizam as consequências de um, estudantes não sabem reconhecer estes erros.
11 Canal de Teste (Test Tube)
Também conhecido como “teste e veja”, este padrão força que os estudantes testem suas próprias perguntas para questões do tipo “O que aconteceria se eu..”. Desde que exista acesso a um computador, eles podem testar suas hipóteses.
É importante que o instrutor forneça listas de exercícios levando em conta as principais dúvidas apresentadas colocando em diversos pontos questões do tipo “O que aconteceria se você…”.
Isto pode ser usado para testar as regras de sintaxe de uma linguagem por exemplo e/ou o uso de operadores.
Um bom exemplo é o ensino de loops, onde a simples mudança de algumas variáveis podem gerar impressões na tela diferentes, de 1 até 10 ou mesmo um loop infinito.
12 Preencha as Lacunas (Fill in the Blanks)
É muito difícil e o tempo gasto seria muito alto para estudantes iniciantes desenvolverem softwares complexos, porém, o que eles podem fazer com as habilidades iniciais geralmente é muito chato.
A solução proposta é disponibilizar um software complexo que os estudantes possam analisar e deixar pequenas lacunas no software a serem implementadas pelos alunos com os conhecimentos que possuem. Um exemplo simples é uma definição de classe em Java onde o corpo de um método foi deixado em branco.
13 Estrela de Ouro (Gold Star)
Os estudantes devem ser recompensados pelo que eles fazem bem e jamais os deprecia por ainda não terem atingido as competências almejadas.
14 Avalie isto novamente Sam (Grade it again Sam)
Permita que trabalhos e atividades sejam enviados posteriormente para reavaliação. Isso estimula os estudantes a criarem erros e os motiva a melhorarem seus trabalhos para melhorar suas notas.
Referência:
BERGIN, Joseph. Fourteen Pedagogical Patterns. Pace University. Disponível em: <http://csis.pace.edu/~bergin/PedPat1.3.html>. Acesso em: 10 jun. 2012.