Custom Search

May 7, 2007

Estrategias para enseñar lenguajes de programación

En busca de nuevas estrategias para enseñar lenguajes de programación

Fuente: http://www.conocimientoenlinea.com/content/view/52/50/
Ingeniera Jakeline Marcos Abed
Profesora del Departamento de Ciencias Computacionales,
Tecnológico de Monterrey
jakeline@itesm.mxEsta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla

 

Ciencia

Las estrategias, técnicas y herramientas relacionadas con la enseñanza han evolucionado a lo largo del tiempo. En particular, enseñar lenguajes de programación siempre ha constituido un reto, debido a la naturaleza abstracta de dichos lenguajes y al desarrollo del pensamiento lógico en el estudiante.  

Cuando se trata de aprender un nuevo idioma, es necesario estudiar las reglas gramaticales, si es que después se quiere escribir correctamente en dicho idioma. De igual forma, para escribir un programa en lenguaje computacional, es necesario aprender primero las reglas gramaticales, desarrollando al mismo tiempo la lógica; es decir, la forma en la que se ha de solucionar el problema, para posteriormente generalizar una solución mediante la utilización de la computadora.   

De ahí que los estudiantes que estudian por primera vez un lenguaje de programación, se enfrentan con varios dilemas:

Comprender los conceptos nuevos.

Memorizar estrictas reglas de sintaxis.

Comprender el problema por solucionar  (a veces ni siquiera entienden el problema…).

Establecer los pasos que se han de seguir para solucionar el problema en cuestión.

Para superar este tipo de barreras, y gracias a los avances en el área de tecnología, se han desarrollado herramientas gráficas muy amigables, que facilitan la introducción al maravilloso mundo de la programación.

Una de estas herramientas se llama Alice ©, creada por la Universidad de Carnegie Mellon, y utilizada exitosamente en el Tec de Monterrey, en los cursos base de programación.    

APRENDIZAJE DE LA "JERGA" MEDIANTE LA UTILIZACIÓN
DE MUNDOS VIRTUALES

Al iniciar un curso de programación, puede existir en el profesor la duda de por dónde empezar.

Algunos cursos empiezan por el manejo de variables y tipos de datos; otros, con el manejo de algoritmos en la solución de problemas, mientras que otros empiezan por conceptos de clases y objetos.

Esto ha dado pie a diferentes discusiones e investigaciones, que no serán tratadas en este momento, ya que sería como hablar de política o religión.

Sin embargo, una cosa es cierta: hacer un curso de programación con altas dosis de teoría hace que el estudiante pierda interés en la clase, y al no existir interés, no existe motivación por aprender.

Y es aquí donde Alice entra en acción: Alice agrega un factor de motivación en el alumno.

Al haber más motivación en la clase, se incrementa el deseo por aprender, y entre más se comprende algo, menos se tiene que memorizar, y como se entiende más, gusta más, haciendo de esto un círculo virtuoso.
Alice es una herramienta gráfica que permite la creación de mundos virtuales. En este ambiente de edición de escenarios, es posible recrear pequeñas historias con actores de tipo caricatura, que van desde animalitos del bosque hasta personajes del viejo oeste, o criaturas propias de videojuegos.

SECUENCIA DE ACCIONES
Entonces, el estudiante crea una historia, escoge los actores, escoge el escenario y arma la trama, para lo cual diseña una secuencia de acciones que resolverán un pequeño problema. Es en este momento cuando el estudiante empieza a estructurar sus ideas, y da orden y secuencia a las acciones de los objetos involucrados.

Tomando como ejemplo la imagen mostrada abajo, si el sheriff quiere llegar al caballo, tiene que caminar hacia él. Pero la acción de caminar está compuesta por: subir la pierna derecha, bajar la pierna derecha, subir la pierna izquierda, bajar la pierna izquierda, avanzando medio metro en cada paso. ¿Cuántas veces va a hacer esto? No sabemos. El sheriff entrará en un proceso repetitivo, ya que caminará mientras se encuentre lejos del caballo.
De esta forma, Alice permite un aprendizaje activo que se puede asociar con la realidad, incorporando conceptos de programación, tales como uso de condiciones y repeticiones, o de programación orientada a objetos, como uso y creación de métodos, propiedades de un objeto, abstracción y herencia,  o incluso manejo de eventos.

Todo esto con la facilidad de "arrastrar y soltar", sin necesidad de aprender la gramática de ningún lenguaje computacional.

Ciencia ENTENDIDOS LOS CONCEPTOS,
VAMOS AHORA POR EL LENGUAJE

Una vez que el estudiante se ha familiarizado con los conceptos principales de programación, en un ambiente controlado como Alice,  es momento de migrar hacia un lenguaje de programación orientada a objetos, siempre con el apoyo de los conceptos aprendidos previamente.

De esta forma, llevaremos a los alumnos a un segundo nivel, en donde al explicar los estatutos propios del lenguaje de programación, todos estaremos utilizando el mismo vocabulario. Siguiendo con el ejemplo del Sheriff y el caballo, ahora podemos hablar de tipos de datos dentro de una clase específica: la clase Sheriff. Sabemos que la edad del Sheriff puede ser representada por un entero; la estatura, por un valor con decimales, y el nombre, por una cadena de caracteres.

Además, podemos hablar de acciones o métodos definidos para la clase Sheriff,  y podemos darnos cuenta que serán diferentes de los métodos o acciones definidos para la clase Caballo.

Una vez aprendidos los conceptos y el lenguaje, y habiendo ya trabajado en la solución de pequeños problemas, ahora sí nos dedicaremos por completo a la lógica de programación para resolver problemas más complejos.

Este tercer nivel es el que tiene mayor importancia dentro del curso, pero es difícil llegar a él si no se han comprendido bien los conceptos y las reglas de las primeras dos fases.
También en este sentido Alice nos ayudará, ya que el manejo de estatutos de control es incorporado desde los primeros ejemplos del curso.

CONCLUSIONES
Aunque herramientas como Alice no garantizan el aprendizaje de los lenguajes de programación, sí motivan y ayudan al estudiante a comprender conceptos que de otra forma serían más difíciles de entender.

Así, si consideramos el desarrollo de aplicaciones complejas, utilizando lenguajes de programación orientada a objetos, como una competencia eje de las carreras de tecnología, debemos privilegiar el fortalecimiento de las habilidades del pensamiento a través de la práctica continua e incremental, utilizando actividades creativas y retos interesantes de programación, dejando tiempo suficiente para pensar.

3 comments:

Anonymous said...

sostengo: está interesante lo que comenta la autora del articulo, yo también imparto cursos de programación básica.

No conocía la herramienta Alice
gracias

concuerdo: sin motivación nada vale.

Anonymous said...

Hola soy Mike, yo enseño lenguajes de programación en una universidad y precisamente estoy investigando estrategia para lograr un aprendizaje efectivo de la programación por parte de los estudiantes y encontré este artículo y me parece interesante,asi como la herramienta Alice.
Felicidades.
Saludos.

Metxtli said...

Efectivamente, este tipo de herramientas son de mucha utilidad; yo me he dedicado completamente al desarrollo y he visto como más de uno de mis compañeros de carrera, al terminar ésta dijeron:
- La programación no es para mi, me dedicaré a otra cosa.

Por un lado es "amor al arte", lo que te motiva a a programar; por otro lado, la falta de motivación en los inicios puede ser la gran diferencia entre seguir, o parar en este mundo de la programación.

Ojalá puedan comentar más acerca de las metodologías que están usando ustedes.