Você está na página 1de 13

Programa Nacional de Informática Educativa MEP–FOD

Núcleo Pedagógico

Andamiaje para el aprendizaje


con la programación
Principios didácticos de la programación con computadoras en contextos educativos

Noviembre de 2009
Andamiaje para el aprendizaje con la programación

Derechos reservados: Fundación Omar Dengo

Prohibida la reproducción parcial o total de este documento, aun citando la fuente de


procedencia, para fines externos a los programas de la Fundación Omar Dengo.

Primera edición
Noviembre de 2009

Elaborado por: Andrés Rodríguez Boza y Melania Brenes Monge, bajo la conducción de
Magaly Zúñiga Céspedes. Núcleo Pedagógico PRONIE MEP–FOD.

|Página 2
Contenido

Introducción .............................................................................................................................. 4
Marco de referencia .............................................................................................................. 5
Andamiaje con la programación....................................................................................... 5
Formular y comprender el problema u objetivo. ....................................................... 6
1. Conocer, identificar o plantear el problema u objetivo .............................. 6
2. Dividir el problema u objetivo en partes ........................................................... 6
3. Representar gráficamente el conjunto de las partes ................................... 7
Crear puentes entre el objetivo deseado y el lenguaje de programación. ..... 8
1. Definir una secuencia lógica de cada una de las partes. ......................... 8
2. Identificar los tipos y estructuras de datos contenidos en el producto. .. 9
Utilizar un lenguaje de programación que permita alcanzar el objetivo ......... 10
deseado y la solución al problema. ............................................................................ 10
Interpretación del gráfico del andamiaje ..................................................................... 11
Recomendaciones ................................................................................................................ 12
Conclusiones ........................................................................................................................... 13

|Página 3
Introducción

Este documento es el resultado de un proceso de análisis y síntesis de información a partir de


diversas fuentes bibliográficas, consultas a investigadores internacionales, revisión de software,
participación en talleres de programación, entrevistas a profesores de Informática Educativa y
asesores pedagógicos del PRONIE MEP–FOD. El documento integra además el conocimiento
generado de la práctica educativa con estudiantes, en el marco del Programa.

El objetivo de este aporte consiste en identificar los métodos de enseñanza–aprendizaje que


permitan a los estudiantes alcanzar un nivel de comprensión adecuado con respecto a la
programación, y utilizarla como una forma de plantear y resolver problemas con las tecnologías
digitales. El documento se enfoca específicamente en las siguientes interrogantes: ¿Cómo
promover el aprendizaje de la programación?, ¿Cuáles recursos se pueden emplear para
enseñar a programar?, ¿Qué situaciones didácticas se pueden diseñar para favorecer el
aprendizaje de la programación en los estudiantes?

Este trabajo ofrece a los educadores de Informática Educativa diversas claves para enseñar a
programar, similares a un andamiaje. Estas buscan favorecer en los estudiantes la adquisición
de competencias de programación, de manera que sean capaces de plantear y resolver
problemas, así como trasladar lo aprendido a otros contextos, problemas o situaciones que
enfrenten. Se habla de andamiaje como una analogía con la forma en que se usan los
andamios en una construcción. Constituye un soporte, pero la pretensión es ir retirando el apoyo
de modo que el edificio permanezca de pie solo, sin la intervención de este recurso.

Un proceso de andamiaje educativo implica hacer un análisis cuidadoso de la tarea de


aprendizaje para establecer su complejidad y poder apoyar al aprendiz en el enfrentamiento
de esa complejidad a través de actividades y recursos específicos. Dichas actividades y
recursos desempeñan la función de “andamios” para la construcción de los aprendizajes, los
cuales se van retirando conforme el aprendiz progresa en su dominio de la tarea y los
conocimientos requeridos.

La propuesta que se desarrolla aquí se denomina: Andamiaje para el aprendizaje con la


programación, y abarca tres fases fundamentales: 1. Formular y comprender un problema u
objetivo, 2. Crear puentes entre el objetivo deseado y el lenguaje de programación y 3. Utilizar
un lenguaje de programación que posibilite alcanzar el objetivo deseado o la solución al
problema.

Cada una de estas fases se compone de objetivos didácticos, de los cuales se desprenden
actividades específicas. Estas actividades deben ser planeadas previamente por el educador
de Informática Educativa.

La propuesta se desarrolla de manera flexible, pues una vez que el educador y los estudiantes
han pasado por cada momento, pueden devolverse a otro para refinar la solución al problema
u objetivo. La práctica misma así lo permite.

Un antecedente primordial para desarrollar esta propuesta didáctica, fue la definición de un


mismo concepto de programación. Se consideró elemental partir de una misma idea. Por
consiguiente, con base en las definiciones elaboradas por el grupo de asesores pedagógicos
del PRONIE MEP–FOD, se formuló que la programación es:

“…una actividad que utiliza las computadoras para plantear y resolver


problemas o lograr objetivos de interés, a través de procesos de
razonamiento, diseño y organización de acciones posibles”.

La idea central fue generar un concepto de programación útil para las necesidades de la
práctica educativa dentro del campo de acción del PRONIE, incluyendo el trabajo con el
enfoque de aprendizaje por proyectos (EAP) orientados por estándares de desempeño.

|Página 4
Marco de referencia

Como se ha mencionado antes, se proponen tres fases para enseñar a los estudiantes
a programar computadoras.

Luis Pirir (2001) realiza una propuesta específica para programadores de


computadoras, la cual se ha tomado como referencia en este documento. Este autor
plantea:

“…el proceso de diseñar es un proceso creativo; se puede considerar una serie de


fases o pasos comunes, que generalmente deben seguir todos los programadores”.
(Pirir, 2001: 2)

Las fases propuestas por Pirir (2001) son:1

Fase 1 - Análisis del problema


Fase 2 - Diseño del algoritmo
Fase 3 - Resolución del algoritmo en la computadora

Estas fases, según Pirir (2001), son propias del proceso natural de la programación. Se
puedan aplicar al contexto de trabajo efectuado en los laboratorios de Informática
Educativa (LIE). Se deben combinar con el enfoque de aprendizaje por proyectos,
para lograr una propuesta adaptada a las necesidades y al contexto educativo del
PRONIE. En este sentido, se busca una fusión entre las diferentes fases de
programación, el planteamiento de una pregunta orientadora y el desarrollo de un
producto digital dentro de un proyecto guiado por el andamiaje de la programación.

Andamiaje de la programación

Tomando en cuenta esta fusión, se proponen tres fases en el andamiaje de la


programación, dentro de un proyecto educativo:

1. Formular y comprender el problema u objetivo.


2. Establecer puentes entre el objetivo deseado y el lenguaje de programación.
3. Utilizar un lenguaje de programación que permita alcanzar el objetivo deseado
y la solución al problema.

A partir de la formulación de un problema u objetivo, el educador guía al estudiante


en la búsqueda de la solución del problema o el logro del objetivo, y lo ayuda a
obtener recursos específicos que lo orienten a conseguirlo. Por ejemplo, en la primera
fase los estudiantes representan gráficamente el conjunto de las partes del problema,
para visualizar mejor cómo está constituido y empezar a ensayar posibles soluciones.

1
Luis Enrique Pirir Aguilar, Introducción a la programación, 2001.

|Página 5
Formular y comprender el problema u objetivo

Para empezar a programar, es importante que los estudiantes conozcan claramente


cuál producto programado final deben obtener como resultado de su trabajo. Este
producto da cuenta de las metas de aprendizaje que orientan el desarrollo del
proyecto. Esto representa para el educador el tener un planeamiento educativo que
se desarrolle con el fin en mente.

Planear con el fin en mente es un procedimiento muy útil para los educadores, pues el
proceso de enseñanza–aprendizaje se orienta desde un inicio por actividades
didácticas, métodos y una evaluación dirigidos a alcanzar las metas de aprendizaje
planteadas por ellos para sus estudiantes.

Esta primera etapa es la base de la propuesta didáctica. Se pretende ayudar a los


estudiantes a entender el problema u objetivo por resolver, conforme se crean en ellos
estructuras de pensamiento lógico cada vez más complejas. Este momento plantea
tres objetivos didácticos que guían el desarrollo de actividades con los estudiantes
para su logro, a saber:

1. Conocer, identificar o plantear el problema u objetivo


2. Dividir en partes el problema u objetivo
3. Representar gráficamente el conjunto de las partes

1. Conocer, identificar o plantear el problema u objetivo


Alcanzar este objetivo es esencial para la resolución satisfactoria del problema. Es
aquí donde los estudiantes, con ayuda del educador de Informática Educativa si es
necesario, conocen e identifican el problema u objetivo por resolver. A medida que
avanzan en los ciclos educativos, es esperable que necesiten menos apoyo del
educador, o bien, que logren plantearlo por sí mismos. Pero eso solamente dependerá
del nivel de desarrollo de los estudiantes y su trayectoria en cuanto al aprendizaje de
la programación.

La idea para alcanzar este objetivo es que los educadores desarrollen actividades que
den a los estudiantes la oportunidad de entender claramente qué problema deben
resolver o qué objetivo deben alcanzar. De no ser así, se corre el riesgo de que los
estudiantes no comprendan por qué deben efectuar las tareas propuestas por el
educador y pierdan el interés.

2. Dividir en partes el problema u objetivo


Cuando los estudiantes conocen con claridad cuál es el problema u objetivo, lo
siguiente que se sugiere es dividirlo en partes más simples. De esta forma, se espera
que la interpretación de la solución sea menos compleja para ellos. Para lograr este
objetivo didáctico, los educadores deben proponer actividades o tareas en las cuales
los estudiantes segmenten el problema u objetivo e identifiquen puntos claves o
relevantes.

La idea es que los estudiantes sepan fragmentar los problemas en partes más simples,
con lo cual pueden ir resolviéndolos de mejor manera. De nuevo, aquí se espera que
cada vez sea más fácil para ellos efectuar la división de las partes de un problema
conforme avanzan en los ciclos y suman experiencia en la programación.

|Página 6
3. Representar gráficamente el conjunto de las partes
Morini y Señas2 (2005) en su artículo Estrategias para la enseñanza de la programación,
señalan la importancia de conducir a los estudiantes a través de técnicas que les
faciliten comprender la programación. Según estas investigadoras, los programas
actuales de desarrollo de software son muy complejos. Por ello proponen un diseño
previo de lo que se desea programar, como un recurso esquemático donde el
estudiante pueda plasmar gráficamente la solución de su problema.

Esto, además de favorecer la comprensión de los estudiantes sobre el problema u


objetivo, les permite desarrollar competencias de pensamiento abstracto a favor de
un estilo de pensamiento algorítmico. Los estudiantes deben usar su creatividad para ir
visualizando gráficamente una posible solución o modo de llegar a su objetivo.

Cuando los estudiantes ganen experiencia en esto, podrán representar gráficamente


sus ideas o pensamientos, y cada vez les será más sencillo comprender lo que piensan
y cómo lo piensan.

Gráficamente, esta primera fase y sus correspondientes objetivos didácticos se ven así:

Fase Objetivos didácticos

2
JEITICS (2005) Primeras Jornadas de Educación en Informática y TICS en Argentina.

|Página 7
Crear puentes entre el objetivo deseado y el lenguaje de programación

En esta segunda fase, se propone establecer los vínculos entre la formulación y


comprensión del problema u objetivo y su solución o logro, a través del uso de la
computadora.

Enfatiza en que los estudiantes conozcan y comprendan conceptos propios de la


programación de computadoras, que los ayuden a utilizar lenguajes para programar
procedimientos y, por lo tanto, resolver el problema planteado o alcanzar el objetivo
propuesto. Como en el momento anterior se espera que, cuando tengan mayor
trayectoria en el aprendizaje de la programación, pueden desarrollar más
autónomamente las actividades planteadas por los educadores.

En esta fase se inicia un ciclo determinado por dos objetivos didácticos, los cuales
orientan el desarrollo de actividades con los estudiantes:

1. Definir una secuencia lógica de cada una de las partes


2. Identificar los tipos y estructuras de datos contenidos en el producto

1. Definir una secuencia lógica de cada una de las partes


El orden en que se plantee la solución al problema o logro del objetivo es muy
importante, pues de esto depende que los estudiantes obtengan los resultados que
esperan. Los educadores deben apoyarlos para que determinen el orden lógico en
que implementarán la solución al problema y puedan traducirlo al lenguaje de la
computadora.

Los educadores deben procurar que sus estudiantes puedan definir con claridad por
qué consideran que tal elemento debe ir primero y tal otro después. Este proceso
deberá ir depurándose hasta encontrar la mejor solución a su problema o el mejor
camino para conseguir su objetivo.

Alcanzar este objetivo requiere que los estudiantes hayan desarrollado la


representación gráfica del conjunto de las partes del problema. De este modo,
comprenderán mejor lo que necesitan hacer con la computadora y tendrán un mejor
nivel de abstracción.

Con respecto a las actividades recomendadas para los educadores, se aconseja


comenzar con aquellas que permitan a sus estudiantes comprender que muchas
situaciones de la vida cotidiana involucran una serie de pasos lógicos para que
sucedan o se obtenga un producto final, como por ejemplo preparar una fiesta, ver
una película o hacer un sándwich. Por analogía, los estudiantes entenderán que, para
programar una solución, es preciso atender a un conjunto de pasos lógicos que lleven
al objetivo deseado.

Además, es importante promover actividades donde los estudiantes puedan decidir


por qué una solución es mejor que otra. Los estudiantes deben tener la oportunidad de
descubrir qué pasa cuando cambian un paso en la solución del problema, así como
que existe una cantidad variable de soluciones al problema, unas más efectivas que
otras, pues la programación depende de la capacidad de abstracción y de lógica de
quien programa.

|Página 8
2. Identificar los tipos y estructuras de datos contenidos en el producto
Este objetivo se requiere alcanzar dependiendo de si la solución planteada contiene
estructuras de datos. Posiblemente algunos procesos hacia la solución los requieran y
otros no. En caso de que sea necesario alcanzar este objetivo didáctico, es importante
identificar cómo está compuesta la información que se debe procesar, el tipo de
variable o constante por utilizar, el contenido que se almacenará y cómo se
implementará dentro de la solución.

Gráficamente, la segunda fase con sus objetivos didácticos se ve así:

Fases Objetivos didácticos

|Página 9
Utilizar un lenguaje de programación que permita alcanzar el objetivo
deseado y la solución al problema

Se ha observado que los estudiantes enfrentan grandes inconvenientes cuando


escriben un código de programación sin tener claridad sobre la solución al problema
que desean resolver. Además, los educadores reportan continuamente desmotivación
porque los estudiantes no logran lo propuesto y, en algunos casos, también se
conforman con el efecto obtenido tras haber programado de manera errónea algún
elemento. Esto último se ha confundido en ocasiones con aprender del error. No
obstante, esto dista mucho de ser un proceso en el cual los estudiantes se esfuercen
por comprender qué genera su error, porque parece no haber nada que realmente le
sirva como guía para valorar y comprender el resultado obtenido.

En este momento, se propone codificar la solución planeada desde el principio en el


proceso, con el fin de utilizar todos los productos desarrollados en las fases anteriores
(por ejemplo, el bosquejo del producto), para garantizar la comprensión de los
estudiantes en cuanto a cómo se viene gestando esta solución. Así, además, los
estudiantes podrán identificar con más facilidad posibles errores al programar en la
computadora.

En esta fase, también será necesario diseñar actividades para que los estudiantes
conozcan y dominen la herramienta o lenguaje con que programarán, su entorno,
cómo se crean las estructuras de datos (variables y constantes) y las de control, tales
como condicionales, ciclos y recursividad, pero sin dejar a un lado el proceso de
depuración.

Llegados a este punto, los estudiantes pueden ir y venir por las diferentes fases, para
que el proceso sea integrador e interactivo. Se puede graficar una parte del problema
e implementar su solución en la computadora, con lo cual se genera un ciclo entre la
comprensión del problema y la solución codificada.

Gráficamente, la tercera fase y sus respectivos objetivos didácticos se ven así:

Fases Objetivos didácticos

| P á g i n a 10
Interpretación del gráfico del andamiaje

Para ver la interactividad entre las fases y sus objetivos didácticos, se han trazado dos
flechas. La primera flecha empieza en el primer objetivo (conocer/identificar/plantear
el problema u objetivo) y sube atravesando los dos siguientes hasta llegar al cuarto
objetivo (definir una secuencia lógica de pasos de cada una de las partes). A partir de
este se desprenden dos caminos: uno que nos lleva directamente a la codificación; y
otro que, antes de llegar a codificar la solución, nos propone identificar las estructuras
de datos y de control.

Una segunda flecha discontinua sale del último objetivo didáctico (codificar en un
lenguaje de programación) y nos permite devolvernos hacia los objetivos inferiores,
dependiendo de la necesidad del proceso de enseñanza-aprendizaje.

Este último objetivo se desagrega definiendo cuáles actividades se deben enseñar de


la programación. Todas estas actividades están atravesadas por un proceso de
depuración, con el cual se puede valorar el resultado obtenido y modificarlo hasta
lograr la solución definida por el estudiante.

Fases Objetivos didácticos

| P á g i n a 11
Recomendaciones

Es importante que los educadores partan siempre de una clara y entendida


planificación, con el fin de estar preparados para mediar la experiencia de aprendizaje.
De esta manera, podrán prever posibles situaciones o necesidades de los estudiantes al
aprender con la programación.

Definir cuál producto final se busca desarrollar y darlo a conocer a los estudiantes desde
el inicio del proceso, les permite tener una mayor claridad de qué se espera de ellos y
qué deben lograr en el proyecto de aprendizaje.

Es muy relevante que los estudiantes comprendan que todos los productos desarrollados
a través de este proceso, contribuyen a la obtención del producto final por desarrollar.

Cada vez que sea posible, es importante preguntar a los estudiantes cuáles algoritmos
se pueden extraer de una determinada situación. Las demostraciones son una buena
oportunidad para hacerlo.

Es importante evidenciar a los estudiantes que la máquina no piensa por sí misma: “El
papel de los programas de computadoras es esencial; sin una lista de instrucciones a
seguir, la computadora es virtualmente inútil. Los lenguajes de programación nos
permite escribir esos programas y por consiguiente comunicarnos con las
computadoras” (Pirir, 2001: 2).

Es preciso orientar a los estudiantes para que realicen siempre un diseño previo de la
solución, de una forma concreta, con bosquejos, esquemas, diagramas, secuencia de
pasos, con el objetivo de comprender mejor la solución del problema.

Cuando los estudiantes son capaces de brincarse uno de las pasos propuestos e
implementar directamente la solución en un determinado lenguaje de programación,
se puede implementar la estrategia de análisis de código. Esto quiere decir que se les
puede dar un programa para que analicen el código empleado y lo puedan trasladar
a una determina situación. Esto los ayudará a interpretar estructuras más complejas,
donde se aplique un pensamiento más abstracto.

| P á g i n a 12
Conclusiones
Planificar un proyecto de aprendizaje iniciando con el fin en mente, favorece
significativamente el proceso de enseñanza–aprendizaje. Es necesario incluir qué
aprenderán los estudiantes, cómo lo aprenderán, qué conocimiento previo requieren
para su comprensión y con cuáles indicadores se evaluará la adquisición del
conocimiento según se avanza en el proyecto.

Aprender a programar va más allá de convertir a los estudiantes en programadores


expertos y diestros en el uso de diversos lenguajes de programación. Debe considerar el
favorecimiento de la adquisición de una gran variedad de competencias digitales y
estilos de pensamiento para razonar y resolver problemas.

Es importante que los estudiantes comprendan los conceptos propios de la disciplina


(variables, ciclos, condicionales, entre otros). Aunque esto es visto por muchos como un
elemento que atrasa el proceso, se tiene evidencia documentada de que, cuando el
estudiante entiende primero el concepto, tiene mayor autonomía al momento de
emplearlo y le encuentra sentido a lo que programa.

Para aprender a programar, los estudiantes deben tener la posibilidad de poner a


prueba independientemente las estrategias mostradas por el educador. Estas deben
estar diseñadas para que ellos sean capaces de resolver problemas similares que se les
presenten o buscar nuevas soluciones sobre la base de las estrategias que ya conocen.
Cuando el educador proporciona fichas con las soluciones de código necesarias para
realizar correctamente la tarea, quien está usando el conocimiento de programación
requerido es él y no los estudiantes.

Las actividades de aprendizaje propuestas por los educadores deben constituir


verdaderos desafíos para los estudiantes, al poner en conflicto sus conocimientos
previos. Estas actividades deben ser accesibles para ellos y estar enmarcadas en
contextos conocidos y significativos. La comprensión de la programación surge del
trabajo de los estudiantes, como la respuesta óptima a situaciones problemáticas
específicas que lo requieren.

Los alumnos eligen y comparten diferentes técnicas de resolución de problemas. El error


es parte sustancial del proceso de aprendizaje.

Los conocimientos y algoritmos de programación construidos deben ser valorados


continuamente por todos los estudiantes. No debe pasar mucho tiempo entre el
momento en que el conocimiento ha emergido y el momento en que el educador lo
destaca y sistematiza.

Los estudiantes deben tener la oportunidad de trabajar y profundizar los conceptos


(ensayarlos) hasta lograr un dominio significativo de ellos.

La argumentación y explicación del código empleado para solucionar un problema,


fundamentan la adecuación de los algoritmos, la modificación del error y, por ende, el
aprendizaje.

Los estudiantes podrían usar técnicas poco adecuadas cuando comienzan a resolver el
problema; pero, una vez modificadas las condiciones de resolución de este, se verán
obligados a transformar sus técnicas para hacerlas más efectivas. En este cambio de las
técnicas promovidas por el educador, se juega la posibilidad del aprendizaje.

| P á g i n a 13