segunda-feira, 15 de julho de 2013

POO parte 1 - Começando a Planejar uma Disciplina

Estou planejando uma disciplina de Programação Orientada a Objetos (POO). Quero compartilhar aqui no blog esse processo e fazer algumas discussões.

Para quem não é da área de computação, Orientação a Objetos é um paradigma de programação, uma forma de organizar as ideias e o código de um software. Basicamente ela organiza tudo em objetos para construir programas, como tijolos para construir casas. Existem vários outros paradigmas de programação: estruturada, lógica, funcional, etc.

Objetos simulam bloquinhos de montar programas

Esse é o paradigma das linguagens de programação mais utilizadas, acredito que desde o final da década de 80. A primeira linguagem orientada a objetos é do final da década de 70. Os principais conceitos são objetos, classes, herança, métodos, polimorfismo, associação, etc. Como eu posso então preparar um curso para ensinar meus queridos alunos tudo isso?

Ah, muito simples! O melhor jeito é o mais direto: primeiro eu vou definir o que é orientação a objetos para os alunos, depois, em cada aula, vou apresentando os conceitos mais básicos e depois os mais complexos. Vou começar com classe e objeto. Depois vou falar de atributos e procedimentos, aí os alunos vão entender direito o que é uma classe. Depois de herança, e então de associação, que são as relações entre classes, e para entender isso eles precisam saber o que é uma classe. Por fim vou falar dos diferentes tipos de polimorfismo, pois para compreender isso bem precisam conhecer as relações entre classes. Pronto!

O que eu acabei de fazer? Eu planejei uma disciplina considerando EXCLUSIVAMENTE o conteúdo. Além disso, considerei o conteúdo HIERARQUICAMENTE. Veja por aí cursos e livros de orientação a objetos. Compare a organização e o método de apresentação do conteúdo com o que eu acabei de apresentar. Minha hipótese é que a maioria deles usa exatamente esse método que, em minha concepção, é ruim.

Por que isso é ruim? Eu enfatizei as duas palavras que vão embasar meu argumento. Primeiro, o método não considera os muitos outros fatores que influenciam os processos de ensinar e aprender: o currículo (objetivos para os alunos, para a disciplina, competências e habilidades...), o aluno (idade, formação passada, acesso a recursos, intenções, interesses, tempo disponível, capacidades...), o contexto (instituição, infraestrutura, comunidade...) para listar alguns. Uma analogia simples é projetar um veículo sem considerar alguns fatores como atrito ou desgaste. Essa é uma falha muito grave.

Um pouco menos grave, em segundo lugar, o conteúdo é organizado hierarquicamente. Ou seja, se baseia exclusivamente em pré-requisitos supostos que os alunos precisam "saber" para aprender cada item. Existem várias outras formas de organizar o conteúdo, seja em linha, seja em rede, seja todo de uma vez em uma aula, etc. Para escolher bem a forma de organizar o conteúdo o professor deve ter em mente todos aqueles fatores citados acima. Nada pode ser definido assim sem ter um porquê.

Apesar dessas falhas graves, muita gente continua ensinando e "aprendendo" assim. Isso torna a eficiência dos cursos muito baixa. Você tem ideia de por que tudo continua igual? Por que você acha que as coisas não mudam?

Instituições de ensino, professores e alunos continuam quebrando a cara usando modelos de aula falhos e ultrapassados. (sem perceber?)
--

Como eu estou fazendo? O exemplo que quero dar ainda está imcompleto. Estou em uma fase com poucas informações, sei a quantidade de alunos, sei mais ou menos seu tempo livro, seus recursos, mas não muito mais do que isso. Por isso esse planejamento é ainda bem preliminar. Além disso, estou colocando os meus valores nos objetivos pedagógicos acima dos valores da instituição, exatamente por não conhecê-los bem.

De acordo com um artigo anterior daqui do blog, quando vamos planejar uma disciplina ou uma aula, devemos começar pelos objetivos pedagógicos. É sobre isso que vou falar no restante do texto.

Eu enxergo a orientação a objetos como um poderoso mecanismo de organização do pensamento, modelagem e soluções de problemas. Acredito ser por causa disso o sucesso de sua utilização na indústria de software. Além disso, valorizo mais a competência de entender e poder utilizar a orientação a objetos no dia-a-dia do que o conhecimento de tecnologias e linguagens de programação específicas. Outra característica importante para mim é que devemos ser independentes de tecnologias específicas, assim o aluno deveria ser introduzido a várias linguagens disponíveis e atuais.

Essas são considerações que eu faço, meus valores, minhas crenças com relação à disciplina. Esse é um dos fatores importantes na hora de definir os objetivos de um curso. Um outro fator são os valores e crenças com relação ao processo de ensinar.

Por exemplo, eu acredito que é muito mais importante para o aluno praticar com a mão na massa do que receber informações. Acredito que o aluno aprende muito mais se faz atividades relacionadas a assuntos que tem interesse. Por fim, acho que o professor deve ensinar o aluno a se virar sozinho e conseguir resolver problemas, se emancipar.

Dessa forma, eu consigo esboçar um objetivo pedagógico explícito para uma disciplina de POO: os alunos devem saber o que é orientação a objetos (OO), saber modelar situações e problemas usando OO, saber o suficiente das linguagens OO para explorar a Internet em busca de aprofundamento.

Com essa sentença eu não estou considerando muitas coisas, como a posição da disciplina no currículo, o curso de graduação, a situação da instituição, etc. Por isso ainda é um objetivo pedagógico bem genérico. Ao longo dos próximos artigos poderemos refiná-lo.

Você gostaria que eu considerasse algo específico? Alguma situação que enfrenta ou enfrentou? Como você faria o objetivo de uma disciplina de POO?

O próximo passo é a definição das avaliações e então das atividades. Que avaliações você tem em mente quando lê esse objetivo pedagógico? E que atividades, que aulas imagina realizar para alcançar esses objetivos?

Até o próximo artigo!

2 comentários:

  1. Danilo,

    Gostei bastante do texto e da ideia.

    Quando você diz "O próximo passo é a definição das avaliações e então das atividades.", eu complementaria: o próximo passo é definir "indicadores/critérios" que indiquem o atingimento do objetivo ou o desenvolvimento da competência em questão, tanto para o professor quanto para o próprio aluno. A partir daí, elaborar atividades que ajudem nesta avaliação diagnóstica e processual.

    Que acha? =)

    Abraços,
    Vinícius

    ResponderExcluir
    Respostas
    1. Sim, definir indicadores/critérios é um detalhamento do objetivo pedagógico. Quanto mais detalhado o objetivo pedagógico, mais fácil será a elaboração das avaliações que vão verificar se os alunos conseguem exprimir os indicadores/atender os critérios. Esse é o caminho!

      Muito bom!

      Excluir