Metodologia - LadyBug Coding School

Paradigmas

Justificativa

A literatura sobre ensino de programação abrange uma vasta discussão sobre a metodologia a ser adotada em um curso introdutório. Em relação ao paradigma de programação, as principais opções consideradas são os paradigmas imperativos estruturado e orientado a objetos. Após algumas experiências com ambas estas opções (ao longo de uma década), nossa escolha foi começar o curso com o paradigma imperativo. Porém apostamos numa abordagem que se desvia um pouco da abordagem clássica: ao invés de começar o curso escrevendo programas completos, começamos com o ensino de funções.

Sobre a opção pela abordagem imperativa e não orientada a objetos (OO), temos a dizer que a orientação a objetos requer um maior nível de abstração, além de exigir uma sintaxe mais extensa e elaborada. Além disso, o paradigma imperativo estruturado impõe ao programador iniciante o uso direto das estruturas e mecanismos da programação imperativa que são também base para a programação orientada a objetos. Nossa percepção a partir de experiências prévias com o ensino de programação nos levou a concluir que uma boa compreensão e domínio das estruturas e mecanismos da programação estruturada é essencial para que se possa construir, posteriormente, a abstração requerida pela programação OO.

Chegar a esta conclusão não foi um processo rápido, e nem temos a pretensão de ter atingido uma verdade absoluta. Em nosso caso específico, tivemos a oportunidade de avaliar alunos que fizeram seus cursos introdutórios segundo ambas essas abordagens, e com diferentes professores (além de nós mesmos). Pudemos constatar que os alunos que tiveram bom aproveitamento em cursos introdutórios no paradigma imperativo estruturado progrediam de forma suave quando se deparavam com desafios de programação mais avançados e até mesmo com programação orientada a objetos em cursos subsequentes. Por outro lado, percebemos alta incidência de alunos que, apesar de terem obtido bom aproveitamento em um curso introdutório na abordagem OO, tinham dificuldade de entender algoritmos ou programas simples, e principalmente, tinham dificuldade de desenvolver programas mais complexos mesmo no paradigma OO.O problema pode se agravar em decorrência de uma metodologia de ensino do tipo “caixa preta” (ou "programação lego") onde o aluno utiliza pacotes e classes já prontas, tendo pouca oportunidade de construir seu código a partir das primitivas da linguagem. Nossa hipótese é de que conceitos básicos não haviam sido bem assimilados por terem sido ofuscados pela abstração OO.

Claro que uma didática ruim, ou uma metodologia ruim, podem derrubar qualquer curso (enquanto que uma metodologia e didática excelentes podem fazer de qualquer curso um sucesso), porém nos pareceu que a abordagem OO é mais propensa a permitir que os alunos consigam construir programas pequenos sem entender os fundamentos da programação e da construção de algoritmos. Por este motivo, nossa preferência para o ensino de programação é: introdução à programação com uma abordagem imperativa, e em seguida um curso de programação orientada a objetos. Você vai encontrar mais detalhes sobre as metodologias que recomendamos para cada um destes cursos nos links Computação 1 e Computação 2

.