O que quero partilhar hoje é uma reflexão minha sobre Linguagens Visuais e o seu interesse no ensino da Introdução à Programação.
A cerca de 4 anos atrás no Instituto em que dou aulas, em horário pós-laboral, verificava-se uma situação que penso ainda hoje existir em muitas outras entidades. Uma dificuldade grande de motivar os alunos para a aprendizagem da programação[]. E demostrar o grande interesse desta área, e o seu futuro inevitávelmente muito interessante em termos de empregabilidade e crescente reconhecimento que irá ter a nível das empresas e dos organismos oficias. Será sem duvida uma necessidade nuclear, a nível de recursos humanos de um país, que pretenda uma industria com produtos de tecnologicamente avançados e inovadores. O ignorar esta necessidade será cometer o mesmo erro que é a realidade da falta actual de médicos em Portugal, ou da falta de profissionais qualificados em engenharia de software em países como a Alemanha, Austrália ou EUA.
Tomamos na altura a decisão de implementar um programa focado numa nova estratégica que pudesse motivar e facilitar a aprendizagem das bases ciêntificas da programação desmitificando a áurea de dificuldade que este tipo de unidade curricular tem. Estive envolvido neste programa que se mostrou um desafio, cujos resultados actualmente mostram ter sido uma aposta ganha.
Este programa pretendia por um lado facilitar a aprendizagem das técnicas introdutórias da programação e simultâneamente aumentar significativamente o conjunto de competências, saberes e prática de programação dos alunos a frequentar estas unidades curriculares. Por outras palavras obter resultados significativos em termos dos "outputs" e artefactos de software que os alunos conseguissem produzir logo num primeiro curso de introdução a ciência dos computadores e programação. A maioria das abordagens tradicionais passam por articular unidades de conhecimento básico sobre algoritmia, metodologias de desenvolvimento de software e estruturas de dados com uma linguagem de programação tradicional como o C ou o Java. O problema desta abordagem é que a maioria dos alunos perde-se na complexidade da gramática, regras e bibliotecas e ambiente de desenvolvimento da linguagem em vez de focar a sua atenção sobre como resolver problemas com métodos, procedimentos e boas práticas de programação e engenharia de software.
A cerca de 4 anos atrás no Instituto em que dou aulas, em horário pós-laboral, verificava-se uma situação que penso ainda hoje existir em muitas outras entidades. Uma dificuldade grande de motivar os alunos para a aprendizagem da programação[]. E demostrar o grande interesse desta área, e o seu futuro inevitávelmente muito interessante em termos de empregabilidade e crescente reconhecimento que irá ter a nível das empresas e dos organismos oficias. Será sem duvida uma necessidade nuclear, a nível de recursos humanos de um país, que pretenda uma industria com produtos de tecnologicamente avançados e inovadores. O ignorar esta necessidade será cometer o mesmo erro que é a realidade da falta actual de médicos em Portugal, ou da falta de profissionais qualificados em engenharia de software em países como a Alemanha, Austrália ou EUA.
Tomamos na altura a decisão de implementar um programa focado numa nova estratégica que pudesse motivar e facilitar a aprendizagem das bases ciêntificas da programação desmitificando a áurea de dificuldade que este tipo de unidade curricular tem. Estive envolvido neste programa que se mostrou um desafio, cujos resultados actualmente mostram ter sido uma aposta ganha.
Este programa pretendia por um lado facilitar a aprendizagem das técnicas introdutórias da programação e simultâneamente aumentar significativamente o conjunto de competências, saberes e prática de programação dos alunos a frequentar estas unidades curriculares. Por outras palavras obter resultados significativos em termos dos "outputs" e artefactos de software que os alunos conseguissem produzir logo num primeiro curso de introdução a ciência dos computadores e programação. A maioria das abordagens tradicionais passam por articular unidades de conhecimento básico sobre algoritmia, metodologias de desenvolvimento de software e estruturas de dados com uma linguagem de programação tradicional como o C ou o Java. O problema desta abordagem é que a maioria dos alunos perde-se na complexidade da gramática, regras e bibliotecas e ambiente de desenvolvimento da linguagem em vez de focar a sua atenção sobre como resolver problemas com métodos, procedimentos e boas práticas de programação e engenharia de software.
A escolha das ferramentas caiu num ambiente desenvolvido pelo professor Martin Carlisle United States Air Force Academy [http://raptor.martincarlisle.com/]. Este ambiente de desenvolvimento possuí um paradigma visual baseado no conceito de fluxograma, e na sua versão mais recente possuí um modo OO - orientado a objectos, em que é possivel construir diagramas de classe UML. Testado por mim nos últimos quatro anos com sucesso este ambiente permite a introdução à programação e algoritmia usando os marcadores recomendados pela ACM para uma unidade curricular CS1/ 'PF - Programming Fundamentals' e o nível de trabalhos de laboratório executados pelos alunos estão em linha com as os resultados das melhores escolas com abordagens/estratégias/unidades semelhantes. Outros programas 'opensource' que usam este paradigma do fluxograma e geram código existem como o devFlowCharter, FlowGrid ou freeDFD, este último em várias linguas, mas nenhum tem o suporte e robustez do Raptor.
Bibliografia Fundamental:
1. Recomendações curriculares da ACM - CC2001 (computing curricula 2001) para cursos de Ciências da Computação [Download]
2. “RAPTOR: Introducing Programming to Non-Majors with Flowcharts”, with T. Wilson, J. Humphries and S. Hadfield, Journal of Computing Sciences in Colleges, 19(4):52-60, April 2004.
3. “Tools for Teaching Introductory Programming: What works”, with K. Powers, P. Gross, S. Cooper, M. McNally, K. Goldman, V. Proulx (panelist). Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education, Houston TX, March 2006. (14 of 26 submissions accepted, 54%)
4. “RAPTOR: A Visual Programming Environment for Teaching Algorithmic Problem Solving”, with T. Wilson, J. Humphries and S. Hadfield, Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education, Saint Louis MO, February 2005. (104 of 330 submissions accepted, 32%)
5. “RAPTOR: Introducing Programming to Non-Majors with Flowcharts”, with T. Wilson, J. Humphries and S. Hadfield, Proceedings of the 10th Annual CCSC Central Plains Conference, Warrensburg MO, April 2004.
6. Exemplo de programa de ordenação interna, de vector com 100 elementos numéricos, em devFlowCharter[download]
7. A minha pessoal [http://www.jorgemota.com/] página de suporte as disciplinas que leccione e que incluem a Disciplina de Introdução a Ciências da Computação, com inumeros exemplos em Raptor.