IEEE-RITA Vol. 7, Núm. 3, Ago. 2012
121
Cole-Programming: Incorporando Soporte al Aprendizaje Colaborativo en Eclipse Francisco Jurado, Ana I. Molina, Miguel A. Redondo y Manuel Ortega
Title— Cole-Programming: Shaping Collaborative Learning Support in Eclipse. Abstract— En la docencia de las asignaturas asociadas a las competencias de la Programación, suele emplearse un modelo de enseñanza/aprendizaje basado en la resolución problemas, que en ocasiones implica la aplicación de técnicas como la Programación por Pares. Además, en la realización de estas tareas es habitual el empleo de entornos de desarrollo integrado de uso profesional. Así, puede resultar interesante integrar herramientas en estos entornos para que puedan dar soporte al proceso de aprendizaje/enseñanza. En este artículo se expone cómo se ha adaptado un sistema preexistente para el aprendizaje de la Programación basado en Eclipse, de modo que tenga soporte para realizar tareas colaborativas. Estas han sido especialmente diseñadas para la resolución de problemas de Programación, e integradas dentro del entorno de aprendizaje. Asimismo, se analizan las primeras impresiones recogidas de los estudiantes en las experiencias iniciales realizadas sobre el sistema. Index Terms— Aprendizaje de la Programación, Aprendizaje Colaborativo Asistido por Computador, Eclipse, Espacios de Tuplas, Programación por Pares
D
I. INTRODUCCIÓN
URANTE el proceso de adquisición de los conocimientos y habilidades asociados a competencias de Programación de Computadores (a la que nos referiremos en adelante como Programación) [1], los estudiantes deben hacer frente a diferentes obstáculos [5][8][21]. En las diferentes asignaturas relacionadas con estas competencias, el método de enseñanza más empleado suele basarse en actividades que impliquen resolución de problemas [18][30], reforzando las clases teóricas con
Francisco Jurado es Profesor asociado del Departamento de Tecnologías y Sistemas de Información en la Escuela Superior de Informática de la Universidad de Castilla-La Mancha Paseo de la Universidad, 4. 13071 Ciudad Real (España), e-mail:
[email protected] Ana I. Molina es Profesora Contratada Doctora del Departamento de Tecnologías y Sistemas de Información en la Escuela Superior de Informática de la Universidad de Castilla-La Mancha Paseo de la Universidad, 4. 13071 Ciudad Real (España), e-mail:
[email protected] Miguel A. Redondo es Profesor Titular del Departamento de Tecnologías y Sistemas de Información en la Escuela Superior de Informática de la Universidad de Castilla-La Mancha Paseo de la Universidad, 4. 13071 Ciudad Real (España), e-mail:
[email protected] Manuel Ortega es Catedrático del Departamento de Tecnologías y Sistemas de Información en la Escuela Superior de Informática de la Universidad de Castilla-La Mancha Paseo de la Universidad, 4. 13071 Ciudad Real (España), e-mail:
[email protected] DOI (Digital Object Identifier) Pendiente
laboratorios de Programación [29][35] que posibiliten un aprendizaje activo [31]. Dado que los estudiantes deben aprender a diseñar, desarrollar, verificar y depurar programas con determinadas herramientas que están diseñadas para ser empleadas por programadores profesionales tal y como apunta Satratzemi [37], en los laboratorios de Programación se suelen emplear Entornos de Desarrollo Integrado (IDE) de uso profesional, como Eclipse, JDeveloper, NetBeans, IntelliJ, etc. De este modo, introducir mejoras sobre estos entornos a modo de herramientas que den soporte al proceso de aprendizaje/enseñanza en las competencias asociadas con la Programación, puede resultar una aproximación interesante. Por su parte, la implantación de los principios propuestos por parte del Espacio Europeo de Educación Superior (EEES) incluye el trabajo en grupo como una de las técnicas a potenciar en las aulas. En este sentido, el paradigma educativo del Aprendizaje Colaborativo Soportado por Computador (CSCL, Computer Supported Collaborative Learning) [28], pretende aprovecharse del efecto sinérgico que supone el hecho de que varios estudiantes colaboren para resolver un determinado problema, proporcionando el soporte computacional que les permita comunicarse y coordinarse en la realización de sus actividades de aprendizaje. Así, aplicar el paradigma colaborativo en el proceso de enseñanza/aprendizaje de la Programación mediante la resolución de problemas o proyectos en grupo (aprendizaje colaborativo), permitiría introducir los principios del EEES en la adquisición de esta competencia. No en vano, ha sido aplicado al ámbito del aprendizaje de la Programación, existiendo varias propuestas en este sentido [38][34][33] [13]. La , en un entorno computacional típicamente distribuido, que permite a los estudiantes beneficiarse del conocimiento y habilidades del resto de integrantes del grupo, mejorando así sus propias destrezas. Dentro del ámbito del aprendizaje colaborativo aplicado a la Programación, habitualmente se emplea la técnica de la Programación por Pares (del inglés Pair-Programming). En ella, dos programadores trabajan de forma conjunta en un mismo diseño, algoritmo, código o prueba [39], de modo que, mientras que uno de ellos ejecuta acciones sobre el entorno, el otro analiza los pasos de su compañero para tratar de detectar errores e informarle de ellos. Aunque se trata de una técnica típicamente empleada en el campo de la Ingeniería del Software, su aplicación en contextos educativos proporciona interesantes beneficios que mejoran el aprendizaje [36].
ISSN 1932-8540 © IEEE
122
IEEE-RITA Vol. 7, Núm. 3, Ago. 2012
En este marco, nuestro objetivo es el de dar soporte a métodos educativos que apliquen la técnica de la Programación por Pares en un IDE de uso profesional. En particular, en el presente trabajo se muestra cómo evolucionar un sistema para el aprendizaje de la Programación ya existente y sin soporte para la realización de tareas colaborativas, el cual está basado en un IDE ampliamente extendido como es Eclipse, dotándole de herramientas colaborativas que quedarán integradas en dicho entorno. Así, el resto del documento se estructura como sigue: se comenzará mostrando los antecedentes sobre los sistemas que permiten dar soporte computacional a los laboratorios de Programación (sección 2); seguidamente se pasará a mostrar cómo dotar de soporte colaborativo al sistema para el aprendizaje de la programación seleccionado (sección 3); a continuación se detallará la funcionalidad específicamente diseñada para tareas de Programación que se ha implementado dentro del entorno (sección 4); posteriormente se mostrará una primera experiencia y se analizarán las impresiones de los estudiantes respecto de las misma (sección 5); y finalmente se expondrán algunos comentarios finales (sección 6). II. ANTECEDENTES Con el fin de posibilitar la realización de actividades que impliquen resolución de problemas de Programación en un escenario donde se complementen las clases teóricas con laboratorios de Programación para fomentar el aprendizaje activo al estudiante, una aproximación que puede resultar beneficiosa para los estudiantes es el uso de entornos de desarrollo reales. Éstos son los llamados Entornos de Desarrollo Integrado (Integrated Development Environment, IDE), programas destinados a ayudar a los desarrolladores en el proceso de implementación de aplicaciones. Este tipo de aplicaciones incluyen herramientas que dan soporte a los programadores durante el proceso de desarrollo en sus diferentes fases. Empleando un IDE real, los estudiantes pueden manipular un entorno de desarrollo como el que encontrarán en su futuro laboral, preparándolos no sólo para aprender los conceptos relacionados con la Programación, sino también para aprender a manipular y sacar provecho de las herramientas que pueden tener a su disposición, favoreciéndoles tanto en su proceso de aprendizaje como en su futuro ambiente profesional. En la actualidad existen multitud de IDEs, ya sean de libre disposición o comerciales. Entre ellos, Eclipse (http://www.eclipse.org) se erige como el más ampliamente utilizado [9][16]. De hecho, las posibilidades de personalización y expansión que proporciona Eclipse no han pasado desapercibidas para los investigadores en el área del aprendizaje de la Programación, pudiéndose encontrar diversas soluciones en este sentido para desarrollos Java. Estas soluciones consisten en plug-ins añadidos a Eclipse para convertirlo en un entorno para el aprendizaje de la Programación. Así, en el proyecto Kenya Eclipse [10][11] se integra el lenguaje Kenya [2][9] diseñado para que los estudiantes se centren en aprender las
estructuras básicas de Programación, eliminando aquellos aspectos relacionados con la sintaxis que no resultan relevantes en las primeras sesiones del aprendizaje de la Programación. Pasar de Kenya a su equivalente Java resulta sencillo, de modo que los estudiantes pueden aprender más fácilmente cómo deberían escribir el correspondiente programa Java. Kenya aprovecha todas las características de Eclipse, tales como la gestión de proyectos, la salida del compilador, etc. Además incorpora un módulo para el análisis del estilo de Programación, que permite que los estudiantes mejoren la escritura y legibilidad del código fuente que generan. Otra aplicación basada en Eclipse es ProPAT [3]. Esta herramienta permite que el profesor pueda proponer un problema de Programación indicando el nombre, el uso y la sintaxis que el estudiante debería seguir a modo de plantilla. Dicha plantilla de sintaxis será posteriormente cotejada con el árbol sintáctico abstracto del código escrito por el estudiante, con lo que el sistema podrá proporcionar al estudiante información relativa a qué ha hecho bien y mal en la solución que ha desarrollado. En esta misma línea de análisis de las soluciones que desarrollan los estudiantes se encuentra COALA (Computer Assisted Environment for Learning Algorithms) [24][25]. Este entorno permite la especificación de actividades de Programación por parte del profesor (junto con la representación ideal según su criterio de evaluación y los casos de prueba que deben cumplirse), su distribución a los estudiantes, la entrega de las soluciones elaboradas por éstos y la evaluación automática de dichas soluciones mediante Lógica Difusa. COALA emplea esta evaluación con un doble objetivo [25]: por un lado, proporcionar a los estudiantes una breve explicación de qué está bien y mal en su solución de modo que puedan entenderla y mejorarla; por otro, retroalimentar al sistema, permitiéndole determinar cuál es la siguiente actividad de aprendizaje de entre las especificadas por el profesor, que debe realizar cada estudiante en particular. Por su parte, entre los proyectos que aplican los principios del CSCL y la extensibilidad de Eclipse se encuentran los proyectos Jazz Sangam [12] y RIPPLE [6]. Más concretamente, estas herramientas pretenden construir entornos que posibiliten la Programación por pares. Así, Jazz Sangram [12] es un plug-in diseñado para dar soporte al trabajo colaborativo en el entorno Eclipse. Jazz es una tecnología de IBM para desarrollo colaborativo, que proporciona herramientas de gestión de proyectos, control de versiones, mensajería instantánea, etc. Por su parte Sangam [22] es un plug-in para Eclipse que permite el trabajo colaborativo empleando la técnica de Programación por pares. La integración de Jazz y Sangam es la que da como resultado esta aplicación. De forma similar, RIPPLE [6] construye sobre Eclipse un entorno para Programación por pares mediante la construcción de un editor compartido y un chat sencillo, empleando para ello la arquitectura de Sangam. Sin embargo estos sistemas no cuentan con herramientas colaborativas de comunicación y coordinación de uso tan extendido como foros (que permiten también la comunicación asíncrona), herramientas de votación (que estructuran la toma de decisiones), etc. Tampoco incorporan mecanismos de awareness [15] que permitan tener
ISSN 1932-8540 © IEEE
JURADO et al.: COLE-PROGRAMMING: INCORPORANDO SOPORTE AL APRENDIZAJE COLABORATIVO... 123 consciencia e información sobre el resto de integrantes del grupo de trabajo, su progreso e intenciones futuras. Por otro lado, estos sistemas no disponen de herramientas de monitorización y seguimiento del estudiante, que podrían resultar de gran interés para los profesores (tanto para realizar análisis del proceso de aprendizaje, como para intervenir en las sesiones de trabajo en grupo cuando sea necesario). Por tanto, puede verse cómo el entorno Eclipse resulta adecuado para ser empleado como base en el desarrollo de aplicaciones para el aprendizaje de la Programación. Por un lado, el uso de Eclipse permite a los desarrolladores centrarse en implementar las funcionalidades puramente educativas, liberándoles de la implementación de herramientas comunes como las de gestión de proyectos, editores de código, integración con el compilador y el depurador, etc. Por otro lado, las herramientas educativas desarrolladas se encuentran integradas en entornos que los estudiantes encontrarán en su futuro profesional. El presente trabajo toma como punto de partida el entorno distribuido COALA citado anteriormente, el cual fue desarrollado como consecuencia de nuestras investigaciones previas en el ámbito de los sistemas destinados al aprendizaje de la Programación, pero que carecía de soporte para tareas colaborativas. En la siguiente sección se mostrará cómo dotar de soporte colaborativo a COALA. III. DOTANDO A ECLIPSE DE SOPORTE A LA COLABORACIÓN Como se ha mencionado en el apartado anterior, el punto de partida para nuestro trabajo es COALA [24][25]. Éste fue desarrollado como plug-ins para Eclipse, con el fin de permitir el empleo de un entorno de Programación real en un ámbito académico, el cual hace uso de estándares educativos para facilitar la reutilización e integración con otros sistemas, destacando el empleo de IMS-LD [23]. El plug-in para Eclipse de COALA permite la comunicación a través de un servidor de espacios de tuplas [19][20][27]. Este servidor se comporta como una memoria central compartida en un entorno de red, donde los diferentes clientes y servicios pueden almacenar y leer información en forma de tuplas [26][27]. La opción de los espacios de tuplas resulta apropiada para implementar sistemas colaborativos de eLearning [7][17]. Así, parecía factible emplear la arquitectura de COALA para implementar los nuevos servicios, aprovechando tanto las características de extensión y personalización de Eclipse, como la escalabilidad de un sistema basado en espacios de tuplas. Con ello se implementaron a modo de plug-intres de los servicios colaborativos más habituales, a los que se les dio el nombre de COLE-Programming. Estos servicios son: un chat para permitir la comunicación de modo síncrono; un foro para permitir la comunicación de modo asíncrono; un pool de votaciones que permita sondear, cuestionar, consensuar, etc., a los estudiantes.
Estos servicios están dotados de funcionalidades específicas, especialmente pensadas para la realización de tareas de Programación. A modo de ejemplo, en la figura 1 puede verse la funcionalidad para las herramientas del chat y el foro, donde se destaca, no sólo el intercambio de mensajes inherente a este tipo de servicios, sino funcionalidades como las de compartir código o intercambiar mensajes de error y warning procedentes del compilador o de la ejecución. Dado que como se ha comentado anteriormente COALA hace uso de IMS-LD, son diversas las propuestas que permiten la integración de estos servicios colaborativos al sistema [4][14][32]. Sin embargo, dadas las propiedades arquitecturales de COALA para la integración de agentes y servicios mediante el empleo de espacios de tuplas [27], la tarea de integración queda reducida a la implementación de proxies que abstraen el modelo de datos particular de cada servicio a un modelo básico de tuplas. La figura 2muestra el diagrama de bloques de la arquitectura de COALA una vez añadido el plug-in COLEProgramming. Como puede apreciarse en dicha figura, todos los clientes y servicios están conectados mediante una red TCP. El servidor de espacios de tuplas seleccionado para la implementación fue SQLSpaces (http://sqlspaces.collide.info/) (figura 2 a la derecha), el cual se distribuye bajo licencia libre AGPL. Este se ejecuta sobre una máquina virtual de Java (JVM) e implementa la correspondiente lógica de transformación entre tuplas y base de datos relacional. En el caso concreto de COALA se eligió una base de datos MySQL sobre la que realizar la persistencia. Para que los diferentes clientes y servicios puedan interactuar, éstos precisan de las correspondientes librerías que dan soporte al middleware (SQLSpaces client stubs), tanto si se ejecutan sobre una máquina virtual de Java, como si son empleadas desde cualquier otro lenguaje de programación de entre los soportados por SQLSpace. Este es el caso de las herramientas de las que dispone COALA (zona sombreada en el centro de la figura) y de los servicios de los que dispone (a la izquierda) para permitir la especificación de actividades de Programación por parte del profesor, los casos de prueba que deben cumplirse, la distribución de las tareas a los estudiantes, la entrega de las soluciones elaboradas por éstos y la evaluación automática de dichas soluciones, etc.
Fig. 1. Diagrama de Casos de Uso para las herramientas de chat y foro
ISSN 1932-8540 © IEEE
124
IEEE-RITA Vol. 7, Núm. 3, Ago. 2012
Lado del cliente
Otros servicios
Servicios COALA SQLSpaces Client Stubs
Lado del servidor
Eclipse SWT Viewers/Editors
Chat Viewer
Foro Viewer
Pool Viewer
Resto Viewers COALA
Eclipse SWT ContentProviders
Chat Controller
Foro Controller
Pool Controller
Resto Controllers COALA
Chat Proxy
Foro Proxy
Pool Proxy
Resto Proxies COALA
Eclipse Platform
SQLSpaces Client Stubs
JVM
JVM
Lógica conversión Tuplas - SQL
SQLSpaces Server
MySQL
JVM
Conexión TCP Fig. 2. Diagrama de bloques de la arquitectura del sistema
En el lado del cliente (zona central de la figura), puede verse Eclipse como la plataforma a emplear por los usuarios. Tanto la plataforma de Eclipse como las librerías del lado del cliente de SQLSpaces se ejecutan sobra una máquina virtual de Java. Con el fin de facilitar la implementación de las capas superiores, se implementan diferentes proxies que proporcionan la transparencia suficiente respecto del middleware. Sobre esta capa de proxies se encuentran las capas del modelo-vista-controlador que propone Eclipse. Dicho modelo consta de proveedores de contenido (SWT Content Providers) y de las correspondientes vistas y editores (SWT Viewers and Editors) para cada una de las herramientas a
implementar, ya sean de las ya implementadas en COALA (zona central sombreada a la derecha) o de las nuevas herramientas implementadas (el chat, el foro y el pool de votaciones). Como puede apreciarse, la implantación de las herramientas colaborativas sobre la arquitectura inicial de COALA resulta sencilla. Tan sólo es preciso implementar los correspondientes proxies, proveedores de contenido y vistas/editores para hacerlos disponibles en los diferentes clientes. Los mensajes y la información que los usuarios intercambiarán en ellas quedarán representados por tuplas accesibles por el grupo de trabajo en el servidor del espacio de tuplas.
Pestañas de la vista para el chat
Pestañas de la vista para el pool de votaciones
Fig. 3. Herramientas colaborativas implementadas por COLE-Programmingen el entorno COALA
ISSN 1932-8540 © IEEE
Pestañas de la vista para el foro
JURADO et al.: COLE-PROGRAMMING: INCORPORANDO SOPORTE AL APRENDIZAJE COLABORATIVO... 125 En la siguiente sección se describirán a modo de ejemplo, algunos servicios colaborativos implementados a fin de probar la validez de nuestra aproximación, así como las funcionalidades específicas para la Programación que pueden incluírseles a fin de facilitar tareas colaborativas en este dominio. IV. COLE-PROGRAMMING: PLUG-IN PARA DAR SOPORTE A LA COLABORACIÓN Dentro de COALA, el plug-in que se desarrolló para Eclipse en el lado del cliente y que implementa algunas herramientas colaborativas, es al que hemos convenido llamar COLE-Programming (Collaborative Learning Programming). La figura 3 muestra cómo COLE-Programming implementa las diferentes vistas para las herramientas de chat (arriba a la izquierda) y foro (arriba a la derecha) con una serie de funcionalidades específicas para tareas de Programación y que serán descritas más adelante. Además añade un pool de votaciones (abajo). Para facilitar el intercambio de la información, se añadió lo necesario para permitir compartir código, mensajes de error del compilador, mensajes de alerta (warnings), etc. Así, cuando un alumno desea compartir uno de estos elementos a través de un chat o un foro, se abre una ventana de diálogo como la que se muestra en la figura 4. Ésta le permite introducir un mensaje de descripción, el tipo de información que está introduciendo (fragmento de código fuente, mensaje de error o alerta, etc.) y la información a compartir. En el chat o el foro aparecerá un mensaje del tipo ― publicó el : ‖, indicando que la información ha sido publicada para aquellas personas que están conectadas al chat. Los alumnos podrán seleccionar en un combo desplegable dentro del mismo chat
el ― id‖ de la información a visualizar, abriéndose un editor que mostrará tanto el código como la descripción. Además, en el foro se ha añadido un mecanismo de filtrado de mensajes en las conversaciones atendiendo al tipo de mensaje (planteamiento de un problema, propuesta al mismo, crítica de un comentario, etc.) tal y como se muestra en la figura 5 (arriba). Una gama de colores identifica al tipo de comentario, de modo que los estudiantes pueden identificar rápidamente el tipo de mensaje de que se trata. Además, un desplegable les permite filtrar el tipo de mensajes a mostrar, permitiéndoles por ejemplo, visualizar sólo las propuestas de soluciones a un problema, sólo las dudas, etc. Con el fin de ayudar al profesor en las tareas de análisis y seguimiento de las tareas colaborativas de aprendizaje, COLE-Programming implementa un monitor de colaboración (figura 5 abajo) que permite observar determinadas características de la colaboración, como el número de aportaciones de un determinado usuario por cada herramienta, porcentajes de participación, usuarios con los que ha colaborado o compartido información, etc. A lo largo de esta sección, ha podido comprobarse cómo se ha implementado la funcionalidad apuntada como necesaria por los estudiantes para la realización de tareas colaborativas de Programación. Así, se ha mostrado cómo se han añadido a COALA las herramientas de chat y foro con dicha funcionalidad, además de incorporar una herramienta para realizar votaciones y otra para permitir al profesor la monitorización de las actividades colaborativas. Con esto, COLE-Programming permite la utilización de COALA en entornos de aprendizaje colaborativo. En el siguiente apartado se detallará una primera experiencia realizada para analizar la percepción de COLE-Programming por parte de los estudiantes.
Código fuente, mensaje de error, etc. Mensaje de descripción Tipo de mensaje (código, error, warning, etc.) Id del mensaje compartido
Fig. 4. Compartir código, mensajes de error y alerta, etc.
ISSN 1932-8540 © IEEE
126
IEEE-RITA Vol. 7, Núm. 3, Ago. 2012 V. PRIMERA EXPERIENCIA CON ESTUDIANTES
Actualmente, el soporte computacional en la mayoría de centros educativos se limita a la implantación de plataformas de gestión de cursos, más conocidas por su término en inglés Learning Management Systems (LMS). Éstos proporcionan repositorios de material didáctico, test de auto-evaluación a disposición de los estudiantes, aplicaciones a emplear por el profesor para el seguimiento y monitorización del uso que los estudiantes hacen de estos entornos, así como herramientas de colaboración síncronas y asíncronas (chats, foros o herramientas de votación) que
añaden un componente más colaborativo a este soporte computacional. Este último tipo de herramientas pueden emplearse para cubrir ciertas necesidades de coordinación, comunicación y colaboración entre profesores y estudiantes. Así, en una primera experiencia, se trató de comprobar si los estudiantes preferían emplear herramientas colaborativas específicas para la Programación, incluidas dentro del Entorno de Desarrollo Integrado que emplean para realizar las tareas, o aquellas proporcionadas por otras alternativas genéricas basadas en LMS.
Selección del filtro
Qué usuario se monitoriza
Actividad
Participación
Para cada herramienta
Colaboración
Fig. 5. Arriba, filtrado de mensajes en los foros.Abajo, estadísticas de colaboración que muestra COLE-Programming
ISSN 1932-8540 © IEEE
JURADO et al.: COLE-PROGRAMMING: INCORPORANDO SOPORTE AL APRENDIZAJE COLABORATIVO... 127 Para ello, se tomó la evolución llevada a cabo en COALA mediante el plug-in COLE-Programming con las herramientas específicamente diseñadas para el aprendizaje de la Programación. Posteriormente fue empleado por estudiantes, quienes contrastaron dichas herramientas con las proporcionadas por un LMS de uso extendido como es Moodle para la realización de tareas de Programación. A. Participantes En la experiencia llevada a cabo participó un grupo de dieciséis estudiantes de la asignatura Sistemas para la Colaboración de quinto Curso de la Ingeniería Superior en Informática de la Universidad de Castilla-La Mancha (UCLM). Se seleccionó este perfil de estudiante dado que tenían los conocimientos necesarios tanto en el ámbito de la Programación (para valorar las herramientas de soporte a la Programación), como en el ámbito de los sistemas colaborativos (que les permite proporcionar una visión más objetiva y crítica en los temas relacionados con el soporte colaborativo implementado). B. Fase Previa a la Experiencia Antes de comenzar la experiencia, con el fin de conocer si existe sesgo en las respuestas de los estudiantes debidas a sus predilecciones, hábitos, etc., se diseñó un cuestionario para identificar el grado de conocimiento y preferencias sobre IDEs de Programación (y de Eclipse en particular), conocer a qué herramientas de comunicación/coordinación suelen recurrir a la hora de realizar tareas colaborativas de Programación, qué tipo de información intercambian a través de las mismas, etc. Los estudiantes ordenaron en una escala Likert de 1 a 5 (siendo 1 la opción menos deseada y 5 la más deseada) sus preferencias en relación a las herramientas colaborativas y el tipo de información que habitualmente intercambian. Como resultados de dicho cuestionario, cabe destacar que los estudiantes optan por el correo electrónico (un 35% y un 41% lo señalaron como la primera y segunda opción respectivamente), seguido del chat (un 44% lo identificaron como primera opción) y el foro (un 22% lo identificaron como segunda opción) como las herramientas colaborativas a usar a la hora de resolver actividades de Programación en grupo, independientemente de que estas sean externas o se encuentren integradas en el entorno. Por otro lado, el análisis de los datos obtenidos permitió determinar cuál es el tipo de información (además de los mensajes de texto) que habitualmente intercambian los estudiantes en estas sesiones de Programación colaborativa, destacando los mensajes de error y warning (un 38% de los estudiante lo marcaron como primera opción y un 25% como segunda) y copias literales de fragmentos de código (un 31% lo identificó como primera opción y un 19% como segunda). C. Descripción de la Experiencia Para la realización de la experiencia, los estudiantes fueron agrupados por los experimentadores en parejas de forma aleatoria. Así mismo, se les proporcionó la información disponible en la página web de COLEProgramming (http://chico.esi.uclm.es/coala), en la que se
incluyó la descripción de herramientas colaborativas y un manual de usuario. La experiencia tuvo una duración de dos horas, en las que los estudiantes debían resolver dos ejercicios de Programación y cumplimentar los correspondientes cuestionarios. Cada test incluía un ID de estudiante, que sirvió para identificar a los participantes en el resto de actividades de la experiencia, preservando así el anonimato. La experiencia constó de las siguientes fases: 1. Primera sesión práctica (Eclipse+Herramientas externas Moodle): en esta primera sesión práctica se les proporcionó el enunciado de un ejercicio de Programación, que debían resolver haciendo uso de la herramienta Eclipse, así como las herramientas externas de comunicación y coordinación incluidas en Moodle (http://moodle.org/), la plataforma LMS implantada en nuestra universidad y que los estudiantes conocían sobradamente. El tiempo aproximado de realización de este primer ejercicio de Programación fue de 40 minutos. 2. Test de valoración (Eclipse+Herramientas externas Moodle): los estudiantes cumplimentaron un test para evaluar su impresión sobre dichas herramientas de colaboración durante la sesión de Programación en grupo. El tiempo para cumplimentarlo fue de 10 minutos. 3. Segunda sesión práctica (Eclipse+COLEProgramming): las mismas parejas de trabajo que participaron en la primera sesión, realizaron una segunda actividad de Programación (con un nivel de complejidad similar al de la primera sesión) haciendo uso de las herramientas integradas en Eclipse (COLE-Programming). El tiempo aproximado de realización de este segundo ejercicio de Programación fue de 40 minutos. 4. Test de valoración (Eclipse+COLE-Programming): los estudiantes cumplimentaron un test para evaluar su impresión sobre dichas herramientas de colaboración durante la sesión de Programación en grupo. El tiempo para cumplimentar fue de 10 minutos. Los test constaron tanto de una serie de preguntas que los estudiantes tuvieron que contestar siguiendo una escala tipo Likert con puntuaciones del 1 al 5 (1: nada, 2: poco, 3: ocasionalmente, 4: a menudo, 5: mucho), como de preguntas de respuesta abierta en las que podían emitir su opinión o dar explicación y justificación sobre determinadas cuestiones. Una vez recopilada toda la información generada durante la experiencia se pasó a su análisis e interpretación, con el objetivo de valorar las herramientas colaborativas que implementa COLE-Programming, así como de las herramientas colaborativas externas no específicas para tareas de Programación, comparando ambas aproximaciones. En la siguiente sección se mostrarán y analizarán los resultados obtenidos.
ISSN 1932-8540 © IEEE
128 80% 70% 60% 50% 40% 30% 20% 10% 0%
80% 70% 60% 50% 40% 30% 20% 10% 0%
IEEE-RITA Vol. 7, Núm. 3, Ago. 2012
Chat Foro Herramientas de votación
Fig. 8. Valoración de características de las herramientas colaborativas de COLE-Programming
Chat Foro Herramientas de votación
Fig. 7. Valoración de las herramientas colaborativas. Arriba, puntuación a las herramientas genéricas. Abajo, puntuación a las herramientas integradas en COLE-Programming
D. Resultados Obtenidos de la Experiencia Tras las dos sesiones de prácticas, en las que los estudiantes usaron Eclipse junto con las herramientas colaborativas (las de la plataforma Moodle por un lado y las integradas en COALA mediante el plug-in COLEProgramming por otro), éstos parecen encontrar más usable la herramienta del chat integrada en COLE-Programming que la genérica, dado que incorpora funcionalidad específica para tareas de Programación. En la figura 7 se muestran las gráficas que muestran la valoración proporcionada por los estudiantes a las herramientas colaborativas genéricas y las integradas en COLE-Programming. Analizando dichas gráficas se puede ver cómo el uso de foros y las herramientas de votación parece menos extendido (la mayoría de los estudiantes otorgan un no sabe/no contesta a la hora de puntuar estas herramientas). En las preguntas de respuesta abierta, los estudiantes explicaron el porqué de su inclinación por el uso del chat. Lo consideran la herramienta colaborativa que les permite comunicarse con el compañero de forma más inmediata, permitiendo un diálogo más ágil y menos estructurado. Además, en la figura 7 se puede ver cómo la los estudiantes dan mayor puntuación a las herramientas de COLE-Programming. Así, en el caso de las herramientas genéricas, los estudiantes consideran el empleo del chat y del foro nada, poco u ocasionalmente interesante, pasando a considerar ocasionalmente, bastante o muy valiosos sus equivalentes en COLE-Programming, sobre todo el chat. Los valores tan altos en la opción de “no sabe o no contesta (ns/nc)”, en los casos del foro y la herramienta de votación, se debieron a aquellos estudiantes que optaron por no emplearlas, volviéndose así a confirmar la predilección de los estudiantes por la herramienta de chat.
El principal problema que destacaron en las herramientas colaborativas genéricas fue que éstas no estaban pensadas para compartir código, por lo que carecían de características como una correcta tabulación o el coloreado de sintaxis. Además, indicaron que, al encontrarse en ventanas externas al entorno de trabajo (Eclipse), debían cambiar su foco de atención constantemente haciendo que no pudieran centrarse en la tarea que estaban realizando. Igualmente, los estudiantes analizaron las características introducidas en las herramientas de COLE-Programming específicas para la Programación, como aquellas que permiten compartir código, mensajes de error y warnings, etc. Los resultados pueden apreciarse en la figura 8. En ella se ve cómo las características de compartir código con una correcta identación y formateo, así como el permitir el intercambio de los mensajes de error, mensajes de warning, etc., proporcionados por la salida del compilador, son los rasgos mejor valorados por los estudiantes. Es decir, aquellas funcionalidades añadidas específicamente para las tareas de Programación, resultaron ser las más útiles para los estudiantes. Además, resultan también interesantes a los estudiantes algunas mejoras en el awareness, tales como la personalización de colores para identificar a los usuarios que intervienen en la colaboración y la información relativa al instante de envío del último mensaje. Así, tras evolucionar COALA mediante la implementación del plug-in COLE-Programming, con herramientas colaborativas especialmente diseñadas para realizar tareas de Programación, contrastando su uso frente a las herramientas colaborativas genéricas proporcionadas por un LMS para la realización de tareas colaborativas de Programación, ha podido apreciarse cómo los estudiantes parecen encontrar especialmente atractivas aquellas integradas dentro del entorno de Programación. A la luz de la experiencia descrita, parece que los estudiantes prefieren emplear herramientas colaborativas específicas para la Programación, incluidas dentro del Entorno de Desarrollo Integrado que empleen para realizar las tareas, frente a las proporcionadas por otras alternativas genéricas basadas en LMS no integradas. VI. COMENTARIOS FINALES La Programación por Pares es una de las técnicas empleadas para la resolución de problemas de Programación de forma colaborativa en el proceso de enseñanza/aprendizaje de la competencia de Programación. A lo largo del presente artículo, se ha mostrado cómo dotar de soporte para la realización de tareas colaborativas, a
ISSN 1932-8540 © IEEE
JURADO et al.: COLE-PROGRAMMING: INCORPORANDO SOPORTE AL APRENDIZAJE COLABORATIVO... 129 un sistema para el aprendizaje de la Programación carente de las mismas. Para ello, se ha mostrado cómo han encajado en su arquitectura los requisitos necesarios para proporcionar soporte a la colaboración.. A continuación, se ha pasado a mostrar cómo ha quedado implementada la funcionalidad a modo de un plug-in para Eclipse al que se ha convenido llamar COLE-Programming. Posteriormente, se han analizado las primeras impresiones de los estudiantes respecto de las herramientas integradas en el entorno. Dichas impresiones apuntan que los estudiantes encuentran interesantes las características introducidas en las herramientas por COLE-Programming específicas para la Programación e integradas dentro del Entorno de Desarrollo Integrado que suelen emplear para realizar sus tareas de Programación. AGRADECIMIENTOS La presente investigación ha sido parcialmente subvencionada por el Ministerio de Ciencia e Innovación a través del proyecto “Entorno software para el aprendizaje en grupo de la programación y su integración, mediante estándares, en sistemas de gestión del aprendizaje” (REF: TIN2011-29542-C02-02) con evaluación ANEP, por la Junta de Comunidades de Castilla-La Mancha (España) a través de los proyectos iColab, INTEGROUP (REF.: PPII11-0013-1219) y GITE-LEARN (PEII11-0133-6335) y porla Universidad de Castilla-La Mancha a través del proyecto de innovación docente Prog-Colab. REFERENCIAS [1]
ACM/IEEE (2008), 'Computer Science Curriculum 2008: An Interim Revision of CS 2001. Report from the Interim Review Task Force', Technical report, ACM/IEEE Computer Society. [2] Allwood, T.; Chatley, R. &Sackman, M. (2004), 'Kenya. Technical Report', Technical report, Imperial College London. [3] de Barros, L. N.; dos Santos Mota, A. P.; Delgado, K. V. & Matsumoto, P. M. (2005), A Tool for Programming Learning with Pedagogical Patterns, in 'eclipse '05: Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange', ACM, New York, NY, USA, pp. 125-129. [4] de-la Fuente-Valentn, L.; Pardo, A. & Kloos, C. D. (2011), Generic service integration in adaptive learning experiences using IMS learning design, in Computers & Educcation 57(1), pp. 1160-1170. [5] Bonar, J. & Soloway, E. (1983), 'Uncovering Principles of Novice Programming', POPL '83: Proceedings of the 10th ACM SIGACTSIGPLAN symposium on Principles of programming languages, ACM, pp. 10-13. [6] Boyer, K. E.; Dwight, A. A.; Fondren, R. T.; Vouk, M. A. & Lester, J. C. (2008), A Development Environment for Distributed Synchronous Collaborative Programming, in 'ITiCSE '08: Proceedings of the 13th Annual Conference on Innovation and Technology in Computer Science Education', ACM, New York, NY, USA, pp. 158-162. [7] Brecht, J.; DiGiano, C.; Patton, C.; Tatar, D.; Chaudhury, S. R. and Roschelle, J. & Davis, K. (2006), Coordinating Networked Learning Activities with a General-purpose Interface, in 'Proceedings of the 5th World Conference on Mobile Learning'. [8] Brusilovsky, P.; Calabrese, E.; Hvorecky, J.; Kouchnirenko, A. & Miller, P. (1998), 'Mini-languages: a Way to Learn Programming Principles', Education and Information Technologies 2, pp. 65 -83. [9] BZ Research (2008), '5th Annual Eclipse Adoption Study', Technical report. [10] Chatley, R. (2001), 'Java for Beginners', PhD thesis, Imperial College London. [11] Chatley, R. & Timbul, T. (2005), 'KenyaEclipse: Learning to Program in Eclipse', SIGSOFT Softw. Eng. Notes 30(5), 245—248. [12] Devide, J. V. S.; Meneely, A.; Ho, C.-W.; Williams, L. & Devetsikiotis, M. (2008), Jazz Sangam: A Real-Time Tool for Distributed Pair Programming on a Team Development Platform, in 'Workshop on Infrastructure for Research in Collaborative Software Engineering, Atlanta, GA,'.
[13] Duque, R. & Bravo, C. (2008), Analyzing Work Productivity and Program Quality in Collaborative Programming, in 'ICSEA '08: Proceedings of the 2008 The Third International Conference on Software Engineering Advances', IEEE Computer Society, Washington, DC, USA, pp. 270-276. [14] Dodero, J. M. & Ghiglione, E. (2008), ReST-Based Web Access to Learning Design Services, in IEEE Trans. Learn. Technol.1 (3), pp. 190-195. [15] Dourish, P. and V. Bellotti (1992). Awareness and Coordination in Shared Workspaces. Proceedings of the Conference on Computer Supported Cooperative Work CSCW ´92, Toronto, Canada, ACM Press, New York. [16] Eclipse Foundation (2009), The Open Source Developer Report, May 2009. Eclipse Community Survey. [17] Eden, H.; Einsenberg, M.; Fischer, G. & Repening, A. (1996), 'Making learning a part of life', Commun. ACM 39(4), pp. 40-42. [18] Garrido, J.; Noguera, M.; Gonzalez, M.; Gea, M. &Hurtado, M. (2006), Leveraging the Linda Coordination Model for a Groupware Architecture Implementation, in 'Proceedings of 12th International Workshop on Groupware', Springer LNCS, pp. 286-301. [19] Gelernter, D. (1985), 'Generative Communication in Linda', ACM Transactions on Programming Languages and Systems 7 (1), 80-112. [20] Giemza, A.; Weinbrenner, S. & Engler, J.and Hoppe, H. (2007), Tuple Spaces as Flexible Integration Platform for Distributed Learning Environments, in 'Proceedings of ICCE 2007', pp. 313-320. [21] Gomes, A. & Mendes, A. J. (2007), Learning to Program Difficulties and Solutions, in 'International Conference on Engineering Education – ICEE 2007', pp. 283-287. [22] Ho, C.; Raha, S.; Gehringer, E. & Williams, L. (2004), Sangam: A Distributed Pair Programming Plug-in for Eclipse. in 'Systems, Languages, and Applications (OOPSLA), volume Eclipse Technology Exchange at Object-Oriented Programming'. [23] IMS-LD, (2003), 'IMS Learning Design. Information Model, Best Practice and Implementation Guide, XML Binding, Schemas. Version 1.0 Final Specification', Technical report, IMS Global Learning Consortium Inc, Online athttp://www.imsglobal.org/learningdesign (Last visited 08/06/2012) [24] Jurado, F.; Molina, A. I.; Redondo, M. A.; Ortega, M.; Giemza, A.; Bollen, L. & Hoppe, H. U. (2009), 'Learning to Program with COALA, a Distributed Computer Assisted Environment', Journal of Universal Computer Science 15(7), 1472-1485. [25] Jurado, F.; Redondo, M. A. & Ortega, M. (2009), Providing Instructional Guidance with IMS-LD in COALA, an ITS for Computer Programming Learning, in 'Proceedings of the Eclipse/Jazz Technologies for E-Learning, Special Session in Distance Education Technology (DET 2009) International Workshop, The 15th International Conference on Distributed Multimedia Systems (DMS'09)', pp. 211-215. [26] Jurado, F.; Molina, A. I.; Redondo, M. A. & Ortega (2011), Un Enfoque Distribuido Basado en Estándares para la Integración de Servicios y Agentes en Sistemas de eLearning, in Sierra, J.L. & Sarasa, A. eds., Avances en Ingeniería del Software Aplicada al Elearning, Universidad Complutense de Madrid - Área de Ciencias Exactas y de la Naturaleza, pp. 87-102. [27] Jurado, F.; Redondo, M. A. & Ortega, M. (2012), Blackboard Architecture to Integrate Components and Agents in Heterogeneous Distributed eLearning Systems: An Application to Learning to Program, Journal of Systems and Software.vol. 85, Issue 7, pp. 1621– 1636 [28] Koschmann, T. & Erlbaum, L., ed. (1996), CSCL: Theory and Practice of an Emerging Paradigm, Laurence Erlbaum Associates, Publishers. [29] Kumar, A. N. (2002), Learning Programming by Solving Problems, in 'Informatics Curricula and Teaching Methods', pp. 29-39. [30] Makkonnen, P. (2000), Do WWW-based Presentations Support Better (Constructiristics) Learning in the Basics of Informatics?, in '33rd Hawaii Int. Conf. System, Sciences'. [31] McConnell, J. J. (1996), 'Active Learning and its Use in Computer Science', SIGCUE Outlook 24(1-3), pp. 52-54. [32] Muñoz-Merino, P. J.; Kloos, C. D. & Naranjo, J. F., (2009), Enabling interoperability for LMS educational services, in Computer Standards and Interfaces 31 (2), pp. 484–498. [33] Pérez, J. R. P.; del Puerto Paule Ruiz, M. & Lovelle, J. M. C. (2006), SICODE: A Collaborative Tool for Learning of Software Development, in 'IV International Conference on Multimedia and Information & Communication Technologies in Education (mICTE2006)'. [34] Redondo, M.; Bravo, C.; Marcelino, M. & Mendes, A. (2004), Tools for Programming Learning: an Approach to Provide a Social
ISSN 1932-8540 © IEEE
130
IEEE-RITA Vol. 7, Núm. 3, Ago. 2012 Perspective Using Collaborative Planning of Design, in 'IADIS International e-Society 2004 Conference', pp. 315-322. Schollmeyer, M. (1996), Computer Programming in High School vs. College, in 'SIGCSE '96: Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education', ACM, New York, NY, USA, pp. 378-382. Toll III, V.T., Lee, R. & Ahlswede, T. (2007), 'Evaluating the Usefulness of Pair Programming in a Classroom Setting', Computer and Information Science, ACIS International Conference on 0, 302308. Satratzemi, M.; Dagdilelis, V. & Evagelidis, G. (2001), A system for program visualization and problem-solving path assessment of novice programmers, in 'ITiCSE '01: Proceedings of the 6th annual conference on Innovation and technology in computer science education'. Vizcaíno, A. (2001), 'Enhancing Collaborative Learning Using a Simulated Student Agent', PhD thesis, Universidad de Castilla-La Mancha. Williams, L. & Kessler, R. R. (2002), Pair Programming Illuminated. Addison-Wesley.
Ana I. Molina, es Ingeniera en Informática (2002) y Doctora (2007) por la Universidad de Castilla - La Mancha (España). Se encuentra adscrita a la Escuela Superior de Informática de la Universidad de Castilla La Mancha. Además de la enseñanza, sus principales intereses están en el campo de las Tecnologías de la Información aplicadas al aprendizaje colaborativo y la interacción persona-ordenador.
Francisco Jurado es profesor asociado en la Escuela Superior de Informática de la Universidad de Castilla– La Mancha. Sus áreas de investigación incluyen los Sistemas Tutores Inteligentes para el aprendizaje de la Programación, sistemas de eLearning heterogéneos y distribuidos, estándares de eLearning y entornos colaborativos asistidos por computador. Obtuvo su grado en Ingeniería Informática en 2005 y el grado de Doctor en Informática en 2010 por la Universidad de Castilla-La Mancha.
Manuel Ortega es Catedrático en la Escuela Superior de Informática de la Universidad de Castilla - La Mancha (España). Recibió su Licenciatura (1982) y grado de Doctor (1990) de la Universidad Autónoma de Barcelona (España). Es director de Grupo de Investigación Computer Human Interaction and Collaboration. Sus principales intereses están en el campo de las Tecnologías de la Información aplicadas al aprendizaje colaborativo e interacción persona-ordenador.
[35]
[36]
[37]
[38] [39]
Miguel A. Redondo es doctor en Informática (2002) y Profesor Titular en la Escuela Superior de Informática de la Universidad de Castilla - La Mancha. Sus intereses de investigación se centra en los campos de las Tecnologías de la Información aplicadas a la educación y la interacción persona-ordenador.
ISSN 1932-8540 © IEEE