Está en la página 1de 37

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar.

PROYECTO CUPI2 UNA SOLUCIN INTEGRAL AL PROBLEMA DE ENSEAR Y


APRENDER A PROGRAMAR

10 Premio Colombiano en Informtica Educativa


Categora Investigacin

Jorge Alberto Villalobos Salcedo

Universidad de Los Andes


Facultad de Ingeniera
Departamento de Ingeniera de Sistemas y Computacin
Bogot, Colombia
Julio 2009

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 2

RESUMEN
Las dificultades en la enseanza/aprendizaje de la programacin ha sido un
problema recurrente en los ltimos 20 aos en nuestro pas como en el mundo
entero. A lo largo del tiempo se han propuesto numerosas soluciones sin que
ninguna haya resultado realmente efectiva. A los problemas de motivacin de
los estudiantes se une la falta de un estudio a fondo de las habilidades que
deben adquirir, reduciendo muchas veces los cursos a un recorrido de
estructuras sintcticas de un lenguaje de programacin. Este documento
presenta una nueva aproximacin a la solucin del problema, en la cual se
mezclan un slido marco conceptual, una novedosa propuesta pedaggica y
una variedad de recursos construidos en el marco del proyecto Cupi2.

PALABRAS CLAVE Aprendizaje activo, comunidad de aprendizaje, enseanza


de la programacin, herramientas computacionales de apoyo a la educacin.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 3

PROYECTO CUPI2 UNA SOLUCIN INTEGRAL AL PROBLEMA DE ENSEAR Y


APRENDER A PROGRAMAR
El ciclo bsico de formacin en programacin se encuentra constituido por tres
cursos denominados por la ACM CS1, CS2 y CS3. Este ciclo completo lo toman
todos los estudiantes de los programas de pregrado en ingeniera de sistemas,
otros

programas

de

ingeniera

algunos

de

otros

programas

como

matemticas, fsica o biologa. El curso CS1 suele verse en primer semestre,


sin ningn requisito, lo cual implica un potencial desnivel de los estudiantes
que lo toman.
El objetivo de los cursos de programacin no es nicamente que el estudiante
aprenda a escribir un programa de computador. Estos cursos deben generar
una gran cantidad de habilidades en los estudiantes: ellos deben aprender a
entender un problema (abstraer, modelar, analizar), a plantear soluciones
efectivas (reflexionar sobre una abstraccin, definir estrategias, seguir un
proceso, aplicar una metodologa, descomponer en subproblemas), a manejar
lenguajes para expresar una solucin (codificar, entender y respetar una
sintaxis), a utilizar herramientas que entiendan esos lenguajes (programar,
compilar, ejecutar, depurar), a probar que la solucin sea vlida (entender el
concepto de correccin y de prueba), a justificar las decisiones tomadas
(medir, argumentar), etc. Estas son habilidades bsicas con las que debe
contar cualquier profesional en ingeniera.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 4

Desde hace aos existe una preocupacin en la comunidad acadmica por


estos cursos, debido a la alta tasa de mortalidad, al bajo nivel de motivacin
de los estudiantes y al alto porcentaje de desercin que lo anterior genera. Se
han propuesto algunas herramientas y enfoques pero ninguno parece dar una
respuesta integral a la problemtica. Las soluciones simples (cambiar de libro,
utilizar otro lenguaje de programacin, cambiar el orden de los temas, etc.) ya
han sido intentadas en infinidad de variantes sin que se logren mejoras
efectivas. A lo anterior se suma la creciente preocupacin nacional e
internacional por la disminucin en la demanda de admisin al programa de
ingeniera de sistemas.
El proyecto Cupi2 se inici en el ao 2004, con el propsito de buscar nuevas
maneras de aprender y de ensear a programar, haciendo nfasis en la
motivacin de los estudiantes y teniendo en cuenta todos los aspectos
involucrados en el problema. Cupi2 se plante desde un comienzo como un
proyecto multidisciplinario de investigacin y ha pasado por siete etapas
principales: (1) diagnstico, (2) definicin del marco conceptual, las hiptesis,
las variables, los indicadores y los instrumentos, (3) diseo de la propuesta,
(4) validacin de las hiptesis por medio de pilotos controlados, (5)
construccin de los materiales y herramientas de apoyo, (6) proceso de
formacin y acompaamiento de profesores y (7) creacin de una comunidad
de aprendizaje y difusin de resultados.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 5

Para lograr una solucin integral al problema planteado, se considera que se


deben tener en cuenta los siguientes aspectos, algunos de los cuales sern
tratados en ms detalle en secciones posteriores.
-

Un modelo pedaggico adaptado al perfil de los estudiantes actuales. Es


necesario volver a pensar a fondo la manera de ensear a programar,
utilizando para esto la estructura definida por los ejes conceptuales antes
identificados.

Un modelo de evaluacin orientado a la verificacin de las habilidades que


se han debido generar en los alumnos, que tenga en cuenta los diferentes
aspectos que hacen parte de la tarea de programar.

Un conjunto de materiales y herramientas de soporte al proceso de


aprendizaje.

Un mecanismo de seguimiento a los estudiantes que mida algunas variables


que indiquen el xito (o fracaso) del proceso de aprendizaje. Esto incluye la
definicin de dichas variables, el diseo de los instrumentos que permitan
recoger la informacin y la definicin de los mecanismos que utilicen lo
anterior para garantizar un proceso de mejoramiento continuo.

Un esquema de formacin de profesores, que les d una comprensin


global de la problemtica y que les permita participar de manera efectiva en
el proceso de aprendizaje de los estudiantes.

Un conjunto de herramientas de acompaamiento para los profesores, que


faciliten la planeacin de las clases, la comunicacin con los estudiantes, el

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 6

registro de los resultados obtenidos, el reporte de las actividades y logros,


el seguimiento, etc.
-

Una estrategia de difusin de conocimiento para los programas de


Ingeniera de Sistemas en Colombia. De acuerdo con esto, el proyecto
Cupi2 busca aportar al fortalecimiento de la industria de software
colombiana, a travs de la generacin y apropiacin de conocimiento en
comunidad.

Como proyecto de investigacin, Cupi2 ha seguido un proceso serio y


disciplinado, con resultados medibles y repetibles, y con publicaciones
internacionales que reportan las principales hiptesis de trabajo y los
mecanismos de validacin. Adicionalmente, todos los materiales desarrollados
como soporte han sido evaluados y mejorados de manera incremental, hasta
lograr en la actualidad un estado estable. El proyecto es actualmente eje de
referencia para el cambio curricular de muchos programas de Ingeniera de
Sistemas en Colombia.
Dentro de los objetivos de Cupi2 se contempla la propagacin de conocimiento
y experiencias derivadas del trabajo desarrollado en la Universidad de los
Andes de manera abierta para la comunidad acadmica. Dentro de este
objetivo, los recursos, estrategias y herramientas desarrolladas son puestos a
disposicin de estudiantes y universidades interesadas. Tambin se desarrollan
trabajos de soporte a la migracin y adaptacin de currculos en diversas
universidades, teniendo como referencia la experiencia de los 4 aos de
funcionamiento de Cupi2 en los Andes.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 7

Estado del Arte


Evidencias en altas tasas de mortalidad y de estudiantes trabajando bajo
condiciones de poca motivacin en los cursos de programacin [8], revelan la
necesidad de enfrentar el problema de la enseanza y el aprendizaje de la
programacin

desde

aproximaciones

alternativas.

Aunque

muchas

investigaciones se han presentado con diversas herramientas y estrategias de


soporte para enfrentar este problema [1] [13], ninguna de ellas ha presentado
resultados suficientes en cuanto a la articulacin de objetivos pedaggicos de
los cursos y experiencias positivas por parte de estudiantes y profesores.
Lo que a primera vista puede parecer un problema sencillo, como es la
enseanza de la programacin de computadores, en realidad es un tema con
mltiples facetas, que sigue siendo una lnea abierta de investigacin en la
mayor parte del mundo. Muchos enfoques y herramientas distintas han sido
propuestas en los ltimos diez aos [16] [3] [9], y sin embargo no parece
existir una solucin completamente satisfactoria. La aparicin del enfoque de
objetos, y el surgimiento de nuevos lenguajes de programacin, herramientas
y tecnologas, han introducido nuevos factores de dificultad a la ya compleja
labor de ensear a programar.
En la Universidad de los Andes, el curso de Introduccin a la Programacin es
obligatorio para 10 programas de pregrado (los 8 programas de ingeniera,
fsica, matemticas), lo que representa una poblacin semestral de cerca de
1200 estudiantes, repartidos en aproximadamente 30 secciones. Durante un
periodo de unos 10 aos, se utiliz el lenguaje de programacin C, y se

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 8

incluyen diversos elementos metodolgicos como definicin de precondiciones


y postcondiciones para la especificacin de los problemas. A partir de 1998, se
cre una variante de dicho curso, en la cual se introducen los conceptos
bsicos de la programacin orientada por objetos y se utiliza el lenguaje de
programacin C++. La justificacin de dicha variacin era que los estudiantes
(de ingeniera de sistemas) deban prepararse de manera diferente para
enfrentar los cursos que veran ms adelante en el rea de ingeniera de
software, y que el hecho de introducir desde el comienzo un lenguaje orientado
por objetos debera significar una ganancia en el proceso. Aprovechando esta
separacin, se introdujeron en dicha variante del curso algunos conceptos de
control de calidad [7] algunos conceptos bsicos de patrones de diseo [5] y
algunos conceptos de interfaces grficas. Los resultados, aunque satisfactorios
en algunos aspectos, no llenaron completamente las expectativas que se
tenan. Una alta tasa de desercin, unida a una alta tasa de mortalidad y a
algunos problemas evidentes de motivacin de los estudiantes, demostr que
estas estrategias seguan siendo incompletas.
En los ltimos 20 aos se adaptaron los cursos de programacin en la
Universidad

de

los

Andes,

tratando

de

seguir

las

ltimas

tendencias

tecnolgicas y teniendo en cuenta las distintas teoras e hiptesis sobre la


manera de ensear a programar. Se cambi muchas veces el orden de los
temas. Se utilizaron nuevos libros como texto gua. Inclusive se modific
muchas veces la estrategia pedaggica y se construyeron herramientas de
apoyo para el aprendizaje de los estudiantes. Se establecieron planes de

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 9

formacin de profesores, pero ninguna de estas variaciones prob tener una


mejora efectiva en los problemas.
Dificultades en la Enseanza de la Programacin
Por su misma naturaleza, un curso de enseanza de la programacin est
orientado a la generacin de habilidades, ms que a la simple exposicin de un
conjunto de conceptos. Si uno piensa en la cantidad de teora que hay detrs
de la programacin se sorprende del poco nmero de conceptos distintos y de
su simplicidad. Este hecho en s mismo no es un problema, a menos que el
nfasis del curso se haga en la exposicin de las definiciones y todo lo dems
se vuelva accesorio.
En un curso tpico de programacin, el profesor, despus de presentar en clase
los conceptos (o pedir que los estudiantes lean de un libro), responde las
preguntas que puedan surgir de dichas definiciones, y luego comienza a hacer
ejercicios en el tablero. Dicha manera de ensear a programar se basa en la
esperanza de que el estudiante sea capaz de detectar patrones en los
problemas planteados y los logre asociar con las tcnicas que usa el profesor
cuando desarrolla un ejemplo en el tablero, y que, luego, el estudiante sea
capaz de hacer la generalizacin adecuada en su cabeza, para poder aplicar
esa asociacin patrn-tcnica para resolver otros problemas. La nica tcnica
que se ensea en los cursos de programacin es dividir y conquistar y se
hace a un nivel de informalidad y vaguedad que no pasa de ser una buena
intencin.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 10

Este enfoque, que se puede llamar aprendizaje por imitacin, se basa en la


hiptesis de que el estudiante es capaz de generar las habilidades necesarias
tratando de imitar lo que el profesor hace. Esto tiene muchos problemas
implcitos, y explica una buena parte de las dificultades de ensear a
programar:
1. No se genera el vocabulario necesario para hablar de la manera de
construir un programa, puesto que las parejas patrn-tcnica slo se
manejan a un nivel intuitivo y jams se verifica su validez. nicamente se
genera vocabulario para hablar de las estructuras sintcticas de los
lenguajes de programacin, y esto dificulta en gran medida el apoyo que el
profesor puede darle al estudiante en caso de que tenga dificultades. En
otras palabras, ver la solucin de un problema en un libro, o ver al profesor
construyndola en el tablero, no garantiza la adecuada generacin de
habilidades en el estudiante. Y aunque en un porcentaje significativo de los
casos

este

enfoque

funciona

adecuadamente

(as

se

ha

enseado

programacin durante los ltimos 20 aos), el problema es que su xito


depende de factores que no controlamos. Esto hace que a los buenos
estudiantes les vaya bien, y a los malos estudiantes les vaya mal, sin
que los profesores puedan hacer nada al respecto.
2. Se da la sensacin de que el cmo hacer las cosas no es enseable, y que
es algo que depende de la inspiracin y del ingenio del programador. Esto
genera ansiedad en los estudiantes, puesto que al llegar a un examen no
saben si aquello que mgicamente se gener en su cabeza (y que no

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 11

pueden hacerlo explcito para validarlo) es suficiente para resolver el


problema que les van a plantear.
3. La calidad del curso es muy dependiente de la capacidad del profesor para
inducir a los estudiantes a aprender por imitacin. Claramente algunos
profesores son ms exitosos que otros en esta labor, pero no son capaces
de explicar dicho xito en trminos que puedan ser materializados en una
gua para profesores. Desde este punto de vista, se tiene la impresin de
que la habilidad de ensear con xito programacin tampoco es enseable.
4. No se controla la generalizacin que los estudiantes hacen a partir de lo
que ven en clase. En muchos casos llegan a establecer patrones
incorrectos, que slo se detectan en cursos ms avanzados.
Un curso tpico de programacin sigue un orden de abajo hacia arriba en la
presentacin de los conceptos. Se presentan primero los elementos de base
(tipos simples, operadores, expresiones, etc.) y luego, poco a poco, se van
introduciendo las estructuras de control, la construccin de funciones, el paso
de parmetros, los vectores, las matrices, etc. Slo al final del curso el
estudiante es capaz de construir un programa completo. Pocas veces se
alcanza a estudiar el tema de interfaces o de pruebas. Esta aproximacin tiene
varias consecuencias:
1. El estudiante no tiene una visin clara de la razn por la cual se introduce
un concepto, porque no le ve una necesidad real. Esto dificulta su proceso
de aprendizaje.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 12

2. Muchos de los temas que se ven resultan artificiales debido al tamao de


los problemas sobre los cuales se puede trabajar, y se envan mensajes
incorrectos con respecto a su verdadera utilidad. Si hacer la especificacin
formal de un problema toma el doble de lo que se necesita para
implementarlo y probarlo, puede llevar al estudiante a concluir que la
especificacin es una prdida de tiempo. Lo mismo sucede en algunos
casos con el clculo del invariante de un ciclo, o con la documentacin del
cdigo. El estudiante lo interpreta como caprichos del profesor, que
intentar cumplir una vez haya puesto a funcionar el programa.
3. Se necesita cubrir una gran cantidad de temas (un par de meses de
estudio) antes de poder hacer algo interesante con contexto, y que pueda
dar al estudiante la sensacin de que lo que est aprendiendo puede ser
til para su vida profesional. La mayora de los ejercicios que puede hacer
el profesor en el tablero corresponden a problemas puntuales sin contexto
(i.e. calcular el nmero de veces que aparece un elemento en un arreglo, o
insertar un elemento en una lista circular doblemente encadenada). Solo
hasta el final del curso es posible construir un programa, el cual no se
parece en nada a cualquier producto comercial que haya utilizado antes el
estudiante (una interfaz de consola, con datos no persistentes, etc.).
Adicionalmente, la labor de programar implica la introduccin de conceptos que
pertenecen a distintos ejes temticos. Se puede decir que para que un
estudiante sepa programar debe manejar algunos conceptos y habilidades de
los

siguientes

dominios

de

conocimiento:

modelaje

de

una

realidad,

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 13

especificacin

de

un

problema,

lenguajes

de

programacin,

uso

de

herramientas computacionales, algortmica, metodologa de programacin,


proceso de construccin de un programa (anlisis, diseo, pruebas), etc.

El

estudiante debera entender la programacin como el equilibrio de muchos


dominios, con relaciones profundas entre ellos, que permiten construir una
solucin a un problema expresada como un programa de computador.
Un curso de programacin puede estar estructurado siguiendo uno o varios de
estos ejes temticos. Los cursos tpicos de programacin estn muy guiados
por el eje asociado con el lenguaje, y los dems slo aparecen puntualmente
en algunas partes del curso. Esto hace que el curso (al igual que la mayora de
libros para esos cursos) est basado en un recorrido de las estructuras
sintcticas del lenguaje. Todos los dems aspectos que hacen parte de la labor
de programar, se ven de manera lateral, o sencillamente se ignoran.
Esta manera de estructurar el curso tiene como consecuencia que al estudiante
no se le da una visin real de lo que es programar. El estudiante le da
entonces

mucha

ms

importancia

los

elementos

del

lenguaje

de

programacin que al proceso de construir un programa (o a cualquier otro eje


temtico). En clase, por ejemplo, hay muchas ms preguntas ligadas al uso de
una librera en particular, que a la manera de especificar un problema. El
estudiante menosprecia algunos de los elementos que el profesor intenta
introducir de manera lateral al curso, y eso dificulta el proceso de enseanza.
Al final, el estudiante tiene la impresin de que aprendi un lenguaje, pero no
es consciente ni valora realmente las habilidades que gener en los dems

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 14

ejes. Por eso, en algunos casos, si el estudiante sabe que no va a utilizar en su


vida profesional el lenguaje de programacin que vio en el curso, siente que
est perdiendo el tiempo.
En la bsqueda de propuestas actuales frente al tema de innovar la enseanza
de la programacin, muchos autores concuerdan con la necesidad de integrar
la generacin de habilidades ms que la transmisin de conocimientos planos,
especialmente en el nivel de educacin superior. [10] [4].
La educacin en ingeniera es un campo con fuertes tradiciones, pero diversos
ejemplos de transicin de currculos que utilizan estrategias pedaggicas que
involucran a los estudiantes como agentes de generacin de su propio
conocimiento, han evidenciado la necesidad de cambio y la fuente de posibles
soluciones frente a dificultades en la enseanza de ingeniera [4].
Los Materiales y Herramientas de Soporte
Como parte importante de las estrategias que se desarrollan frente al
problema de ensear a programar, se encuentran las herramientas de soporte.
Principalmente herramientas de visualizacin y animacin de algoritmos
emergen en la dcada de los 80s para luego evolucionar en tecnologas
grficas

usadas

para

la

representacin

de

diferentes

conceptos

en

computacin. Los instructores y profesores han encontrado gran soporte en


estas herramientas cuando se mide el impacto que tienen en las sesiones de
clase y laboratorios [11]. Estas herramientas involucran a los estudiantes en
diversos niveles de compromiso con el aprendizaje.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 15

El anlisis de impacto de este tipo de estrategias sobre el proceso de


aprendizaje, ha resultado en experiencias que prueban que an con el
desarrollo de las mejores estrategias, stas slo acarrean aprendizaje cuando
se utilizan en un ambiente adecuado [11].
La Generacin de Conocimiento en Comunidad
Finalmente,

frente

la

necesidad

de

enfrentar

cambios

manejar

conocimiento de experiencias previas, muchas redes sociales virtuales han


aparecido en ambientes de enseanza desde sectores de la academia y
privados.
Sin embargo, estas redes estn principalmente orientadas sobre elementos de
interaccin social, ms que en el soporte directo que se pueda ofrecer al
proceso de aprender cmo ensear a programar. Un ejemplo de este tipo de
red en lnea es el sitio web TeachingToday [14]. Como los desarrolladores del
sitio web son conscientes de que las comunidades en lnea proporcionan una
abundancia de oportunidades para los educadores para compartir estrategias
de enseanza, ideas y mejores prcticas, se elabor un almacn en lnea de
consejos, herramientas y recursos que son fciles de utilizar y llamativos a
nivel pedaggico. Estos elementos tambin pueden encontrarse en la Red de
Educacin National Geographic [12]. Esta comunidad incluye informacin
acerca de oportunidades de desarrollo profesional, tales como talleres y
eventos en lnea a los que los miembros pueden asistir. Una de las ms
prometedoras redes en lnea es desarrollada en el sector privado por Yahoo:

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 16

Yahoo Teachers [15]. Esta red, diseada por y para los profesores, proporciona
un lugar en el que los docentes de todos los campos pueden crear, modificar y
compartir los planes de estudio basados en estndares.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 17

La Metodologa del Proyecto Cupi2


Cupi2 como proyecto de investigacin se encuentra soportado por cuatro
componentes que permiten la construccin de una solucin balanceada (Figura
1) frente problema de aprender a programar. Cada uno de estos componentes
ha sido validado en experiencias mundiales de enseanza de diferentes
campos de la ciencia, teniendo importante impacto en la educacin en
ingeniera como se presenta en [4].
Aprendizaje Activo
Este es el primer punto del modelo pedaggico propuesto. Puesto que se trata
de un curso donde la generacin y desarrollo de habilidades es fundamental, el
estudiante debe asumir un papel central en el proceso: debe ser el
protagonista principal del curso. Bajo el modelo de aprendizaje activo, los
estudiantes se comprometen con su propio aprendizaje. Esto cambia por
completo la estructura de las clases y laboratorios, y la manera como el
profesor participa en el proceso de aprendizaje del estudiante. El reto del
profesor es, entonces, definir un conjunto adecuado de escenarios en los
cuales el estudiante se sienta motivado para trabajar, con objetivos claros y
ligados de alguna manera con la evaluacin del curso.
Estos escenarios se construyen de manera que los estudiantes participan en
las clases no slo como receptores pasivos. La lectura, discusin, y proposicin
de soluciones, involucra al aprendiz en actividades de alto nivel como anlisis,
sntesis y evaluacin [2].

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 18

Aprendizaje Basado en Problemas y Proyectos (PBL)


Este es el segundo punto del modelo pedaggico propuesto. Se espera que los
estudiantes enfrenten problemas derivados de la baja motivacin, a travs del
aprendizaje basado en problemas que reflejan retos del mundo real. De esta
manera, el conocimiento y el desarrollo de habilidades se genera por medio de
la relacin que existe en partes especficas de un problema propuesto.
Al comienzo de cada nivel el profesor presenta el problema o ejercicio sobre el
que se va a trabajar. La diferencia entre lo que el estudiante sabe en ese
momento y lo que el estudiante necesita para resolverlo, es lo que lo motiva a
estudiar los temas nuevos. Al final del nivel, la evaluacin se hace en tres
partes: la revisin del ejercicio que cada estudiante entrega, un examen
escrito sobre el ejercicio y un examen prctico, que consiste en una extensin
al programa entregado por el estudiante. De esta manera, el ejercicio sirve
tanto para determinar el objetivo del nivel, como para evaluar los resultados
obtenidos. Debido a que los problemas siempre se escogen de manera que
tengan un contexto real, el estudiante se ve obligado a comprender un dominio
particular, a leer un texto y entenderlo, y a manipular abstracciones del mismo
para resolverlo.
Aprendizaje Incremental
Este es el tercer punto del modelo pedaggico propuesto. Cada uno de los tres
cursos del ciclo de programacin se encuentra dividido en 6 niveles, en cada
uno de los cuales se introducen conceptos nuevos en algunos de los ejes, se

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 19

refuerzan conceptos vistos en niveles anteriores y se aplican todas las


habilidades generadas hasta el momento en la solucin de uno o varios
problemas.
Esto remplaza la aproximacin tradicional en la que se estudian los temas de
abajo hacia arriba, hasta lograr tener todos los elementos necesarios para el
desarrollo de un programa. En nuestro enfoque, el estudiante, desde el primer
da de clase, comienza a programar, utilizando a nivel elemental algunos
elementos de los lenguajes de programacin y siguiendo un proceso que lleva
desde la etapa de anlisis hasta la etapa de implementacin. As como los
conceptos se van introduciendo de manera gradual y a distintos niveles de
profundidad,

el

estudiante

va

desarrollando

las

habilidades

de

forma

incremental, respetando siempre la estructura de la solucin.


En los primeros niveles el estudiante aprende a identificar los distintos
componentes de un programa, a leerlos, entenderlos y a completar las partes
que faltan para lograr que el programa funcione completamente. Para esto se
trabaja sobre programas incompletos, cuyas partes faltantes se pueden
construir con los conceptos y habilidades estudiados en el nivel.
Con la aproximacin propuesta se logra avanzar mucho ms en cada curso,
llegando a construir programas ms complejos, que estn lejos de lo que se
obtiene en un curso tradicional de programacin, con resultados a la vez
superiores en cuanto a motivacin y notas obtenidas por los estudiantes.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 20

Aprendizaje Basado en Ejemplos


El ltimo componente es el modelo de aprendizaje basado en ejemplos. De
acuerdo con este modelo los estudiantes tienen acceso a ejemplos de buenas
prcticas y soluciones comunes a problemas. El proyecto Cupi2 actualmente
provee ms de 150 ejemplos implementados y probados para sus estudiantes.
Marco Conceptual en el Diseo de Cursos
El marco conceptual est definido sobre los ejes alrededor de los cuales gira la
tarea de programar. Estos son: (1) modelaje y solucin de problemas, (2)
algortmica, (3) tecnologa y programacin, (4) herramientas, (5) procesos de
software, (6) arquitectura, y (7) tcnicas de programacin y metodologas. En
cada uno de estos ejes hay conocimientos y habilidades que se deben incluir
como parte de los cursos, a distintos niveles de profundidad (Figura 2).
Los cursos se encuentran divididos en niveles incrementales en los que se
exploran diferentes conocimientos y habilidades, al tiempo que se refuerzan
permanentemente los objetivos adquiridos en niveles anteriores. En cada uno
de los cursos y en cada uno de los niveles se encuentran elementos de los 7
ejes conceptuales, lo que permite la generacin integral de conocimientos y
habilidades (Figura 3).
Tecnologa y Herramientas en el Modelo Cupi2
La implementacin de la aproximacin propuesta requiri que se construyera
una gran cantidad de materiales de apoyo, los cuales podemos clasificar en

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 21

cuatro grandes grupos: (1) los libros, (2) el depsito de problemas y ejemplos,
(3) los entrenadores y (4) los tutoriales y laboratorios.
Los libros fueron publicados por una editorial internacional, para garantizar la
difusin del proyecto en toda Latinoamrica. En el depsito de problemas se
tienen en este momento ms de un centenar, dirigidos a los tres cursos de
programacin. Los problemas estn resueltos y sirven como base para
proponer los ejercicios que deben resolver los estudiantes. Los tutoriales y
talleres permiten al estudiante trabajar de manera autnoma sobre algunas
herramientas y problemas para resolver un conjunto de retos planteados. Los
entrenadores, por su parte, permiten al estudiante manipular conceptos
abstractos a travs de metforas, de herramientas de animacin de algoritmos
y de juegos (Figura 4). Actualmente se cuenta con cerca de cuarenta
entrenadores para los tres cursos de programacin. Todos los materiales
mencionados son de acceso pblico desde el portal del proyecto adems de
publicarse peridicamente en el Banco de Objetos de Aprendizaje Colombia
Aprende

(http://www.colombiaaprende.edu.co/objetos/),

utilizando

como

estndar de descripcin el modelo IEEE LOM. Ejemplos de esta caracterizacin


se presentan en el archivo anexo de produccin derivada del proyecto.
Adicionalmente, como parte de la propuesta innovadora de Cupi2, cada
semestre se incorpora nuevos recursos de apoyo para el diseo de clases y la
presentacin de los niveles de los cursos de programacin. Estos recursos
buscan responder de forma creativa a problemas especficos de cada nivel y

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 22

ser una forma novedosa de presentar ejemplos concretos que alimentan las
explicaciones de clase.
Muchos de estos recursos hacen parte del proceso de difusin del proyecto,
permitiendo a los profesores nuevos o aquellos que desean hacer parte de la
comunidad Cupi2, la presentacin de algunos de los miembros actuales. Como
ejemplo de los materiales incluidos en el ltimo ao se contempla videos,
mapas mentales y un buscador sintctico sobre los mapas (Figura 5).
El Desarrollo de una Solucin Integral
El enfoque propuesto en Cupi2, ms que una solucin terminada, representa
un espacio de soluciones posibles, adaptables a los contextos y necesidades de
los profesores de las distintas universidades. Cada profesor, teniendo en
cuenta los objetivos pedaggicos de cada nivel en cada eje, y contando con
todos los recursos del proyecto, debe disear una estrategia de trabajo con sus
estudiantes. Se evita toda camisa de fuerza para los profesores y se los hace
partcipes de un proceso de aprendizaje colectivo, soportado por un depsito
de conocimientos, por un conjunto de herramientas de apoyo a la preparacin
de clase, por una serie de tutoriales de induccin y acompaamiento y por
mecanismos de comunicacin entre ellos.
Como se justifica anteriormente, existen diversas dificultades en la enseanza
de la programacin que han promovido el uso de novedosas estrategias
pedaggicas. Sin embargo, los cambios en planes de educacin requieren ms
que el trabajo alrededor del proceso de aprendizaje de los estudiantes. Actores

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 23

como profesores y facultades de ingeniera, soportan la administracin del


conocimiento que se genera en las comunidades acadmicas y en consecuencia
el mejoramiento en la enseanza. Como solucin frente al reto de soportar
estos diversos actores que participan en la enseanza de la programacin, el
proyecto Cupi2 propone la integracin de una comunidad de enseanza que
permita el intercambio de estrategias, centralice el conocimiento grupal y
ofrezca soporte a las necesidades de comunicacin que esto conlleva.
La comunidad virtual de profesores Cupi2 es la red social de educadores (a
nivel nacional e internacional) que se apoyan en el proyecto Cupi2 para el
diseo y desarrollo de sus cursos de programacin. La comunidad se encuentra
soportada por un conjunto de herramientas que permiten la interaccin de los
miembros, el intercambio de materiales de trabajo y la unin de experiencias
de cada participante.
Esta comunidad nace como respuesta a la necesidad de la difusin de
conocimiento y estrategias que se desarrollan alrededor del proyecto Cupi2.
Dentro

del

proyecto

se

contemplan

las

conferencias,

capacitaciones,

acompaamiento y planes de tutora para universidades interesadas en la


reforma de la enseanza de la programacin [6]. Como consecuencia de esto,
decenas de conferencias se han realizado en diferentes regiones colombianas,
actualmente se encuentran activos varios programas de acompaamiento a
universidades que quieren incluir el proyecto en su currculo y, finalmente se
encuentra la comunidad virtual para que las fronteras geogrficas no sean

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 24

lmite en la difusin de experiencias que los diferentes participantes e


interesados quieren aportar.
Actualmente la comunidad Cupi2 integra ms de 25 universidades en Colombia
y algunos institutos en el resto del mundo, en donde la enseanza de la
programacin se realiza a travs de la metodologa Cupi2. El intercambio de
las experiencias de cada uno de nuestros miembros, permite la continuidad,
evolucin y crecimiento del proyecto.
A continuacin se presentan las principales caractersticas de la comunidad
virtual de profesores y las herramientas de soporte para los procesos de
induccin, acompaamiento, diseo de niveles y publicacin de experiencias
que permiten la dinmica de difusin y apoyo a los profesores participantes en
este proyecto.
1. El Portal
El sitio web de Cupi2 ( http://Cupi2.uniandes.edu.co ) es una herramienta que
integra el trabajo de difusin del proyecto, la herramienta de publicacin
semestral de trabajo para los estudiantes, las herramientas de soporte
administrativo y la entrada al portal de la comunidad virtual.
En el portal converge el trabajo de todos los actores en Cupi2. Existen
ejemplos, ejercicios, entrenadores, tutoriales y

videos de apoyo entre otros

recursos disponibles para los estudiantes, espacios exclusivos para profesores


que necesitan planear y organizar cursos y espacios para coordinadores que se

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 25

encargan de administrar y asegurar la disponibilidad de los recursos a la


comunidad (Figura 6).
2. Depsito de Recursos
Uno de los propsitos de la comunidad es permitir el intercambio de materiales
y experiencias que contribuyan nuevas ideas, ejemplos, ejercicios y todo tipo
de material para el diseo de clases y la induccin de nuevos profesores.
Actualmente el depsito de la comunidad cuenta con:
-

Depsito de bitcoras, en donde los profesores registran en cada nivel del


curso la preparacin de las clases y los resultados obtenidos. Esta
informacin est abierta para consultas de otros profesores. Se encuentran
registradas en este momento cerca de 1000 bitcoras (desde 2005-1),
clasificadas por profesor, curso y nivel.

Depsito de materiales, en donde los profesores dejan copia de los


enunciados de sus exmenes, hojas de trabajo desarrolladas en clase,
presentaciones, enunciados de laboratorios, etc. Esta informacin est
abierta para consultas de otros profesores. En este momento se encuentran
registrados ms de 4200 documentos.

Depsito de materiales de induccin para la formacin de profesores


nuevos.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 26

Todos estos recursos se encuentran clasificados y presentados por cursos,


niveles, tipo de material, zonas de trabajo (profesores o estudiantes) en el
portal de Cupi2.
3. Secuencias de Aprendizaje
Las secuencias de aprendizaje son

el diseo del conjunto de actividades y

recursos con los que un profesor organizar cada nivel de su curso. Todos los
miembros de la comunidad de profesores pueden consultar todos los depsitos
de recursos y proponer las actividades de cada clase. Al finalizar las clases
pueden registrar la bitcora con el resultado de su experiencia.
Cada secuencia sirven de apoyo a los profesores que se enfrentan al reto de
dictar estos cursos por primera vez y adems como registro histrico de
experiencias (Figura 7).
4. Espacios y Cursos
Como herramienta para la organizacin de documentos, los profesores de la
comunidad cuentan con espacios virtuales para almacenamiento de sus
recursos. Estos espacios se disean para mantener la estructura de los
recursos de la comunidad de forma que siempre se pueda encontrar el material
necesitado (Figura 8).
5. Buscador de Recursos
El buscador de recursos y secuencias de aprendizaje permite la consulta de
todos los materiales, bitcoras, diseos de clase, etc. que se han registrado en

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 27

la comunidad a travs de los espacios, de los cursos y de las secuencias de


aprendizaje. De esta manera los nuevos integrantes tienen acceso fcil y
rpido al historial de experiencias y materiales tiles para el diseo de sus
clases (Figura 9).
6. Estadsticas
La comunidad tiene acceso al sistema de informacin con resultados
estadsticos de los cursos del ciclo bsico de programacin desde 2003. Hay
una base de datos con toda la informacin necesaria para hacer el seguimiento
de los indicadores. Es posible, por ejemplo, hacer todo el seguimiento teniendo
en cuenta el programa de los estudiantes que toman el curso (Figura 10).

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 28

Resultados
Para el seguimiento del proyecto se definieron 4 indicadores principales: (1)
los resultados de la encuesta que la universidad de los Andes hace a los
estudiantes cada semestre, en la cual se evalan 11 preguntas con respecto al
profesor. (2) los resultados

de la misma encuesta en la cual se incluyen 6

preguntas sobre el curso, (3) la nota promedio obtenida por los estudiantes del
curso y (4) el porcentaje de estudiantes que pierde el curso.
Comparando los valores histricos con el promedio de los semestres en los
ltimos dos aos, donde los resultados son comparables porque tienen el
mismo tipo y volumen de estudiantes, se pudo concluir que:
-

La evaluacin que los estudiantes hacen sobre la percepcin de los


profesores aument casi en un 6%.

La evaluacin que los estudiantes hacen sobre la percepcin del curso,


aument en ms de un 20%.

La nota promedio de los estudiantes aument en ms del 11%.

El nmero de estudiantes que pierde el curso disminuy en un 50%.

Adicionalmente, para resaltar el crecimiento del proyecto y el impacto que este


ha tenido desde su inicio, a continuacin se describen algunas mtricas de
tamao (calculadas hasta diciembre de 2008):
Primero, se muestra el impacto del proyecto en nmero de estudiantes,
profesores y universidades que se han involucrado desde el 2005 (Tabla 1).

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 29

A continuacin se mide el tamao del proyecto en trmino de los recursos de


aprendizaje que se encuentran almacenados en el repositorio de la comunidad
de profesores, los cuales son el resultado de las contribuciones realizadas por
miembros de esta comunidad y el desarrollo de ejercicios y ejemplos en la
Universidad de los Andes (Tabla 2).
Como tercera mtrica se presenta el tamao del proyecto desde la perspectiva
de desarrollo de software. Alrededor de medio milln de lneas de cdigo y ms
de 1000 documentos se han construido para los ejemplos, entrenadores,
ejercicios, tutoriales y herramientas de soporte (Tabla 3).
Como medida del crecimiento de la comunidad de profesores, se muestra el
tamao de dicha comunidad en trminos del nmero de bitcoras de
experiencias y secuencias de aprendizaje que han sido desarrolladas por los
profesores que participan activamente en la ella, y que sirven como soporte
para el ingreso de nuevos miembros continuamente (Tabla 4).
Finalmente se describe el impacto del proyecto calculando el nmero de visitas
del portal Cupi2. Debido a que los recursos del proyecto se encuentran
actualmente en espaol, y a que la mayora de los miembros de la comunidad
se encuentran distribuidos en universidades colombianas, los datos obtenidos
describen este mismo fenmeno (Tabla 5).
Adicionalmente, como resultado del objetivo inicial de Cupi2 para convertirse
en fuente de conocimiento y estrategia de difusin en la educacin de la
programacin

en

Colombia,

decenas

de

conferencias,

programas

de

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 30

acompaamiento, intercambio de profesores y estudiantes quienes participan


como actores directos del proyecto en las instalaciones de la Universidad de los
Andes, se han realizado y se pueden evidenciar en el documento anexo de
produccin derivada.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 31

Conclusiones
Una de las principales conclusiones a las que se lleg en la etapa de
diagnstico es que el problema de ensear a programar es complejo y que
cualquier solucin que se proponga debe contemplar soluciones integrales a los
distintos componentes del problema. El proyecto Cupi2 ha logrado articular su
propuesta alrededor de seis dimensiones principales, como se ilustra en
(Figura 11).
Estas dimensiones incluyen: (1) un modelo pedaggico, (2) un conjunto de
materiales de soporte al proceso de aprendizaje de los estudiantes, (3) un
conjunto de mecanismos de seguimiento y mejoramiento continuo, (4) un
modelo de evaluacin, (5) un proceso de formacin de profesores y (6) un
conjunto de herramientas de apoyo a los profesores. Todo lo anterior
soportado por el marco conceptual definido como parte del proyecto. El modelo
pedaggico, por su parte, se basa en cuatro estrategias: (1) aprendizaje
activo, (2) un enfoque basado en problemas, (3) aprendizaje incremental y (4)
un modelo de aprendizaje por ejemplo.
Es en el equilibrio y sincronizacin de todo lo anterior, lo que el proyecto Cupi2
ha logrado construir como una solucin exitosa para enfrentar el problema de
ensear a programar.
Con respecto al impacto del proyecto en el desarrollo de la carrera de
Ingeniera de Sistemas, es claro que los cursos de programacin son
fundamentales en la formacin de ingenieros. Ante la rpida evolucin que

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 32

debe soportar la carrera, es indispensable contar con una base muy slida en
cuanto a las habilidades necesarias para resolver problemas usando un
computador. Con el proyecto Cupi2 se ha logrado que los cursos de
programacin soporten mejor al resto de cursos del currculo, dando al
estudiante una visin global de la problemtica de construccin de software y
permitiendo obtener resultados que antes se encontraban restringidos a cursos
ms avanzados. La mortalidad en los cursos ha disminuido hasta en un 50%, a
la vez que la motivacin de los estudiantes (medida a travs de las encuestas
de la Universidad) ha aumentado en ms del 20%. Los estudiantes terminan
los cursos con una actitud mucho ms positiva con respecto a lo que quiere
decir desarrollar software y con una visin global de todas las oportunidades
que all se pueden encontrar.
Adicionalmente,

todos

los

resultados

del

proyecto

Cupi2

son

pblicos

(http://Cupi2.uniandes.edu.co) y se encuentran apoyando en este momento


un buen nmero de universidades colombianas. Otra importante conclusin del
trabajo realizado en los ltimos 5 aos de proyecto es el impacto en la
comunidad acadmica que Cupi2 puede soportar.
En este momento los libros desarrollados (Figura 12) en el marco del proyecto
se encuentran a la venta en 11 pases de Latinoamrica. Se espera por esta
razn que el impacto del proyecto trascienda las fronteras del pas y se
consolide a nivel Latinoamericano. Incluso algunos materiales se encuentran
en proceso de traduccin al idioma ingls con el fin de lograr una mayor
difusin de los mismos.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 33

Dada la importancia que tiene la industria de software para un pas como


Colombia, el proyecto Cupi2 tiene tambin el potencial de convertirse en un
apoyo estratgico para las empresas. Entre ms slida sea la formacin de los
ingenieros de sistemas, ms competitivos sern a nivel internacional, creando
mayores oportunidades tanto para ellos como para las empresas en las que
trabajen.
Frente al carcter creativo e innovador de la solucin que se present, con el
proyecto Cupi2 se hace un aporte novedoso y significativo a un problema
compartido por la mayora de universidades. El diseo vertical de los cursos
permite que se introduzcan desde muy temprano algunos temas y habilidades
fundamentales, que en los currculos actuales se introducen muy tarde en la
carrera. Esto tiene un impacto directo en la profundidad de la formacin que se
logra.
Cupi2 hace un uso efectivo de las nuevas tecnologas y de las nuevas
tendencias en enseanza para proponer una solucin innovadora, abierta a
toda la comunidad.
Finalmente, Cupi2 acaba de completar 4 aos de trabajo continuo, en el cual
han participado profesionales de distintos dominios. Se han invertido cerca de
mil millones de pesos en la construccin de la solucin. Se han desarrollado
ms de 500.000 lneas de cdigo en la implementacin de las herramientas de
apoyo y en la comunidad de aprendizaje. Se cuenta en el momento con ms de
400

objetos

de

aprendizaje

entre

tutoriales,

laboratorios,

frameworks,

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 34

entrenadores y ejemplos. Ms de 1.200 estudiantes por semestre y 45


profesores utilizan los resultados del proyecto en la Universidad de los Andes.
Se han dictado conferencias de difusin en universidades de todas las regiones
colombianas.
Todo el software desarrollado es en s mismo un ejemplo de calidad: se siguen
estndares claros, se cuenta con pruebas automticas unitarias, se tienen
documentos detallados de anlisis y diseo, se hace un uso correcto de los
lenguajes de programacin y de modelado, se sigue un proceso de inspeccin
y validacin, etc. Cada herramienta de entrenamiento cuenta con un manual
de uso e instalacin (en los casos en los que esto aplica), es fcil de utilizar y
es efectivo en el momento de generar las habilidades necesarias en los
estudiantes.
El modelo planteado por el proyecto Cupi2 tiene una slida base conceptual e
integra soluciones novedosas a las distintas facetas involucradas en el
problema. Es un proyecto con resultados exitosos, con un enorme potencial en
Latinoamrica y con un claro impacto positivo en cualquier currculo de
ingeniera de sistemas. Puesto que todos los materiales desarrollados son de
acceso pblico, est previsto que beneficie a toda la comunidad acadmica
latinoamericana como ha venido hacindolo en la comunidad colombiana.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 35

Referencias
[1]

BlueJ.

The

Interactive

Java

Environment.

Disponible

en:

http://www.bluej.org/. (Consultado en Mayo de 2008).


[2] Bonwell C, Eison J., 1991. Active Learning: Creating Excitement in the
Classroom . Jossey-Bass publishers.
[3] Cassola, E. Elaboracin de material educativo para la formacin de
profesionales

en

desarrollo

de

software.

Congreso

Iberoamericano

de

Educacin Superior en Computacin (CIESC), Conferencia Latinoamericana de


Informtica (CLEI). Per, 2004.
[4] De Graff, E., Kolmos, A. Management of Change. Implementation of
Problem-Based and Projec-Based learning in Engineering. Sense Publishers
2007.
[5] Gamma, E., Helm R., Johnson R., and Vlissides J. Design Patterns:
Elements of Reusable Object-Oriented Software. Addison-Wesley. 1995.
[6] Herrera, J., Giraldo, O. Apropiacin de Conocimiento en Instituciones de
Educacin

Superior

Privadas:

Factores

Inhibidores

Potencializadores,

Paradigma: Revista Electrnica en Construcccin de Software, Bogot Colombia, Noviembre 2008.


[7] Humphrey, W.S. Introduction to the Personal Software Process. SEI Series
In Software Engineering. Addison-Wesley. 1997.

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 36

[8] Jenkins T., 2001. The motivation of students of programming. Proceedings


of the 6th annual conference on Innovation and technology in computer
science education, Canterbury, United Kingdom 2001.
[9] Klling, M. The Problem of Teaching Object-Oriented Programming, Part 1:
Languages. Journal of Object-Oriented Programming. Vol. 11, No. 8, pp 8-15.
1999.
[10] Lopez, M., Whalley, J., Robbins, P., and Lister, R. 2008. Relationships
between reading, tracing and writing skills in introductory programming.
Proceedings of the Fourth international Workshop on Computing Education
Research (Sydney, Australia, Septiembre 06 - 07, 2008)
[11] Naps, T. L., Robling, G., Alstrum, V.,
Hundhausen, C. ,

Korhonen, A.,

Malmi, L.,

Dann, W., Fleischer, R.,


McNally, M., Rodger, S., and

Velsquez-Iturbide. Exploring the role of Visualization and Engagement in


Computer Science Education. En: Working Group Reports from ITiCSE on
Innovation and Technology in Computer Science Education, pginas 131-152.
New York, NY, USA, 2002.
[12] NatGeo. National Geographic Education Network Workshops, Forums
and more. Disponible en: http://www.ngsednet.org/. (Consultado en
Noviembre de 2008).
[13]

Robocode.

The

open

source

educational

game.

Disponible

http://robocode.sourceforge.net/. (Consultado en Mayo de 2008).

en

Cupi2 Una Solucin al Problema de Aprender/Ensear a Programar. 37

[14] TeachingToday. Teaching Tips, lesson plans and more, disponible en:
http://teachingtoday.glencoe.com/. (Consultado en Noviembre de 2008).
[15]

Yahoo

Teachers.

Yahoo

Teachers!

disponible en: http://teachers.yahoo.org/.

Your

passion,

our

technology,

(Consultado en Noviembre de

2008).
[16] Zhu, H. and Zhou, M. Methodology First and Language Second: A Way to
Teach Object-Oriented Programming. OOPSLA03. Anaheim, CA., october 2003.

También podría gustarte