1. Segundo Congreso Internacional de
Ingeniería del Software
Enseñanza de la Programación por
pares mediante el entorno Eclipse
2. Manuel Ortega
Escuela Superior de Informática
Mianuel.Ortega@uclm.es
Enseñanza de la
Programación por pares
mediante el entorno
Eclipse
3. Líneas de Investigación de CHICO
Manuel Ortega Cantero
Dr. Manuel Ortega Cantero
Catedrático de Universidad
Escuela Superior de Informática
Edificio Fermín Caballero, Desp A-1
Paseo de la Universidad, 4
13071 – Ciudad Real (España) Armenia (Colombia)
e-mail: Manuel.Ortega@uclm.es
11 de Octubre de 2012
Telf.: 926295481
Fax.: 926295354
4. Basic Research
• Informática Educativa y sistemas de E-Learning
– Diseño de modelos computacionales de e-learning
– Integración de ontologías, estándares y objetos de aprendizaje
en e-learning
• Interacción Persona – Computador
– Diseño y especificación de interfaces de usuario
colaborativas/cooperativas
– Diseño de interacción con dispositivos para computación ubicua
y móvil y Realidad Aumentada
5. El grupo CHICO
9. Dr. Francisco Jurado (Univ.
1. Dr. Manuel Ortega Lleida)
2. Dr. Miguel A. Redondo 10. Dr. Rafael Duque (Univ.
3. Dr. Crescencio Bravo Cantabria)
4. Dr. Miguel Lacruz 11. Dr. Jesús Gallardo (Univ.
Zaragoza)
5. Dr. Maximiliano Paredes (URJC)
12. Dr. William J. Giraldo (Univ.
6. Dra. Ana Isabel Molina Quindío)
7. Dr. Pedro P. Sánchez 13. Dr. Emiliano Almansa
8. Dra. Asunción Sánchez 14. Don Alfonso Aranda
15. Don Fernando Gallego
16. Don José R. Sánchez
6. Applied Research
• Aplicaciones industriales
– E-Learning
• Learning to write by writing on the web (EOI-JCCM)
• Learning Management Systems (LMS-MEC-JCCM)
• CIVI-ERASMUS (UCLM)
– Human – Computer Interaction
• Visualización instrumental y móvil (Repsol)
• Aplicaciones de diagnosis de automóviles (COJALI)
• Herramientas móviles de desarrollo (COFARCIR)
• Reuniones móviles (Grupo DINFOR)
• Herramientas CASE Tools para desarrollo de interfaces colaborativas
8. Current Research Projects with Public Fundings (I)
• AULA-T
– Desarrollo de métodos y sistemas de aprendizaje basados en
estándares para la enseñanza de la programación
– Grupo de Excelencia de la JCCM
9. Current Research Projects with Public Fundings (II)
• mGUIDE
– Framework metodológico para el desarrollo de para computación
móvil.
– Dos universidades
– COFARCIR
– Patrocinio de la JCCM
11. Current Research Projects with Public Fundings (IV)
• FAPPEC
Framework metodológico y tecnológico para la construcción de
sistemas de análisis de la colaboración en sistemas de soporte al
trabajo en grupo
– Participación de grupos de 2 universidades españolas
– Financiado por la JCCM
13. Nuevo Proyecto: EDUCA-PROG
• Sistemas de software avanzados para el
aprendizaje activo y colaborativo de la
programación.
– IPs de los Subproyectos:
• VELÁZQUEZ ITURBIDE; J. ÁNGEL
• REDONDO DUQUE; MIGUEL ANGEL
15. Introducción
Consideramos el desarrollo de un sistema de
eLearning como el desarrollo de un sistema
software
Desarrollo de software
Tarea costosa y compleja
Lenguajes orientados a objetos
Reutilización de componentes
Se requiere explorar nuevos paradigmas
17. Eclipse en eLearning
Eclipse
IDE de uso profesional y docente
Soporte para integración en CASEs
Por ejemplo, Visual Paradigm
No tiene soporte específico para enseñanza
Incorpora posibilidades de personalización y
expansión
Eclipse Communications Framework (ECF)
Web Tools Project (WTP)
Eclipse Modelling Framework (EMF)
Graphical Editing Framework (GEF)
Test and Performance Tooling Project (TPTP)
Business Intelligence and Reporting Tools (BIRT)
18. Eclipse en eLearning
Eclipse
Entorno personalizable (extensible) mediante
agregación de plug-ins
Persigue lograr una plataforma universal de
desarrollo
19. Eclipse en eLearning
Versión de Eclipse para educación
Pretende crear un entorno que permita a los
estudiantes centrarse en la tarea de aprender
Soporte para los lenguajes de programación y
herramientas de uso común en estas titulaciones
Ej. Java, Scheme, Prolog, etc.
Se encuentra en “incubation”
http://wiki.eclipse.org/Eclipse_IDE_for_Education
23. 504 Recursos docentes
temporal de los cambios producidos en el soporte de todos estos lenguajes incluye editores
código. con resaltado de sintaxis y marcación de errores
XV Jornadas dede compilación en el propiode la Informática
Enseñanza Universitaria código, depuración, 5
Eclipse en eLearning
Con estas características en mente se ha ayuda integrada, entre otras características.
desarrollado EclipseGavab, una herramienta Todos estos lenguajes se utilizan en diversas
colaborativa para la docencia online de la asignaturas para enseñar diferentes paradigmas o
programación. En la siguiente sección se metodologías de la programación.
Ejemplos
describen las características de esta herramienta. Desde el punto de vista colaborativo,
EclipseGavab incorpora un conjunto de
herramientas que dotan al entorno de desarrollo
3. Descripción de EclipseGavab
EclipseGavab
EclipseGavab es una distribución de Eclipse
de capacidades colaborativas como clientes de
chat, edición compartida del código y un cliente
orientada a la docencia presencial y online de la del sistema de control de versiones Subversion
informática. Esta distribución incluye soporte [18] que permite utilizar repositorios de código
para varios lenguaje de programación, lo que para compartir programas. El control del
permite su utilización en diferentes asignaturas, repositorio subversión se ofrece en
y un entorno colaborativo en el cual los alumnos EclipseGavab a través del plugin Subversive. El
pueden llevar a cabo su aprendizaje. Con chat y la edición compartida se implementan
EclipseGavab es posible aplicar el Aprendizaje con el plugin Eclipse Communication
Basado en Proyectos en la enseñanza online. En Framework. Este plugin presenta características
la Figura 1 se muestra el logotipo de esta similares al módulo Collab de Netbeans.
herramienta. Las Figura 2 y 3 muestran una sesión de
edición compartida de código. La Figura 2
muestra el entorno EclipseGavab que está
siendo utilizado por el profesor. La Figura 3
muestra el entorno que está siendo utilizado por
el alumno. El profesor incluye un comentario en
el código del alumno indicándole que la
implementación que ha realizado de una
determinada funcionalidad que se le requería en
la práctica no considera un caso básico. En su
editor, el alumno observa inmediatamente lo que
el profesor escribe.
Eclipse es un sistema modular que permite
la inclusión de funcionalidades para el
Figura 1. Logotipo de EclipseGavab
desarrollo en diversos lenguajes de
Como se ha comentado anteriormente, para programación. Están disponibles componentes
que una herramienta pueda utilizarse en el para muchos lenguajes de programación, pero al
25. U N M É T O D O P A R A E L D E S A R R O L L O D E S IS T E M A S C O L A B O R A T IV O S D E M O D E L A D O
Desarrollo MDE para Eclipse
Framework metodológico
26. Desarrollo MDE para Eclipse
Framework conceptual
Metamodelos que se usan en el proceso
Metamodelo del dominio
Metamodelo del espacio de trabajo
Metamodelos de la sesión de trabajo
Metamodelo del protocolo de colaboración
27. Desarrollo MDE para Eclipse
Framework Tecnológico
Ejemplo de creación de un editor gráfico
Selección de objetos gráficos (o
diccionario gráfico) con gmfgraph
Modelo de dominio
con ecore
Construcción de
herramientas
con gmftool
Correspondencia/mape
o dominio-gráficos con
gmfmap
33. Introducción a COALA
• Ayudar a adquirir la competencia de la
Programación
– Diseño de ITS (Intelligent Tutoring System) para
aprender a programar COALA
• eLearning standards
• Interoperable
• Agregación Ad-hoc de componentes
• Interacción natural
– COALA: Computer Assisted Environment for
Learning Algorithms
35. Fuzzy representation
Fuzzy representation
of the ideal algorithm
of the ideal algorithm
Degree of membership
with the fuzzy set
Metrics
Metrics Metrics
Metrics
Calculation
Calculation Calculation
Calculation
Algorithm that
Algorithm that Algorithm for
Algorithm for
Writes Writes
solves
solves trying to solve
trying to solve
the problem
the problem The Problem
The Problem
Teacher Student
Test
Test Runs test cases
Sets
Cases
Cases
36. Penalty Penalty
Not acceptance region Total acceptance region Not acceptance
region region region
1
Low High
Normal
0
a b c d
Measured
Value
37. McCabe n
1,20
1,00
Assessment OWA( pi ) = ∑ a µ(x )
i =1
i i
0,80
0,60
0,40 Explanation Fuzzy Rules + Test Cases
0,20
0,00
0 2 4 6 8 10 12 Control Complexity
1,20
Normal Low High
1,00
0,80
Operational Complexity 0,60
1,20 0,40
1,00 0,20
0,80 0,00
0,60 0 2 4 6 8 10 12
0,40
Normal Low High
0,20
0,00
0 2 4 6 8 10 12
Normal Low High
39. 1: Send task 3: Download LD
6: Notify solution TupleSpace 4: Download task
5: Send solution
8: View evaluation Server
COALA’s instance 8: View evaluation
for the teacher 2:
Se
8:
9: Ch nd
ion n Se an LD COALA’s instance
t io nd ge fo
solu lu at up pr r for the students
tify va da o p eac
e h
No d te er
ty us
6: S en d
LD er
7:
WS Proxy
LD Service
EJB/WS
Evaluator
Service
LDs use from Tuple Space Server:
-Tasks
-Evaluations
Runs use from LD enginee:
-Users
64. Resumen de COALA
• COALA ITS
– Modelos:
• Cognitive Student Model Conjunto de evaluaciones
• Instructional Model Especificaciones del learning design Artefact
Model Lógica difusa
– Características:
• Entorno sobre Eclipse
• Sistema heterogéneo distribuido SQLSpaces
Extensible
• Escritura a mano
• Mejoras para el estudiante
– Mejota de la Interfaz de usuario Edunet
– Motor para TupleSpace Tuple-LD
– Herramientas colaborativas COLE-Programming
66. Introducción
• Contexto: Aprendizaje de la programación
– Escenario tipico: Clases teóricas + lab. de programación
– Actividades que implican resolución de problemas
• Fomentar un aprendizaje activo
– Los estudiantes
• deben aprender a diseñar, desarrollar, verificar y depurar
• empleando herramientas profesionales (IDEs) que están
diseñadas para programadores profesionales (p. ej. Eclipse,
JDeveloper, NetBeans, IntelliJ, etc.)
• Propósito:
• Introducir mejoras en entornos profesionales mediante
herramientas que soporten al proceso de
aprendizaje/enseñanza.
67. Introducción
• La implantación de los principios propuestos por el EEES incluye el
trabajo en grupo como técnica a potenciar en las aulas.
• Computer Supported Collaborative Learning
– Aprovecha el efecto sinérgico de que varios estudiantes colaboren
para resolver un problema
– Proporciona el soporte computacional que les permita comunicarse y
coordinarse en la realización de sus actividades de aprendizaje
• Aplicado al aprendizaje de la Programación
– Programación por pares
68. Objetivo
• Dar soporte computacional a contextos educativos CSCL para
aprendizaje de la programación.
• Dos aproximaciones:
– herramientas y servicios colaborativos de uso extendido y
generalizado (como aquellos que proporcionan los LMS)
– herramientas y servicios colaborativos más adaptados a la tarea
concreta a realizar e integrados dentro del entorno de aprendizaje
que habitualmente se emplee para la enseñanza de esta disciplina.
• Se pretende: evolucionar COALA sistema existente para el
aprendizaje de la Programación sin soporte para la realización de
tareas colaborativas, dotándole de herramientas colaborativas
integradas en dicho entorno
69. Identificando necesidades
• Identificar las necesidades en cuanto a IDEs de
Programación (y de Eclipse en particular)
• Objetivo:
– 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 intercambia a través de
las mismas, etc.
• Método:
– Cuestionario cumplimentado por estudiantes de la asignatura
Sistemas para la Colaboración de 5º Curso de la Ingeniería
Superior en Informática de la UCLM.
70. ¿ A q u é h e r r a m i e n t a s d e c o m u n i c a c ió n / c o o r d i n a c i ó n s u e l e r e c u r r ir ?
E -m a il Chat 1 Fo ro A u d i o / v i d e o c o n f e r e n c ia R e d e s s o c ia l e s 1
0% 0%
4
3 6% 1 4 5 5 2 5
1
2
6% 6% 1 11% 22% 14% 5
18% 35% 4 29% 2 30% 20%
44%
3 22% 14%
3
31%
2 3 0% 4 3
2 4
41% 45% 20% 30%
13% 43%
¿ Q u é t i p o d e i n f o r m a c i ó n in t e r c a m b i a ?
M e n sa je s d e e r r o r C o p i a l i t e r a l d e c ó d ig o Fich e r o s f u e n t e P a n t a lla z o s d e c ó d igo P a n t a lla d e a p ln e n
m o m en to d e erro r
4 4 1 5 1 5 1
6% 1 19% 1 16% 17% 16% 10% 2
5 20%
3 38% 31% 10%
42% 2
31%
4 17%
3 25% 4 3
2 2
2 31% 3 30% 30%
19% 42%
25% 25%
71. Soporte a la Colaboración en la
Arquitectura de COALA
COLE-Programming
Otros servicios Lado del cliente Lado del servidor
Eclipse SWT Resto
Chat Foro Pool
Viewers
Viewers/Editors Viewer Viewer Viewer COALA
Resto
Eclipse SWT Chat Foro Pool
Controllers
ContentProviders Controller Controller Controller COALA
Servicios Chat Foro Pool
Resto
Proxies
Lógica conversión
COALA Eclipse
Proxy Proxy Proxy COALA Tuplas - SQL
SQLSpaces Platform SQLSpaces
SQLSpaces Client Stubs MySQL
Client Stubs Server
JVM JVM JVM
Conexión TCP
75. Mensaje de descripción
Tipo de mensaje
(código, error, warning, etc.)
Código fuente, mensaje
de error, etc.
Identificador del mensaje compartido
76. Filtrado de mensajes
Selección del filtro
Colores para identificar el
Especificación del
tipo de mensaje
tipo de mensaje
77. Monitorización
Qué usuario se
monitoriza
Actividad
Participación
Para cada Colaboración
herramienta
78. Experiencia
• Objetivo:
– Analizar la viabilidad de la propuesta
• Cómo:
– Comprobar qué alternativa prefieren los estudiantes sobre
herramientas colaborativas:
• específicas para la Programación e incluidas dentro del IDE
• genéricas basadas en LMS no integradas
• Participantes:
– 16 estudiantes de la asignatura Sistemas para la Colaboración de 5º
Curso de la Ingeniería Superior en Informática de la UCLM
• Los mismos a los que anteriormente se les pasó el cuestionario para
identificar las necesidades en herramientas colaborativas específicas para la
Programación.
• Para la experiencia los estudiantes fueron agrupados aleatoriamente en
parejas.
79. Experiencia
• Procedimiento:
– 1ª sesión práctica (Eclipse+Herram. extern. Moodle): 40 min.
• Ejercicio de Programación haciendo uso de Eclipse, así como las herramientas
externas de comunicación y coordinación incluidas en Moodle.
– Cuestionario (Eclipse+Herram. externas Moodle): 10 min
• Evaluar su impresión sobre dichas herramientas.
– 2ª sesión práctica (Eclipse+COLE-Programming): 40 min.
• Ejercicio de Programación (nivel de complejidad similar), usando las
herramientas integradas en Eclipse (COLE-Programming).
– Cuestionario (Eclipse+COLE-Programming): 10 min
• Evaluar su impresión sobre dichas herramienta
• Cuestionarios:
– Preguntas de respuesta acotada escala tipo Likert del 1 al 5
– Preguntas de respuesta abierta para emitir opinión o dar
explicación/justificación
80. Resultados
P u n t u a ció n a la s h e r r a m ie n t a s P u n t u a ció n a la s h e r r a m ie n t a s
co la b o r a t iv a s g e n é rica s in t e g r a d a s e n CO LE-P r o g ra m m in g
80% 80%
70% 70%
60% 60%
50% 50%
C hat 40% C h at
40%
30% 30%
20% Foro 20% Fo ro
10% 10%
0% 0% H e r r a m ie n ta s d e
H e r r a m ie n ta s d e
v o t a c ió n v o ta c ió n
81. Resultados
U t ilid a d d e c a ra ct e r íst ica s e sp e cíf ic a s p a r a la p r o g r a m a c ió n e n
C O LE -P r o g ra m m in g
60%
50%
P e r s o n a liz a c ió n d e c o lo r e s
40%
30% In fo r m a c ió n d e l in s t a n t e d e
e n v ío d e l ú lt im o m e n s a je
20%
H e rra m ie n ta d e
10% c o m p a r t ic ió n d e c ó d ig o
0% H e rr a m ie n t a p a r a c o m p a r t ir
e r r o r e s , w a r n in g s , e t c
82. Conclusiones (I)
• Marco de trabajo y aplicación:
– Resolución de problemas de Programación de forma colaborativa
• Técnicas como la Programación por Pares
• Dentro del EEES
• Identificación de necesidades apuntadas por los estudiantes
para la realización de tareas colaborativas de Programación
– Requisitos funcionales para construir un sistema colaborativo para el
aprendizaje de la Programación
83. Conclusiones (II)
• Construcción del sistemaEvolución de COALA + COLE-
Programming
– Partiendo de COALA: sistema sin soporte para la colaboración basado
en Eclipse
– Integración de los requisitos necesarios en su arquitectura para
proporcionar soporte a la colaboración
– Se ha mostrado cómo ha quedado implementada la funcionalidad
identificada por los estudiantes en el plug-in para Eclipse COLE-
Programming.
• Primeras impresiones de los estudiantes:
– Resultan interesantes las características introducidas en las
herramientas por COLE-Programming específicas para la
Programación e integradas dentro del IDE que suelen emplear para
realizar sus tareas de Programación.
85. ¿Preguntas?
Enseñanza de la
Programación por
pares mediante el
entorno Eclipse
Notas del editor
Pregunta: Educational Tools o EducationalToolIntegration? Tools, aunque sea posicion adjetiva. Cámbialo tú en el título patrón de las demás diapositivas, que no me acuerdo en esta versión (bueno es que me sale en español, no sé) Nota: Se ve poco tu nombre y filiación. Yo lo pondría debajo, aunque se repita luego en blanco. He cambiado sobre todo las tres diapositivas de AWLA y AIOLE las he dejado en dos, y les he puesto texto en español debajo. Miralas a ver qué tal.
He añadido Learning Design based on Frameworks and ePortfolios ya que luego incluyes AWLA y AIOLE
Fuentes: Paco Jesús William
Fuentes: Paco Jesús William
Hecho en URJC para Pasacal, C, Haskell y otros
Fuentes: Paco Jesús William
Fuentes: Paco Jesús William
Abstract —Programming is an important competence for the students of Computer Science. These students must acquire knowledge and abilities for solving problems and it is widely accepted that the best way is learning by doing. On the other hand, computer programming is a good research field where students should be assisted by an Intelligent Tutoring System (ITS) that guides them in their learning process. In this paper we will present how we have provided guidance in COALA, our ITS for programming learning, merging Fuzzy Logic and IMS Learning Design.
In our system the teacher writes an implementation for the ideal algorithm that solves a problem. Next, several software metrics will be calculated for this proposal. With this we obtain an instance of the ideal approximated algorithm metrics. But to take into account the vagueness of the response, the fuzzy set for each metric will be established in order to compare this fuzzy representation with the student ’ s algorithm. Algorithms that students have written (on the right of the figure) will be correct according with the fuzzy representation of the metrics because these metrics, will give us an idea of the quality of the algorithm that students have developed. The fuzzy approach of this Artefact model face the static part of the algorithm. This part is complemented with the dynamic test based on running test cases for the algorithm. With this method, we have an artefact model that manages imprecision and vagueness; furthermore, it is based on solid software engineering practice.
The fuzzy representation of an algorithm is presented here. This is the classical manner of representation of fuzzy sets that we are using because of his powerful We have two regions in which the metric don ’ t fit the requirements of the solution with values represented by LOW and HIGH Labels. A region of Total acceptance (The NORMAL one) and two penalty Areas between the other regions. With this representation for each metric we can correct the students ’ algorithm presenting to them advices over the code.
In this slide we can see some of the metrics used in our system to measure the correctness of the students ’ solutions. For example: The McCabe or the operational and control complexity. And also you know that we are extensively using the Test Cases approach to complement the fuzzy measurement of the algorithms.
We are using two technologies broadly used to developed our system: The Eclipse environment in which we have added plugins for the evaluation of the algorithms and for the test cases. We also have a Learning Design (LD) engine to present the student the related materials and the algorithms to design. We used as a middleware the SQLSpace, a Tuple Space implementation made at the Essen –Duisburg University in the COLLIDE research group. With this group we are doing some common research in the last years.
In the next slides we are showing several screenshots of the eclipse environment with our plugins. In this slide on the left we can see the activity tree according to the Learning Design made by the teacher with some programming tasks to download and in the case presented here with a simple reading activity previous to solve the programming tasks. In the web of the COALA project you can see another application developed by our group CHICO specifically made for this kind of reading tasks named EDUNET.
If the connection to the system is in teacher mode, there are another kind of actions to be performed, for example for changing the values in the fuzzy representation of the values or for making rules with a visual editor developed with the Graphical Eclipse Framework (GEF). In this case we are formulating a rule with the result “ You have developed a good solution ” with the premises in 4 variable in the range “ NORMAL ”
In the system we added a Graphical Editor capable of making handwriting annotations over the code of the students. This feature is very useful to correct the code of the students or for reinforce the basic ideas studied in the assessments. This handwriting notes are uploaded to the student and can be easily selected by the teacher to present conclusions about the code generation.
This is a screenshot of the student environment with the handwriting note of the teacher and the annotations automatically made by the system
This is a Photo of one of the sessions realized for testing the tool in the classroom. In this case the teacher is the main developer of COALA. He is a Ph D student, Francisco Jurado, the first researcher in the signature of this paper.
In this photo we are seeing the correction with a pen –based interaction, more natural and useful than other approaches.
And in these slides we are presenting some preliminary results over the use of the COALA system in a classroom in Spain. We are doing the same tests in the Duisburg – Essen University in a research stay of Francisco Jurado previous to the defense of his doctoral thesis. The results of the use of our tool are very positive in the scoring assigned by the student. This is one of the questions about how stimulating is the use of our tool…
And the results over the integration of our tools in the Eclipse environment are also “ prometedores o algo así ”
Similar results for the covering of necessities to develop the tasks.
And finally a global satisfaction
Fuentes: Paco Jesús William
En las diferentes asignaturas relacionadas con esta competencia, el método de enseñanza más empleado suele basarse en actividades que impliquen resolución de problemas [16] [26]. El escenario típico consiste en complementar las clases teóricas con laboratorios de Programación [25] [30], tratando de fomentar un aprendizaje activo [27]. Además, 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 [32], en los laboratorios de Programación se suelen emplear entornos de desarrollo integrado 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 la competencia de Programación, puede resultar una aproximación interesante.
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 ) [24], 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 [33] [29] [28] [12]. La aplicación de CSCL para el aprendizaje de la Programación proporciona un medio en el que los estudiantes pueden interactuar y comunicarse entre sí, 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 [34], 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 proceso de aprendizaje [31].
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 una componente más colaborativa a este soporte computacional. Este último tipo de herramientas pueden emplearse para cubrir ciertas necesidades de coordinación y comunicación entre los profesores y los estudiantes y entre estudiantes. Nuestro objetivo en este trabajo, es dar soporte computacional a contextos educativos que apliquen la técnica de la Programación por Pares. Para soportarlo se pueden optar por dos aproximaciones: el manejo de herramientas y servicios colaborativos de uso extendido y generalizado, como aquellos que proporcionan los LMS (implantados en muchas instituciones educativas); el empleo de herramientas y servicios colaborativos más adaptados a la tarea concreta a realizar (en nuestro caso la resolución de problemas de Programación) e integrados dentro del entorno de aprendizaje que habitualmente se emplee para la enseñanza de esta disciplina. En particular, en el presente trabajo se pretende evolucionar un sistema para el aprendizaje de la Programación ya existente y sin soporte para la realización de tareas colaborativas, el cuál está basado en un entorno de desarrollo integrado ampliamente extendido como es Eclipse, dotándole de herramientas colaborativas que quedarán integradas en dicho entorno.
Con el fin de identificar las necesidades en cuanto a 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 intercambia a través de las mismas, etc., se elaboró un cuestionario que fue cumplimentado por 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).
En la figura se muestran los porcentajes en cuanto a la tendencia de uso que los estudiantes tienen respecto a las herramientas colaborativas a emplear y al tipo de información que intercambian a la hora de realizar una tarea colaborativa de Programación. Los estudiantes elaboraron una ordenación en una escala Likert de 1 a 5 (siendo 1 la opción menos deseada y 5 la opción más deseada). Como datos relevantes, 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).
Como se ha mencionado con anterioridad, el punto de partida para nuestro trabajo es COALA [21] [22]. La figura muestra el diagrama de bloques de la arquitectura de COALA una vez añadidos el plug-in COLE-Programming. COALA fue desarrollado como plug-in s para Eclipse, con el fin de permitir el empleo de un entorno de Programación real en un ámbito académico. El plug-in para Eclipse de COALA permite la comunicación a través de un servidor de espacios de tuplas [17] [18]. 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 [23]. Dado que la opción de los espacios de tuplas parece apropiada para implementar sistemas colaborativos eLearning [6] [15], parecía factible emplear la arquitectura de COALA para implementar los nuevos servicios. Como puede apreciarse, la implantación de las herramientas colaborativas sobre la arquitectura inicial de COALA resulta sencilla. Tan sólo hubo que 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. En la siguiente sección se describirán las funcionalidades implementadas en las herramientas colaborativas. 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 (SQLSpaces Server a la derecha) se ejecuta sobre una máquina virtual de Java (JVM) que 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. 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). (click) Se ha implementado el plug-in que hemos convenido llamar COLE-Programming ( Collaborative Learning Programming ) que implementa las herramientas de chat, foro y pool de votaciones.
La figura 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 las funcionalidades que los estudiantes apuntaron y que describiremos más adelante. Además añade un pool de votaciones (abajo). Para facilitar el intercambio de la información que los estudiantes apuntaron como necesaria en una comunicación durante una sesión colaborativa de Programación (sección 3), se añadió lo necesario para que pudieran compartir código, mensajes de error del compilador, mensajes de alerta ( warnings ), etc. 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 5. É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 amarecerá un mensaje del tipo “<usuario> publicó el <tipo de mensaje>: <id>” , 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.
La figura 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 las funcionalidades que los estudiantes apuntaron y que describiremos más adelante. Además añade un pool de votaciones (abajo). Para facilitar el intercambio de la información que los estudiantes apuntaron como necesaria en una comunicación durante una sesión colaborativa de Programación (sección 3), se añadió lo necesario para que pudieran compartir código, mensajes de error del compilador, mensajes de alerta ( warnings ), etc. 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 5. É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 amarecerá un mensaje del tipo “<usuario> publicó el <tipo de mensaje>: <id>” , 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.
La figura 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 las funcionalidades que los estudiantes apuntaron y que describiremos más adelante. Además añade un pool de votaciones (abajo). Para facilitar el intercambio de la información que los estudiantes apuntaron como necesaria en una comunicación durante una sesión colaborativa de Programación (sección 3), se añadió lo necesario para que pudieran compartir código, mensajes de error del compilador, mensajes de alerta ( warnings ), etc. 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 5. É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 amarecerá un mensaje del tipo “<usuario> publicó el <tipo de mensaje>: <id>” , 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.
Para facilitar el intercambio de la información que los estudiantes apuntaron como necesaria en una comunicación durante una sesión colaborativa de Programación, se añadió lo necesario para que pudieran compartir código, mensajes de error del compilador, mensajes de alerta ( warnings ), etc. 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. É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 amarecerá un mensaje del tipo “<usuario> publicó el <tipo de mensaje>: <id>” , 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. 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. Además, 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.
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) 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.
Se planteó una experiencia que permitiera analizar la viabilidad de la propuesta. Así, se trató de comprobar si 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. Para ello, se tomó la evolución llevada a cabo a 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. En la experiencia llevada a cabo participaron los 16 estudiantes de la asignatura Sistemas para la Colaboración de 5º Curso de la Ingeniería Superior en Informática de la Universidad de Castilla-La Mancha (UCLM) a los que anteriormente se les pasó el cuestionario para identificar las necesidades en herramientas colaborativas específicas para la Programación. Para la realización de la experiencia los estudiantes fueron agrupados aleatoriamente en parejas.
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): Todos los estudiantes formaron parejas (creados por los experimentadores de forma aleatoria) de dos participantes. 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. 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+COLE-Programming): Los mismos parejas de trabajo que participaron en la primera sesión de trabajo 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 deberían contestar siguiendo una escala tipo Likert con puntuaciones del 1 al 5 (1: nada, 2: poco, 3: ocasionalmente, 4: a menudo, 5: mucho), así como preguntas de respuesta abierta en las que podían emitir su opinión o dar explicación y justificación sobre determinadas cuestiones.
En la figura se ven 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 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 el foro resulta 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. 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 de 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 encuentran especialmente atractivas aquellas integradas dentro del entorno de Programación.
Una de las técnicas empleadas en el proceso de enseñanza/aprendizaje de la competencia de Programación implica la resolución de problemas de Programación de forma colaborativa, aplicando técnicas como la Programación por Pares. Así, tras analizar los antecedentes sobre los sistemas que permiten dar soporte a los laboratorios de Programación, se ha mostrado cómo se han identificado las necesidades apuntadas por los estudiantes para la realización de tareas colaborativas de Programación, extrayendo así los requisitos funcionales para las herramientas de un sistema colaborativo para el aprendizaje de la Programación. Con ello, se ha mostrado cómo se ha tomando como punto de partida COALA (un sistema existente para el aprendizaje de la Programación sin soporte para la colaboración basado en Eclipse), y se ha detallado cómo se han encajado en su arquitectura los requisitos necesarios para proporcionar soporte a la colaboración, pasando posteriormente a mostrar cómo ha quedado implementada la funcionalidad identificada por los estudiantes en el plug-in para Eclipse 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.