Enseñando a Niños a Programar

Publicado en

Es innegable que al día de hoy el número de niños y jóvenes que tienen acceso a una computadora o a algún dispositivo móvil se está incrementando a un ritmo acelerado. Tal como lo reporta el INEGI en sus datos del 2005 y del 2008: El 77 por ciento de los cibernautas mexicanos tiene menos de 35 años, lo que significa que los jóvenes son quienes más uso hacen de la tecnología, y también los primeros que las adoptan. Según el mismo INEGI el 13.2 por ciento de los usuarios de computadora en México tiene entre 6 y 11 años, asimismo, la proporción de niños (6-11 años) que navegan en la red es de 7.3 por ciento.

El uso que se hace de la computadora es básicamente para trabajos escolares, tareas, investigaciones y redes sociales, pero la mayoría (si no es que la totalidad de ellos) tiene una idea muy vaga sobre cómo funciona una computadora (hardware) y menos qué es lo que la hace funcionar (software). La pregunta que surge aquí es: si los niños y jóvenes pueden aprender un segundo o incluso un tercer idioma a esa edad, ¿por qué no aprender a programar y escribir código para computadoras?

El ser capaz de usar Internet y operar una computadora es una cosa, pero creo que el enseñar a los alumnos cómo codificar y realizar programas tiene también un valor educativo que ayuda a los chicos a formar ese pensamiento lógico y algorítmico que tanto necesitan. El conocimiento de la programación, aún a niveles muy básicos, hace que la tecnología parezca menos “mágica” y sea más manejable y, al mismo tiempo, mejora las habilidades matemáticas y de lógica. Muchos alumnos de primaria y secundaria no tienen acceso a cursos del área de las ciencias computacionales hasta la preparatoria o profesional y he ahí la gran oportunidad de introducir a estudiantes jóvenes a la programación.

Existen un gran número de herramientas gratuitas que proveen una introducción a la programación y a la codificación de programas. Propongo el uso de cuatro de ellas que son mis favoritas y que creo, como indiqué antes, representan una gran oportunidad para inculcar el pensamiento lógico desde edades tempranas en las escuelas. Estas son: Scratch, Alice, Greenfot y BlueJ.
La introducción paulatina de cada una de las herramientas la visualizo como un continuo en su implementación con los alumnos. Como veremos más adelante, cada herramienta va incrementando su nivel de complejidad en cuanto a los conocimientos de codificación requeridos a los estudiantes. La figura 1 muestra una línea de tiempo con los rangos de edad que considero más adecuados para cada herramienta. A continuación describo cada una de ellas.


Figura 1. Herramientas propuestas.

Scratch - http://scratch.mit.edu

Fue desarrollado por el “Lifelong Kindergarten group” en el Media Lab del Instituto Tecnológico de Massachusetts como un lenguaje de programación visual para niños de 6 años en adelante. Desde que se liberó en 2007, el sitio web de Scratch tiene más de 800,000 usuarios y en él se pueden hallar más de 1.7 millones de diversos proyectos, la mayoría relacionados con juegos y animaciones sencillas. Scratch, al igual que el resto de las herramientas mencionadas en este artículo fomenta que las creaciones se compartan como Creative Commons. Scratch es gratuito y puede correr en plataformas Windows, Mac y Linux. Los estatutos lógicos son mostrados al usuario como piezas de un rompecabezas y el programador puede arrastrarlos hacia la pantalla principal del programa. Es increíble la facilidad con la que se puede crear un sencillo programa de animación en unos 10 a 15 minutos. Una ventaja de Scratch radica en que la interface está disponible en español.

La cantidad de configuraciones que el niño puede realizar con las piezas esenciales es infinita y, de manera intuitiva, el niño va aprendiendo los conceptos de objetos y reusabilidad del software.


Figura 2. Interfaz de Scratch.


El nombre de Scratch se deriva de la técnica de “scratching” usada en el “Turntablism” (arte del DJ para usar los tornamesas), y se refiere tanto a la lengua y su aplicación. La similitud con el “scratching” musical es la fácil reutilización de piezas: en Scratch todos los objetos, gráficos, sonidos y secuencias de comandos pueden ser fácilmente importados a un nuevo programa y combinados en infinitas maneras permitiendo a los principiantes el conseguir resultados rápidos y estar motivados para intentar más. Podemos utilizar este programa para, tal y como dice su lema, programar, jugar y crear.

Alice - http://alice.org

Alice es también un lenguaje de programación de tipo educativo libre y abierto, orientado a objetos con un IDE integrado en el mismo. Fue desarrollado en la Universidad Carnegie Mellon y está programado en Java. El entorno de Alice, al igual que Scratch se basa en el paradigma de “arrastrar y soltar” para crear mundos virtuales mediante el uso de modelos en 3D. La versión actual puede ser ejecutada en ambientes Windows, Mac y Linux. El diseño fundamental de Alice permite enseñar a los alumnos tanto la programación orientada a objetos como la orientada a eventos. De manera muy similar a Scratch, el usuario va creando su mundo virtual a través de la estructuración lógica de instrucciones que ya vienen pre-programadas en el IDE de Alice. Este software cuenta con un gran número de objetos (clases) pre-programados que el alumno puede combinar para la creación tanto de animaciones como historias en un mundo virtual.


Figura 3. Interfaz de Alice.

Alice busca resolver tres problemas fundamentales del software educativo:

  1. La mayoría de los lenguajes de programación están diseñados para producir otros programas, cada vez más complejos. Alice está diseñado únicamente para enseñar a programar.
  2. Alice está íntimamente unido a su IDE. No hay que recordar ninguna sintaxis especial. De todas formas, acepta tanto el modelo de programación orientada a objetos como la dirigida a eventos.
  3. Alice está diseñada para el público que normalmente no se enfrenta a problemas de programación, tales como alumnos de secundaria, mediante un sistema de «arrastrar y soltar».

Al no existir en Alice un editor de código se alivian las dificultades del rigor sintáctico en los primeros pasos dentro de la programación orientada a objetos. Una ventaja del uso de Alice para introducir a los alumnos a la programación es la exigencia de la creatividad por parte del programador. El estudiante tiene que diseñar previamente en un “Story-board” su mundo virtual antes de iniciar con el proceso de creación de su mundo virtual. Otro punto a favor de Alice es que los alumnos se divierten al mismo tiempo que van, de manera intuitiva, aprendiendo los conceptos de instancia, atributos, métodos y funciones; incluso el tema de arreglos es soportado por el ambiente de programación Alice.

Varios estudios han demostrado un incremento en el desempeño de los estudiantes en primeros cursos de informática con retenciones que aumentaron del 40% al 88%.

Greenfoot - http://greenfoot.org

Es la consecuencia natural en la serie de herramientas que propongo. Se trata de una combinación entre un marco para crear juegos y simulaciones en dos dimensiones dentro de una malla y un IDE programado en Java que incluye un navegador de clases, un editor de código, un compilador y la ejecución de un proyecto. Este ambiente es muy recomendable para programadores principiantes. Fue creado por Michael Kölling de la Universidad de Kent en Inglaterra y con el apoyo de un grupo de investigadores de la Universidad La Trobe en Australia.
Greenfoot soporta completamente el lenguaje Java y es especialmente útil para programar proyectos que contienen un elemento visual. Dentro del itinerario de aprendizaje propuesto, así como Scratch es el paso previo a Alice, Greenfoot es muy útil al momento de afrontar la transición a un lenguaje de programación orientada a objetos en el que el estudiante debe enfrentarse con un editor de texto para la realización de sus proyectos. Greenfoot mantiene el atractivo visual y amigabilidad para el usuario pero su formalidad en cuanto al lenguaje es tan poderosa que permite la creación de aplicaciones desde sencillas hasta muy complejas tales como videojuegos. El concepto de herencia es fácilmente entendido dado que la interface fuerza al usuario a utilizar un árbol de herencia donde cualquier nueva clase deberá heredar de la clase Actor al igual que cualquier Mundo (como se conoce en Greenfoot a los escenarios) deben heredar de la clase World.


Figura 4. Interfaz de Greenfoot.

El editor de texto, mostrado en la figura 5, permite interactuar con el código fuente.


Figura 5. Editor de texto de Greenfoot.

Al estar íntimamente relacionado con Java, Greenfoot permite la implementación de algoritmos muy complejos del área de inteligencia artificial o conectividad a bases de datos. Cuenta con una API disponible en todo momento, es libre y descargable gratuitamente desde plataformas Windows, Mac o Linux. Otro aspecto interesante de esta herramienta es el Greenroom, sitio para profesores donde se discuten nuevas formas de uso en la enseñanza de la programación orientada a objetos y se pueden compartir proyectos.

Una ventaja que he vivido en lo personal es el gran soporte gratuito con que cuenta Greenfoot: tutoriales, demos, incluso un canal en Youtube llamado “The Joy of Code” en el que el mismo autor, Michael Kölling, nos lleva paso a paso en un curso completo del uso de Greenfoot y de la programación orientada a objetos.

BlueJ - http://bluej.org

Es un IDE para el lenguaje de programación Java, desarrollado principalmente con propósitos educativos, pero también es adecuado para el desarrollo de software a pequeña escala.

BlueJ fue desarrollado para apoyar la enseñanza y el aprendizaje de la programación orientada a objetos, y como resultado, su diseño difiere de otros entornos de desarrollo. La pantalla principal muestra gráficamente la estructura de clases de una aplicación en desarrollo (en un diagrama muy parecido a UML), y los objetos pueden ser creados y probados interactivamente. Combinado con una interfaz de usuario simple, esta facilidad de interacción permite experimentar de manera sencilla con los objetos en desarrollo. Los conceptos de la orientación a objetos (clases, objetos, comunicación a través de llamadas a métodos) son representados visualmente en el diseño de interacción en la interfaz. Ver imagen 6.


Figura 6. Interfaz de BlueJ.

El objetivo de BlueJ es el proporcionar experiencias concretas, en un ambiente gráfico tipo UML, de conceptos abstractos tales como relación entre clase y objeto, creación de instancias de objetos, llamadas a métodos y paso de parámetros. BlueJ cuenta con un banco de objetos que pueden ser inspeccionados lo que ayuda a los programadores novatos a la comprensión de los conceptos mencionados.

Conclusiones

Es muy clara la necesidad de más profesionistas en el área de la Computación y las Tecnologías de Información, en especial en los departamentos de desarrollo de software de diferentes corporaciones pero, desgraciadamente, el interés de los alumnos por carreras de este tipo está reduciéndose de una forma alarmante. Una posible solución es el inculcar desde temprana edad el pensamiento lógico y algorítmico en los niños siguiendo el itinerario de aprendizaje que propongo. La gran ventaja de las tres primeras herramientas es que el alumno aprende a programar al mismo tiempo que se divierte creando juegos, simulaciones y mundos virtuales en la computadora. Como ya mencioné, se han reportado grandes mejoras en el aprendizaje de la programación y codificación desde edades tempranas con el uso de estas herramientas. Esperemos que quienes sean profesores y lean este breve artículo lo apliquen en su quehacer educativo diario y mejoremos la calidad de nuestros futuros programadores y creadores de software.
 

Bio

Ignacio Cabral Perdomo es Director del Departamento de Tecnologías de Información en el ITESM Campus Puebla, es profesor en esa institución en el área de programación orientada a objetos en Java y Python. Ignacio tiene un especial interés en la enseñanza de la programación para niños y jóvenes a través de la creación de juegos, animaciones y simulaciones. Pertenece al grupo internacional de profesores del Greenroom para la enseñanza de la programación en Java con Greenfoot.