Download - Andamiaje para aprendizaje con programación

Transcript
Page 1: Andamiaje para aprendizaje con programación

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

Page 2: Andamiaje para aprendizaje con programación

| P á g i n a 2

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.

Page 3: Andamiaje para aprendizaje con programación

| P á g i n a 3

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

Page 4: Andamiaje para aprendizaje con programación

| P á g i n a 4

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.

Page 5: Andamiaje para aprendizaje con programación

| P á g i n a 5

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.

Page 6: Andamiaje para aprendizaje con programación

| P á g i n a 6

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.

Page 7: Andamiaje para aprendizaje con programación

| P á g i n a 7

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.

Page 8: Andamiaje para aprendizaje con programación

| P á g i n a 8

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.

Page 9: Andamiaje para aprendizaje con programación

| P á g i n a 9

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

Page 10: Andamiaje para aprendizaje con programación

| P á g i n a 10

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

Page 11: Andamiaje para aprendizaje con programación

| P á g i n a 11

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

Page 12: Andamiaje para aprendizaje con programación

| P á g i n a 12

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.

Page 13: Andamiaje para aprendizaje con programación

| P á g i n a 13

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.