PLANIFICACIÓN COLABORATIVA DEL DISEÑO PARA EL APRENDIZAJE DE LA PROGRAMACIÓN Miguel A. Redondo Departamento de Informática Universidad de Castilla – La Mancha España [email protected] Antonio J. Mendes Departamento de Engenharia Informática Universidade de Coimbra Portugal [email protected] María J. Marcelino Departamento de Engenharia Informática Universidade de Coimbra Portugal [email protected] Crescencio Bravo Departamento de Informática Universidad de Castilla – La Mancha España [email protected] Manuel Ortega Departamento de Informática Universidad de Castilla – La Mancha España [email protected] RESUMEN Los sistemas que desplazan el énfasis del proceso de enseñanza y aprendizaje hacia el aprendiz situado en el contexto de una comunidad que trabaja conjuntamente compartiendo herramientas, ideas y experiencias se consideran eficientes y efectivos para el proceso de construcción del conocimiento. Las nuevas tecnologías deben facilitar la implantación de este tipo de sistemas para el aprendizaje presencial y a distancia. En este trabajo nos planteamos describir cómo el concepto de Planificación Colaborativa del Diseño introducido en el entorno DomoSim-TPC puede aplicarse al aprendizaje de la programación. Del mismo modo, señalamos los cambios más significativos que debe sufrir dicho entorno y qué herramientas debería integrar para soportar el aprendizaje en grupo de la programación, con el objetivo de construir un prototipo que nos permita realizar experiencias entre la Universidad de Coimbra (Portugal) y la Universidad de Castilla – La Mancha (España) y obtener conclusiones sobre la efectividad de dicho concepto. INTRODUCCIÓN Las herramientas que sitúan el énfasis del proceso de aprendizaje en el aprendiz, convirtiéndolo en un agente activo de dicho proceso, se consideran entornos efectivos y eficientes, ya que facilitan la consecución de los objetivos didácticos con precisión y plenitud en relación a los recursos empleados. Los trabajos realizados por de Jong y sus colaboradores (de Jong, van Joolingen, Pieters & van der Hulst, 1993) en torno a los sistemas que potencian el aprendizaje por descubrimiento, materializan y demuestran la afirmación anterior. En este sentido, algunos entornos de diseño y simulación como el entorno SMISLE (de Jong, van Joolinger & King, 1997) constituyen una referencia excelente. Sin embargo, un entorno de diseño y simulación por sí solo no ofrece un método de aprendizaje adecuado, debido a que el proceso lo dirige la persona que está aprendiendo. Además, en estos entornos, por lo general, no queda registrada la estrategia y los pasos de resolución que el alumno va trazando. Es necesario controlar la excesiva libertad que ofrecen los sistemas de simulación durante la fase de diseño del modelo a estudiar, que en un número considerable de casos conducen al aprendiz a una situación de fracaso. Para resolver este problema, Bonar fundamenta la solución a un problema de diseño en el seguimiento de una serie de pasos de refinamiento sucesivo, que van desde una idea expresada en términos de lenguaje natural hasta la solución concreta (Bonar & Cunningham, 1988). Otros trabajos proponen posturas intermedias entre los postulados de Bonar y la libertad ofrecida por los métodos basados en simulación (Bravo, Ortega & Verdejo, 1999). En particular, proponen añadir a los entornos de modelado la posibilidad de que el alumno planifique sus acciones de diseño, a modo de lenguaje de representación intermedio (Soloway, 1986). El proceso de planificación del diseño se monitoriza utilizando una memoria de conocimiento proporcionada por expertos en el dominio, convirtiendo la relación entre computador y estudiante en una metáfora de la que hay entre profesor y alumno. De esta forma, es posible obtener mejores respuestas a los problemas planteados. El sistema puede comparar las soluciones propuestas por el alumno con las propuestas por el experto, ambas expresadas en un lenguaje de representación intermedio, lo que facilita que dicha comparación se centre en aspectos relevantes, descartando otros menos significativos. Tanto las acciones de planificación como las de diseño y simulación, con la oportuna estructuración, se pueden registrar en el sistema. Así, el profesor u observador, con ayuda del sistema, puede reconstruir el razonamiento seguido por el alumno (Boder, 1992). Las ideas de planificación del diseño y monitorización se han aplicado y validado como solución intermedia a problemas en dominios de aprendizaje del diseño de instalaciones domóticas (Bravo, 1999). Las teorías anteriores estaban planteadas desde un punto de vista de aprendizaje individual y no consideraban el concepto organizativo y social del aprendizaje, y por extensión de trabajo en grupo. Para solventar estas deficiencias nos apoyamos en los principios del paradigma CSCL (Computer Supported Collaborative Learning) (Koschmann, 1996), basado en una visión sociocultural de la cognición para enriquecer los contextos interpersonales del aprendizaje. De este modo, entendemos el aprendizaje como un proceso social y distribuido, donde se tiene en cuenta, además de los productos generados, el diálogo de los participantes que se produce de forma cooperativa en una actividad de aprendizaje. En este proceso, tanto el profesor como la tecnología, tienen un papel mediador de facilitación cognitiva y social. Siguiendo con el trabajo iniciado por Bravo y con el objetivo de enriquecer el proceso de aprendizaje las aportaciones que se derivan del Aprendizaje Colaborativo como modelo de instrucción (Vygotsky, 1978; Slavin, 1983) se desarrolló DomoSim-TPC1 (Bravo et al, 2000). Este sistema está destinado a dar soporte para el aprendizaje colaborativo del diseño domótico a distancia mediante la resolución de actividades de resolución de problemas (Jonanssen, 2000; Redondo et al, 2003). Estos problemas requieren la planificación de una solución, el desarrollo de la misma y su simulación para verificar que satisface una especificación inicial. Actualmente, nos planteamos aplicar el concepto de Planificación Colaborativa del Diseño tal y como se interpreta en DomoSim-TPC a otros dominios. En particular, pretendemos estudiar cómo aplicarlo para el aprendizaje en grupo de la programación estructurada y los cambios necesarios en la arquitectura del sistema anteriormente desarrollado para soportarlo. 1 http://chico.inf-cr.uclm.es/domosim En el siguiente apartado se describen algunas herramientas destinadas al aprendizaje de la programación desde un punto de vista individual. Seguidamente describimos el concepto de Planificación Colaborativa del diseño y cómo se materializa en DomoSim-TPC. A continuación se discute la forma en que la infraestructura desarrollada para el sistema anterior puede adaptarse y emplearse para el aprendizaje en grupo de la programación. Finalmente terminamos destacando algunas conclusiones derivadas de este estudio y apuntando líneas de continuación de este trabajo. ANTECEDENTES EN MATERIA DE APRENDIZAJE DE LA PROGRAMACIÓN Aprender a programar es un proceso difícil y para que un alumno inexperto se convierta en un buen programador tendrá que adquirir una serie de habilidades. Contrariamente a lo que muchos alumnos inicialmente piensan, aprender a programar es algo más que aprender la sintaxis de un lenguaje de programación. Esto último, normalmente, es la parte más fácil. La experiencia ha demostrado que las mayores dificultades observadas en los alumnos residen en su baja capacidad de utilizar esos lenguajes para escribir programas que resuelvan problemas de forma eficaz. Simplemente, la aplicación de nociones básicas como las estructuras de control o el diseño de algoritmos que resuelvan problemas concretos, genera desafíos difíciles de superar para muchos estudiantes. Estas dificultades aparecen con independencia del lenguaje o del paradigma de programación utilizado (procedimental, orientado a objetos, etc.). Las razones para estas dificultades son muy variadas. Muchos autores pretenden identificarlas para buscar soluciones a las mismas y facilitar el aprendizaje de la programación. Por ejemplo, Gomes & Mendes (1999) señalan algunas posibles razones: Exigencia de un nivel de abstracción elevado; Necesidad de un buen nivel de conocimiento y práctica de técnicas de resolución de problemas; Exigencia de una visión muy práctica que difiere de otras disciplinas que se basan en nociones teóricas muy dependientes de la lectura y memorización; Las metodologías tradicionales de enseñanza pretenden el aprendizaje de conceptos dinámicos utilizando materiales de carácter estático; Los lenguajes de programación emplean sintaxis complejas y no recurren a representaciones visuales que proporcionan mayor comprensión; La existencia de alumnos con niveles de conocimiento muy diferentes lo cual se traduce en ritmos de aprendizaje muy variados y tal vez descompensados; La imposibilidad de un acoplamiento individualizado a cada alumno, debido a que los grupos de alumnos son muy grandes. Muchos profesores e investigadores se preocupan por la búsqueda de estrategias que le permitan reducir algunas de estas dificultados, intentando contribuir a un mejor aprendizaje de sus alumnos. El trabajo realizado por el grupo de la Universidade de Coimbra se centra en la búsqueda de herramientas que faciliten el aprendizaje de los alumnos. El hecho de que los programas sean entidades inherentemente dinámicas sugiere que sus operaciones e interacciones sean, en general, descritas por medio de representaciones visuales dinámicas. Así, la utilización de herramientas de visualización, animación y simulación parece ser una apuesta natural para facilitar la comprensión de su funcionamiento. Estas herramientas se fundamentan en el mapeado de representaciones computacionales en representaciones visuales que permiten concretizar cuestiones abstractas, eligiendo técnicas de codificación que maximicen las posibilidades de comprensión y comunicación humana. De esta forma es posible permitir que los alumnos observen y perciban visualmente la forma en que funciona un determinado algoritmo. Además de comprender el funcionamiento de los programas hechos por otras personas, los alumnos también deben ser capaces de elaborar soluciones a problemas propuestos. Esta es claramente la gran dificultad para muchos de ellos. La utilización de sistemas de visualización puede, también en este caso, ser muy útil, permitiendo al alumno visualizar la forma en que se comporta su algoritmo, detectar errores, corregirlos y así aprender. De hecho, en programación como en otros campos, un error detectado supone una oportunidad de aprender, por lo que resulta fundamental ofrecer a los alumnos esta posibilidad. Estamos convencidos de que las herramientas de visualización, animación y simulación de programas facilitan esta tarea. Basados en esta convicción, durante los dos últimos años hemos desarrollado tres herramientas: EDDL, destinado a servir de apoyo en el aprendizaje de algoritmos que utilizan Estructuras de Datos Dinámicas y Lineales, SICAS que intenta facilitar el aprendizaje de conceptos básicos de programación procedimental, y OOPANIM que es un entorno destinado al aprendizaje de conceptos básicos de programación orientada a objetos. A continuación se describen brevemente estos tres sistemas. El sistema EDDL EDDL fue desarrollado con el objetivo de apoyar a los alumnos en la adquisición de conceptos fundamentales sobre estructuras de datos dinámicas lineales, principalmente: pilas, colas y listas lineales. El entorno está organizado en los siguientes módulos: Conceptos introductorios, Pilas, Colas; Listas lineales y ejercicios. El módulo de “Conceptos introductorios” incluye un conjunto de pequeños textos y algunas imágenes relativas a los principales conceptos relacionados con las estructuras de datos lineales, los tipos de datos abstractos (TADs) y las cuestiones principales relacionadas con su implementación (estática y dinámica). Los módulos relativos a las pilas, colas y listas se centran es las propias estructuras, tanto en lo que respecta a su implementación estática como dinámica. En estos módulos se analizan con detalle cada una de las operaciones más habituales, tales como la creación, la inserción y eliminación de elementos o la verificación del estado de la estructura (vacía, llena, etc.). Además, de los apartados de explicación teórica y simulación gráfica de las operaciones, cada uno de los anteriores módulos permite acceder a una sección de ejercicios relativos a la implementación de las operaciones estudiadas y a una sección de ejercicios relativos a los algoritmos que típicamente utilizan estas operaciones. Los ejercicios, básicamente, consisten en completar parte del código para una determinada operación o de un algoritmo que la utiliza. Una forma que consideramos útil para ayudar a un alumno en el proceso de aprendizaje de la programación consiste en presentarle programas para que los lea, que pueden estar incompletos o contener errores, y pedirle que lo complete o lo corrija. El entorno SICAS El entorno SICAS tiene como objetivo reforzar el aprendizaje de conceptos básicos de programación procedimental, como son conceptos de selección y repetición. En particular, se persigue ayudar al desarrollo en los alumnos de capacidades para utilizar estos conceptos de resolución de problemas computacionales. SICAS no incluye contenidos teóricos sino que constituye un entorno para que los alumnos desarrollen sus habilidades mediante la experimentación y el descubrimiento, permitiendo el diseño y la simulación animada de algoritmos simples. De la observación y el análisis de la simulación de los algoritmos creados. Los alumnos pueden detectar errores eventuales, buscar su origen, corregirlos y de esta forma aprender. En nuestra opinión, estas actividades mejoran las habilidades de resolución de problemas, y en consecuencia, la capacidad para crear programas. SICAS permite la creación y edición de algoritmos para resolver un determinado problema, de modo que el alumno puede verificar como funcionaría el algoritmo si estuviese codificado en un lenguaje de programación. Los algoritmos se especifican mediante representaciones visuales: diagramas de flujo. Así, se emplean símbolos gráficos para representar las principales estructuras de construcción de algoritmos simples (selecciones, repeticiones, funciones, etc.). Durante la simulación, el alumno puede analizar con detalle y al ritmo que desee la forma en que se comporta su algoritmo y así identificar y corregir los errores que detecte (Gomes & Mendes, 2001). La figura 1 muestra el entorno SICAS durante una sesión de simulación. Una vez encontrada una solución, SICAS permite la generación de código en forma de pseudocódigo, Lenguaje C o Lenguaje JAVA. Esta diversidad de alternativas para presentar la solución del problema tiene como propósito esencial demostrar que la acción fundamental de la resolución de problemas de programación y construcción de un algoritmo es independiente de su codificación en un determinado lenguaje. Así, a partir del momento en el que está desarrollado el algoritmo, su traducción es relativamente fácil de realizar. Figura 1. Simulación de un algoritmo en el entorno SICAS. El entorno OOP-ANIM En los últimos años, la programación orientada a objetos ha venido ganando una importancia creciente y en consecuencia se ha incluido en las disciplinas de introducción a la programación. La popularización de lenguajes orientados a objetos como es el caso de Java también ha contribuido a crear esta importancia. Por este motivo, nos propusimos desarrollar un entorno de apoyo a nuestros alumnos en los conceptos básicos de este paradigma de programación. Este entorno es el OOP-ANIM que actualmente se encuentra en fase de desarrollo. (Esteves & Mendes, 2003). Figura 2. Simulación de un programa en el entorno OOP-ANIM Esencialmente, OOP-ANIM es una herramienta de visualización y animación de pequeños programas creados por los alumnos. Los objetivos son los mismos que motivaron el entorno SICAS. Este pretende que los alumnos construyan soluciones a determinados problemas, simulen la ejecución de esas soluciones, detecten errores y traten de corregirlos. En la primera fase, también puede resultar útil para el análisis de ejemplos de programas que pueden ser presentados por el profesor. De esta forma, el alumno se familiariza con los conceptos de clase y objeto y sus relaciones. Una diferencia importante en referencia al sistema anterior es que en este caso se trabaja con programas directamente escritos en Java y no en diagramas de flujo. La razón de esta decisión tiene que ver con el hecho de que, normalmente, estos alumnos cuando abordan el estudio de la programación orientada a objetos ya tienen conocimientos sobre programación procedimental. La figura 2 muestra una imagen de este entorno. LA PLANIFICACIÓN COLABORATIVA DEL DISEÑO EN DOMOSIM-TPC Debemos revisar diversos aspectos que considerados en el sistema DomoSim-TPC son esenciales para materializar el concepto de Planificación Colaborativa del Diseño. A continuación se describen brevemente. Modelado del dominio El primero de los aspectos a estudiar, y tal vez el más importante, es el modelado del dominio para poder facilitar el procesamiento automático de la información del mismo. En el caso de la Domótica, y para su utilización en DomoSim-TPC, el dominio se modeló utilizando el paradigma de orientación a objetos. Así los elementos u operadores de Domótica se modelan como objetos que tienen unas propiedades, se pueden realizar unas acciones sobre ellos, se pueden relacionar o conectar con otros objetos y además presentan algunas restricciones relativas a su utilización (Redondo, 2002). Cuando hablamos del dominio de la programación, podemos estudiar un programa como un conjunto de sentencias (o bloques) con unas propiedades particulares, relacionadas con otras sentencias según se defina en el flujo de control, pueden presentar algunas restricciones relativas a las posibilidades de relación con otras. Desde este punto de vista, podemos realizar una aproximación similar considerando las sentencias de un programa como los objetos con los que vamos a trabajar. Una representación similar se ha utilizado en otros trabajos como (Suzuki & Kato, 1995), aunque el diseño del programa no fuese una tarea realizada mediante computador. No obstante, para tratar de darle mayor significado a la representación del dominio se puede reflexionar sobre la utilización de los Diagramas de Actividad de UML para representar los programas. En cualquier caso, los elementos de un Diagrama de Actividad resultan mucho más sencillos de aproximar a la visión de objetos que antes hemos señalado. Así, cada uno de estos elementos puede modelarse como un objeto que puede estar relacionado con el resto según diversos criterios (por ejemplo el flujo de control). El lenguaje de representación intermedio Necesitamos de un lenguaje de representación intermedio que permita planificar la construcción de un programa con un alto nivel de abstracción que facilite la reflexión sobre las decisiones que se toman. Es decir, necesitamos un lenguaje que incite a la reflexión sobre las sentencias que deben formar parte de un programa y sobre cómo se relacionan con el resto de las sentencias. En DomoSim-TPC se emplea como lenguaje el Plan de Diseño. Un Plan de Diseño es una secuencia ordenada de acciones de diseño que afectan a los objetos del dominio. Por ejemplo, acciones que indican que se incluye un elemento en el diseño o que se conectan dos elementos incluidos previamente en el diseño, etc. Es decir, una secuencia ordenada de acciones que definen un caso particular de utilización de los objetos del dominio (Redondo et al, 2002). Una vez modelado el dominio de la programación como un conjunto de objetos, la utilización del Plan de Diseño como representación intermedia de un programa no presenta una dificultad significativa, dada su similitud con el dominio de la Domótica. ADAPTACIÓN DE DOMOSIM-TPC PARA EL APRENDIZAJE DE LA PROGRAMACIÓN En esta sección revisaremos algunas de las características de DomoSim-TPC, sobretodo a nivel de interfaz de usuario, para determinar cómo puede permitir trabajar con el modelo del dominio y el lenguaje de representación que introducimos en el apartado anterior. Para la Planificación Colaborativa del Diseño de instalaciones de Domótica se utiliza una herramienta formada por tres componentes interrelacionados que dan lugar a tres subespacios: el editor de planes (subespacio de trabajo individual), la utilidad de mensajería y representación del proceso en grupo (subespacio de discusión y argumentación) y la tabla de contenidos (subespacio de resultados). El editor de planes El editor de planes se emplea para construir planes de diseño de forma individual, es decir, para que los usuarios puedan plantear la solución a un problema de diseño en términos del leguaje de representación desarrollado a tal efecto (ver figura 3). Figura 3. Aspecto de la interfaz de usuario del editor de planes de diseño. En esta utilidad presenta características muy próximas al dominio en el que se sitúan las experiencias de aprendizaje y por ello debe sufrir los cambios más profundos. Estos cambios deben orientarse a facilitar el planteamiento de la solución a un problema de programación. Para ello se debe poder interactuar con el lenguaje de representación empleado y con los elementos que lo componen. A tal efecto se plantean varias alternativas no necesariamente excluyentes: Si se utiliza la equivalencia Diagrama de Actividad de UML – programa resultará interesante emplear la notación UML y, por lo tanto, podemos utilizar cualquier herramienta ya existente para construir diagramas de este tipo que posteriormente procesaremos e integraremos en nuestra herramienta. Esta aproximación presenta la ventaja de reducir el esfuerzo de desarrollo pero por el contrario nos condiciona la posibilidad de registrar las trazas del trabajo realizado individualmente por cada alumno, nos dificulta la inclusión de agentes que orienten al aprendiz durante su trabajo y complica la relación con el espacio de discusión y argumentación. Todo ello supone un importante valor añadido para las herramientas destinadas a fines educativos y formativos. Además esto presupone conocimientos de diseño y de utilización de la notación UML. No obstante, no deja de ser una primera aproximación válida para poder disponer de un primer prototipo que agilice la implantación y evaluación de nuestros planteamientos. Independientemente de la notación o lenguaje por el que optemos, podemos desarrollar o integrar nuestra propia herramienta de edición de planes de diseño de programas lo cual nos proporcionará un marco sobre el que proponer nuevas mejoras y estudiar sus aportaciones. Esta aproximación puede materializarse mediante la utilización de SICAS que se apoya en la representación de programas abstrayéndolos mediante diagramas de flujo. Figura 4. Visualización de planes de diseño con DomoSim-TPC Es importante hacer una reflexión sobre cómo se visualizarán los planes de diseño de programas. En el aprendizaje del diseño de instalaciones domóticas con DomoSim-TPC se registraba y visualizaba el plan de diseño en forma de secuencia de acciones y el modelo que se construye realizando las acciones de dicho plan, es decir, se representa la solución y la forma en la que se ha construido (ver figura 4). En el caso del aprendizaje de la programación tal y como lo estamos planteando, la visualización se puede realizar a diversos niveles: Secuencia de acciones seguidas para construir el diagrama de actividad. El propio diagrama de flujo. El pseudocódigo equivalente al diagrama planificado. La equivalencia al pseudocódigo en algún lenguaje de programación. Optar por un nivel de visualización u otro dependerá de diversas circunstancias, como por ejemplo el nivel de ayuda que se ofrece al aprendiz. Sin embargo, el sistema debe ser capaz de registrar los datos necesarios para visualizar el trabajo realizado a cualquiera de los tres niveles. Hay que significar que una vez que se dispone de un mecanismo de representación de estas características se puede proceder, en otras etapas, a simular de forma colaborativa el comportamiento del programa (probarlo) definiendo casos de estudio con los valores de entrada para el programa y planteando diversas hipótesis sobre los valores de la variables de salida o intermedias (Bravo, 2002). Esta verificación se puede hacer con distintos niveles de abstracción, dependiendo de la representación empleada. En particular, la herramienta OOP-ANIM nos permite realizar esta simulación del comportamiento del programa, incluso cuando se emplea tecnología de orientación a objetos. Figura 5. Interfaz de la utilidad de discusión y argumentación. Utilidad de mensajería para la discusión La utilidad de mensajería organiza y presenta todas las contribuciones de diálogo que el grupo ha generado durante la actividad, incluso aquellas que pueda generar el profesor o el propio sistema. Algunas de estas contribuciones son propuestas de diseño previamente elaboradas con el editor de planes, otras son comentarios, preguntas, etc. Desde este componente se pueden consultar todas las contribuciones y sus relaciones con el resto de contribuciones o con otros contenidos como son los planes de diseño y otros elementos de tipo textual. Hay que significar que esta herramienta no sólo permite intercambiar opiniones y argumentar sobre la decisiones de diseño que se han tomado sino que representa todo el proceso de discusión permitiendo el acceso a cualquier tipo de contribución generada durante este proceso (ver figura 5). Por lo tanto, a diferencia de una herramienta clásica de mensajería, ésta presenta un fuerte acoplamiento con los contenidos sobre los que se discute. Esta utilidad es independiente del dominio al que se aplique por lo que no requiere cambios significativos. Solamente hay que tener en cuenta que la visualización de las contribuciones depende del tipo de las mismas. Por lo tanto, cuando se pretenda visualizar una contribución de tipo plan de diseño de un programa se deberá hacer teniendo presentes los niveles discutidos en la sección anterior. Tabla de contenidos Por último, la tabla de contenidos permite organizar, presentar y facilitar el acceso a la solución final elaborada y consensuada por el grupo. En este subespacio sólo aparecen los contenidos generados por el grupo, desligados del proceso seguido para obtenerlos. Se emplea una estructura jerárquica para representar los resultados de la actividad en forma de tabla de contenidos. La visualización de éstos depende del dominio de aplicación y, por lo tanto, para el caso de la programación nuevamente se deberán tener en cuenta los niveles planteados para el editor de planes y el sistema de discusión. Así pues, esta utilidad tampoco requiere cambios significativos para su aplicación en el aprendizaje de la programación, excepto lo relativo a la visualización que será común a los tres subespacios que se emplean para la Planificación Colaborativa. CONCLUSIONES Y LÍNEAS DE TRABAJO Tras revisar la interfaz de las diversas herramientas que se utilizan en DomoSim-TPC para la Planificación Colaborativa del Diseño se observa que no se requieren cambios sustanciales para su aplicación al aprendizaje de la programación. Prácticamente los cambios se reducen a dos: El editor para construir lo que hemos venido denominando plan de diseño del programa. No obstante, como primera aproximación se puede optar por utilizar una herramienta externa que permita realizar esta función y posteriormente integrar el modelo generado en el subespacio de edición de nuestro sistema. Aunque somos conscientes de que disponer de una herramienta desarrollada específicamente para este objetivo permitiría enriquecer significativamente el proceso. En nuestro caso particular optamos por SICAS empleando como lenguaje de representación diagramas de flujo. Debe acometerse la visualización de los modelos y planes de diseño de programas que se generan. Esta visualización se puede plantear a diferentes niveles de abstracción: secuencia de acciones para construirlos, modelo construido expresado como un diagrama de flujo y pseudocódigo equivalente. Por lo tanto, estamos en condiciones de afirmar que es viable abordar la utilización de la Planificación Colaborativa del Diseño como estrategia para el aprendizaje en grupo de la programación y además podemos hacerlo aprovechando gran parte de la infraestructura proporcionada por DomoSim-TPC y por las herramientas que hemos citado y que se emplean para el aprendizaje desde un punto de vista individual. La siguiente fase de este trabajo debe dirigirse hacia la modificación del sistema, tal y como se ha apuntado durante este estudio, para incorporar su aplicación en el dominio de la programación y tratar de dejar abierta la posibilidad de incorporar otros dominios con los que se puedan modelar de forma similar. Una vez que el sistema esté operativo se procederá a su evaluación, configurando grupos de aprendices formados por alumnos de la Universidad de Coimbra y por alumnos de la Universidad de Castilla – La Mancha. Estos alumnos participarán en actividades de aprendizaje a distancia basadas en la resolución de problemas de programación. Esto permitirá obtener datos reales que nos ayuden a demostrar la idoneidad de nuestros planteamientos. AGRADECIMIENTOS Este trabajo ha sido financiado parcialmente por RIBIE en el marco del CYTED y por la UCLM. REFERENCIAS Azul, A. & Mendes, A. J., (1998). EDDL: um programa didáctico sobre Estruturas de Dados Dinâmicas Lineares. Actas do 3º Simpósio Investigação e Desenvolvimento de Software Educativo, Évora, Portugal. Boder, A., (1992). The process of knowledge reification in human-human interaction. Journal of computer Assited Learning, Vol. 8, No 3, pp. 177-185. Bonar, J.G., & Cunningham, R., (1988). Intelligent Tutoring with Intermediate Representations. ITS88. Montreal. Bravo, C (2002). Un sistema de soporte al aprendizaje colaborativo del diseño de mótico mediante herramientas de modelado y simulación. Tesis Doctoral: Departamento de Informática. UCLM. Bravo, C., Redondo, M.A., Bravo, J., & Ortega, M., (2000). DOMOSIM-COL: A Simulation Collaborative Environment for de Learning of Domotic Desgin. Inroads The SIGCSE Bulletin of ACM, vol. 32 (2), pp.65-67. Bravo, J. (1999). Planificación del diseño en entornos de simulación para el aprendizaje a distancia. Tesis Doctoral: Departamento de Ingeniería Eléctrica, Electrónica y Control. UNED. Bravo, J., Ortega, M., & Verdejo, M.F., (1999). Planning in Distance Simulation Environments. Full Paper in Comunications and Networking in Education COMNED’99. Aulanko, Hämeenlinna. Finlandia. de Jong, T., van Joolingen, W., Pieters, J. & van der Hulst, A., (1993). Why is discovery learning so difficult? And what can we do about it?. EARLI conference. Aix-en-Provence. de Jong, T., van Joolinger W. & King, S., (1997). The authoring environment SIMQUEST and the need for author support. In Ton de Jong (Ed.), Supporting authors in the design of simulation based learning environments. Servive Project. Esteves, M. & Mendes, A.J., (2003). OOP-Anim, a system to support learning of basic object oriented programming concepts. Proceedings of CompSysTech' 2003 - International Conference on Computer Systems and Technologies, Sofia, Bulgária. Gomes, A.J. & Mendes, A. J., (1999). A animação na aprendizagem de conceitos básicos de programação. Revista de Ensenanza y Tecnologia, 13, 22-32. Gomes, A.J. & Mendes, A.J., (2001). SICAS: Interactive system for algorithm development and simulation. In Manuel Ortega y José Bravo (eds.), Computers and Education in an Interconnected Society, Kluwer Academic Publishers, 159-166. Jonassen, D.H., (2000). Toward a Meta-Theory of Problem Solving. Educational Technology: Research & Development, 48 (4), pp. 63-85. Koschmann, T. (1996). Paradigm shifts and instructional technology. In T. Koschmann (Ed.), CSCL: Theory and Practice of an Emerging Paradigm. Mahwah, NJ: Lawrence Erlbaum, Assoc. pp. 1-24. Redondo, M.A., Bravo, C., Ortega, M., & Verdejo, M.F., (2002). PlanEdit: An adaptive tool for design learning by problem solving. Proceedings of 2º Adaptive Hypermedia and Adaptive Web-Based Systems (AH2002). LNCS 2347, pp. 560-563. Springer-Verlag: Berlin. Redondo, M.A. (2002). Planificación colaborativa del diseño en entornos de simulación para el aprendizaje a distancia. Tesis Doctoral: Departamento de Informática. UCLM. Redondo, M.A., Bravo, C., Bravo, J., Ortega, M., (2003). Organizing activities of problem based collaborative learning with the DomoSim-TPC system. In M. Llamas, M.J. Fernández y L.E. Anido (Eds.), Computers and Education: Towards a Lifelong Learning Society. Invited and reviewed paper from the VI Iberoamerican Congress on Computers in Education (IE’2002). Kluwer Academic Publishers. (In Press). Slavin, R.E., (1983). Cooperative learning. New York: Longman. Soloway, E., (1986). Learning to Program = Learning to Construct Mechanisms and Explanations. Communications of the ACM. Suzuki & Kato, (1995). Interaction-Level Support for Collaborative Learning: AlgoBlock -- An Open Programming Language. Proceedins of CSCL’95. Indiana (USA) Vygotsky, L.S., (1978). Mind in Society: The Development of Higher Psychological Processes. Cambridge, MA: Harvard University Press.