“Una Metodología para el aprendizaje de la Programación

Anuncio
“Una Metodología para el aprendizaje de la Programación
Orientada a Objetos basada en Programación Extrema (XP)”
“A Methodology for learning Object Oriented Programming
based on Extreme Programming (XP)”
Diva Sanjur Araúz
Universidad Tecnológica de Panamá
Facultad de Ingeniería de Sistemas Computacionales
[email protected]
RESUMEN
Palabras Claves
En este documento se presenta nuestra propuesta de investigación
que consiste en la enseñanza de Java como Lenguaje de
Programación Orientado a Objetos, a través del diseño e
implementación de una metodología de aprendizaje basada en la
integración de herramientas de Tecnologías de la Información y
Comunicaciones como lo son Cmap Tools para el modelado del
conocimiento y BlueJ como un ambiente de desarrollo integrado e
interactivo para aprender a programar en Java. Este estudio se
aplicará a estudiantes de 11°, en un curso de programación
regular, en el periodo comprendido a dos bimestres de clases y se
dará a través de la comparación de dos segmentos de la población
estudiantil, los cuales paralelamente se dedicarán al aprendizaje
de este lenguaje de programación.
BlueJ, concepto, Cmap Tools, colaboración, GUI, Java, Karel++,
mapas conceptuales, palabras de enlace, programación extrema,
ObjectKarel, OO, POO, programación en pares, proposición,
software de exploración, software de marcado, WebCT, WEBL.
ABSTRACT
This paper presents our research proposal that consist in teaching
Java as a Programming Language Object Oriented, through the
design and implementation of a learning methodology based on
integration of tools of Information Technology and
Communications as are Cmap Tools for knowledge modeling and
BlueJ as an integrated development environment for interactive
learning to program in Java. This study will apply to students
from 11° in a regular programming course, in the period of two
bimonthly periods of classes and will be through the comparison
of two segments of the student population, which will be devoted
in a parallel form in the process of learning this programming
language.
Categories and Subject Descriptors
D.1.5 [Software]: Object Oriented Programming.
General Terms
Documentation, Experimentation, Verification.
Keywords
BlueJ, concept, Cmap Tools, collaboration, extreme
programming, GUI, Java, Karel++, concept maps, linking words,
marking software, ObjectKarel, OO, OOP, pair programming,
proposition, scanning software, WebCT, WEBL.
1. INTRODUCCIÓN
La programación orientada a objetos (POO) modela el mundo
real, cualquier cosa del mundo puede ser modelada como un
objeto. Por ejemplo: una circunferencia es un objeto, un
automóvil es un objeto, una ventana es un objeto, un libro es un
objeto e incluso un préstamo o una tarjeta de crédito son
objetos[1]. De allí que con la POO podemos crear estructurar de
programas sobre la base de los objetos, los cuales tienen
propiedades (un estado) y un comportamiento que son
especificados en su clase.
Un programa en Java se denomina orientado a objetos (OO)
debido a que la programación en Java se centra en la creación,
manipulación y construcción de objetos[1].
Los lenguajes que utilizan este tipo de programación son
muchos y entre los más importante se pueden mencionar los
siguientes: JAVA, C++, Delphi, Smalltalk, la mayoría de los
lenguajes de la plataforma de Microsoft.NET, como Visual
Basic.NET, C# y ASP.NET.
Tomando en consideración lo antes expuesto, al tratar de
introducir la enseñanza de un lenguaje de POO, como lo es Java,
debemos tomar en consideración que existe una gran diversidad
en las habilidades, velocidad en el aprendizaje y aptitudes de los
estudiantes, es por ello que la atención sobre las dificultades que
enfrenta una persona no puede ser tratada fácilmente en una clase
en la que hay muchos estudiantes, de tal forma que los docentes
deben buscar diversas vías alternativas que ayuden a los
estudiantes en su aprendizaje[2].
Partiendo de esto, podemos decir que el aprender a programar
en un lenguaje de programación es una tarea bastante ardua, para
muchos estudiantes difícil y compleja, en la que deben
concentrarse en el aprendizaje de los contenidos esenciales para
adquirir los conceptos principales del lenguaje y poder así aplicar
los conocimientos en el desarrollo progresivo del programa.
Aún cuando existan dificultades, el aprendizaje de algún
lenguaje de programación en particular resulta bastante
interesante, debido a que permite que el desarrollador del software
cree la aplicación de acuerdo a los requerimientos que necesita en
un momento determinado y de la misma forma le permite
modificar la aplicación de acuerdo a las posteriores necesidades
que se presenten, tanto durante la realización como también
después de la implementación del mismo.
Muchos métodos han sido utilizados por los docentes en la
enseñanza de la programación, como lo son[2]:
La elección de el primer lenguaje de programación;
La elección del libro de texto del curso;
La elección del ambiente de programación;
Variaciones en los métodos de enseñanza;
Variaciones en las asignaciones.
En este estudio proponemos una nueva metodología a seguir
en la enseñanza de Java como lenguaje de POO y la integración
de las TIC’s como herramientas de gran ayuda e importancia en el
proceso de E-A.
El resto del documento está organizado como sigue. La
sección 2 presenta una visión general sobre la problemática
encontrada. La sección 3 hace referencia a los trabajos
relacionados a la investigación y que nos han servido de
referencia para la misma. La sección 4 presenta la propuesta de
tesis, tecnologías y herramientas y la arquitectura del ambiente.
En la sección 5 se presentan breves conclusiones del documento.
2. PROBLEMÁTICA
En el ámbito de la educación en los colegios públicos
panameños, y muy específicamente en el Centro de Educación
Básica General Stella Sierra, el cual es un centro educativo que
consta de un Bachillerato en Ciencias con instrumentación en
Informática, lo que significa que los egresados de este bachillerato
deben tener conocimientos muchos más amplios que el resto en
cuanto al área de Informática en sí y más aún sobre Programación,
la enseñanza de algún lenguaje de programación tiene muchas
deficiencias, entre las que se mencionan las siguientes:
Carencia de metodologías adecuadas de enseñanza.
Existen deficiencias marcadas en cuanto a la
realización de contenidos programáticos basados en
competencias.
No hay libros de texto definidos para la enseñanza de
la programación.
En los planes de este bachillerato, se contemplan
materias de Programación en los últimos niveles
escolares del bachillerato, y no desde niveles
previos, de tal forma que los estudiantes puedan ir
adquiriendo una base para las materias posteriores.
En la Tabla 1 se muestran las materias del área de Informática
que se imparten en el centro educativo de acuerdo a los niveles
escolares.
Tabla 1. Materias de Informática por nivel escolar.
Nivel escolar
10°
10°
11°
11°
12°
12°
Materia
Introducción a la Computadora
Utilidad I
Programación I
Utilidad II
Programación II
Tendencia
Como se muestra en la Tabla 1, en el Nivel 11°, se encuentra
dentro del plan de estudio del bachillerato, el lenguaje de
programación C; de la misma forma en el Nivel 12° se encuentra
dentro del plan de estudio del bachillerato, el lenguaje de
programación Visual Basic. Aclaramos que los planes de estudio
no se siguen de una manera rígida, sino de acuerdo al criterio de
cada uno de los docentes involucrados en la enseñanza.
Si bien es cierto Visual Basic es un lenguaje de POO, se
requiere de una licencia para su uso, lo que resulta costoso para el
centro educativo al momento de adquirir el software para un
grupo de aproximadamente 25 computadoras por laboratorio que
requiera utilizar este lenguaje. Visual Basic es un software que
sólo se ejecuta en plataformas Windows.
Java es un software de utilización libre de Sun Microsystems,
lo cual permite que el centro educativo no incurra en gastos extras
e innecesarios. Java es multiplataforma y tiene la gran ventaja que
los programas realizados en este lenguaje pueden ejecutarse en
una diversidad de plataformas sin tener la necesidad de
modificarlos, por lo que proponemos la utilización de este
lenguaje de POO en la realización de este estudio.
En las aulas de clases, de manera regular, los estudiantes
aprenden las técnicas necesarias para programar de manera
tradicional, utilizando el muy conocido tablero, en el que el
docente explica ampliamente los conceptos que considere
convenientes para que los estudiantes comprendan el tema y se
inicien en la programación de un software utilizando la técnica de
programación secuencial.
Lo que se trata de buscar en nuestra propuesta, es la enseñanza
de Java como lenguaje de POO utilizando una nueva metodología
de enseñanza, en la que los estudiantes se sientan cómodos y
satisfechos con los conocimientos adquiridos a través del curso de
programación, enfocando el mismo en la enseñanza de los
procesos básicos de un lenguaje de POO y buscando que la
enseñanza del mismo lenguaje no sea tan monótona, sino más
bien que resulte de la interacción del estudiante con nuevas
herramientas tecnológicas que le permitan asimilar el
conocimiento con mayor facilidad y obtener un aprendizaje
significativo y útil, y de la misma forma que contribuya a que los
estudiantes se adentren en la utilización de las Tics con el objetivo
de brindarles una pedagogía diferente a la usual y de esta forma
aprovechar todo ese potencial que las Tics representan y que no se
está explotando en su totalidad.
las que se introducía el nuevo material de las sesiones de
laboratorio en donde este nuevo material se ponía en práctica.
Justificamos nuestra propuesta en la necesidad creciente de
contar con nuevos e innovadores métodos de enseñanza en los que
se integren a los estudiantes en el uso de nuevas tecnologías que le
permitan adquirir conocimiento y de la misma forma que los
mantengan actualizados, ya que cada día que transcurre es un
nuevo reto a seguir, por lo que se considera necesario hacer
nuevas propuestas dentro del campo de la enseñanza en nuestro
país.
El libro de texto utilizado en este estudio fue Horstmann y todo
el material del curso estaba disponible en la página de la Intranet
del Departamento de Sistemas de Información y Comunicación
(DISC) de Brunel. El material del curso incluía detalles del mismo
curso (ejemplos: guías de estudios, horarios, datos de contacto del
grupo de trabajo, descargas de software, etc.), copias de las
dispositivas de las clases, ejercicios de laboratorio asignados para
cada semana, noticias, detalles del trabajo del curso, exámenes de
convocatorias anteriores, etc.
3. TRABAJOS RELACIONADOS
El ambiente de programación utilizado fue JBuilder de Borland
y una librería impresa y personalizada que contenía los métodos
I-O por Tony Elliman. Los cursos que terminaban a tiempo eran
enviados vía electrónica y los que terminaban de manera tardía se
entregaban en discos flexibles. Los exámenes eran de opción
múltiple y eran evaluados usando scanning software.
A continuación presentamos algunos de los trabajos
relacionados con nuestro estudio, en los cuales hemos analizado
los hallazgos encontrados y que nos han permitido guiarnos a lo
largo de nuestra investigación.
3.1 WEBL (Web Enhanced BlueJ learning)
En [2] describen las experiencias sobre la enseñanza de OO en
un curso de Programación en el que utilizan Java como medio
para enseñar los principios de programación, BlueJ como un
ambiente de desarrollo para Java y WebCT como un recurso
basado en web; y en la que se considera la experiencia previa de
los estudiantes como muy enriquecedoras y positivas.
Los resultados del estudio demostraron que existían muchas
preocupaciones de que los estudiantes no fueran capaces de
programar debido a que los estudiantes esperaban aprender cómo
programar en el primer semestre y utilizar el segundos semestre
para el aprendizaje de los algoritmos, debido a que el segundo
semestre era corto.
Debido a esto, antes de iniciar cada año con la materia de
“Construct of Programs”, la cual se imparte en los siguientes
bachilleratos Computer Science, Information System y Applied
Computing, se hacía una revisión de cómo se ha desarrollado el
curso en el año anterior y si es necesario se daban cambios para
las próximas sesiones del curso, aunque normalmente casi todos
los años se realizaban cambios en la enseñanza, en el libro de
texto y en el ambiente de programación que se utilizaba[2].
En el periodo 2002-2003, los estudiantes recibían 2 horas
teóricas más 2 horas de laboratorio por semana. El equipo docente
consistía de 7 académicos y 5 asistentes. Las lecturas de nuevo
materiales eran impartidas por 2 docentes y se daban en una sola
sesión a todos los estudiantes que matriculaban el curso. Los
laboratorios eran responsabilidad de dos tutores, los estudiantes
eran divididos en 9 grupos los cuales recibían 2 horas de
laboratorios por semana.
En este estudio se evaluaron docenas de textos, los cuales
generalmente hablaban de cómo programar en Java más no así de
cómo construir programas usando Java como lenguaje de
programación e indicaban que la mayoría de los libros utilizan un
enfoque de procedimientos estándar[2].
Nuevamente el libro de texto fue Horstmann, todo el material
del curso estaba disponible en la página de la Intranet del
Departamento de Sistemas de Información y Comunicación
(DISC) de Brunel y el ambiente de programación utilizado fue
JBuilder de Borland y la misma librería impresa.
En [2] analizaron el curso en los años anteriores como se
muestra a continuación:
En el periodo 2000-2001, los estudiantes solo recibían 3 horas
de laboratorios, en donde se les enseñaba todo los nuevos
materiales dentro de las sesiones de laboratorio.
En el periodo 2001-2002, los estudiantes recibían 2 horas
teóricas más 2 horas de laboratorio, que eran impartidas por 9
docentes y 2 asistentes (estudiantes de doctorado) y cada grupo de
estudiantes era asistido en la enseñanza por un docente diferente
quien era libre de escoger cómo presentar el material y en qué
tópicos enfatizar, de tal forma que cada grupo de estudiantes tuvo
una experiencia única. Luego con el objetivo de proporcionar una
experiencia común a los estudiantes se separaron las sesiones en
La evaluación del curso consistió en 2 tareas de programación
(50%) y un examen de opción múltiple (50%) dividido en 3
secciones y era evaluado usando scanning software, nuevamente
los cursos que terminaban a tiempo eran enviados vía electrónica
y los que terminaban de manera tardía se entregaban en discos
flexibles. Una vez en [2] se evaluaron los años anteriores, se
presenta en este estudio en el periodo 2003-2004, un nuevo
enfoque al que denominaron WEBL, en el que se utilizó WebCT
para facilitar el progreso constante de los estudiantes en el
aprendizaje de los principios de la OO con BlueJ.
WebCT como sistema de aprendizaje proporciona muchas
facilidades a los estudiantes, como son[2]:
Acceso a Internet desde cualquier lugar
Autenticación a través del identificador de usuario y
clave de acceso
Permite subir archivos
Presentación del trabajo del estudiante
Comunicación en el curso a través de noticias y foro
WebCT también proporciona muchas facilidades a los docentes,
como son[2]:
Crear páginas web para el curso
Subir diferentes archivos y organizarlos dentro de
directorios
Crear pruebas y ejercicios cortos
Crear presentaciones
Crear la lista de la clase
Proveer un correcto acceso a los estudiantes y a los
asistentes de los docentes
Ver y descargas los trabajos presentados por los
estudiantes, etc.
Como resultado de las evaluaciones hechas a los cursos
anteriores, se hicieron los siguientes cambios para el periodo
2003-2004[2]:
Un nuevo libro de texto: Barnes and Kolling
Un nuevo ambiente de programación: Blue J
Un soporte basado en web diferente: WebCT
Diferente evaluación
Algunas de las razones por las cuales se hicieron los cambios en
[2] son:
Los estudiantes usaban Java como un lenguaje de
procedimientos porque no entendía lo que era OO, de
forma que no resolvían problemas diseñando clases.
Sólo utilizaban la clase main para escribir problemas
monolíticos, debido a que no reconocían la diferencia
entre cosas como una clase y la instancia de la clase o
herencia y polimorfismo.
La página web del curso era basada en la Intranet del
DISC, lo cual dificultaba el acceso, especialmente
cuando los estudiantes querían acceder a través de
medios externos y entre sus debilidades estaba que no
contaba con facilidades de interacción para consultas
posteriores, subir el trabajo o la posibilidad de crear
un foro de discusión, siendo el coreo electrónico su
medio de comunicación principal consumía mucho
tiempo y esfuerzo del docente al responderle a 400
estudiantes.
En cuanto a las asignaciones y a la evaluación, se trabajaron 22
sesiones de laboratorio en el curso, las cuales incluían una prueba
que se subía a WebCT por 2 semanas, los cuales fueron en total
16 y representaban un 25% de la nota global y una asignación del
curso de programación también representaba un 25% de la nota
global, y se le dio la libertad a los estudiantes de crear su propio
programa sobre un juego de texto en lugar de asignarle un
problema específico como en los años anteriores. El examen era
una combinación de múltiples opciones de preguntas (máxima
nota B), resolución de preguntas de un problema en donde los
estudiantes debían dar sus propias respuestas (esta sección les
permitía obtener A)[2].
Con respecto al equipo docente, consistía de 5 docentes, en
donde uno de ellos era el líder del curso y 10 asistentes de
docentes. El líder del curso era responsable de la organización del
curso y su administración que involucraba lo siguiente[2]:
La planificación del curso mucho antes de cada
sesión académica
Distribución clara de las funciones y la asignación de
responsabilidades
Sesión ordinaria semanal de todo el equipo docente de
forma que se puede actuar ante cualquier problema y
llegar a una solución con todos los miembros del equipo
Coordinación de las actividades
Se observa en este estudio que el DISC de Brunel, es un
departamento formado por un grupo de docentes preocupados por
buscar nuevos métodos de enseñanza, que permita que los
estudiantes adquieran de una manera adecuada los conocimientos
de la programación. En este estudio los estudiantes
experimentaron nuevos cambios que fueron favorables en su
aprendizaje de POO, gracias a la introducción del nuevo libro, al
fácil y rápido acceso a WebCT, al ambiente de programación
BlueJ. Los estudiantes estaban más animados, se mantenían al día
en el curso, tenían menos problemas comprendiendo la diferencia
entre clases y objetos y comparado con los años anteriores estaban
más inclinados a resolver problemas diseñando clases.
3.2 OOP with BlueJ
En [3] se presenta la POO como una muy buena herramienta
para enseñar a los principiantes las metodologías de
programación.
De acuerdo a [3], en la Universidad de Macedonia se enseñó a
los estudiantes los conceptos principales de programación el
segundo semestre con la utilización del lenguaje de programación
C y POO en el tercer semestre, que consistía en 2 horas teóricas
por semana en donde el docente presentaba el material de la clase
con la ayuda de diapositivas, y 2 horas de sesiones de laboratorio
por semana en donde generalmente los estudiantes resolvían
problemas con la ayuda del instructor o por ellos mismos. En toral
11 horas teóricas y 11 horas de sesiones de laboratorio se
impartieron a un aproximado de 45 estudiantes. Todo el curso fue
basado en el libro de texto y las sugerencias didácticas que
presentaba.
Se encontraron en [3] las siguientes dificultades:
1.
2.
Dificultades atribuidas a las características especiales
de la POO.
a) Algunos estudiantes confundían clases con
objetos, clases con métodos.
b) Los estudiantes encontraron dificultad con las
colecciones de tamaño flexibes como ArrayList.
c) Un significativo número de estudiantes encontró
dificultad para comprender como la herencia múltiple
se aplica en Java.
d) Algunos estudiantes creían que las clases
abstractas, y no interfaces, sólo podían contener
métodos abstractos. Un mayor número de estudiantes
creía que tanto la clase abstracta y las interfaces sólo
pueden contener métodos abstractos.
e) Muchos estudiantes malinterpretan la información
suministrada a partir de los diagramas de clases.
f) Debilidad en la descripción de una función, rol de
las clases, métodos y campos.
g) Uno inadecuado de las llamadas a métodos y la
notación de punto.
Dificultades que pueden ser atribuidas a las
características del ambiente de programación.
a) En algunos casos las dificultades parecen tener su
raíz en la importancia que le da el autor de BlueJ a
las representaciones gráficas de las estructuras de
un proyecto y sus elementos (clases, métodos,
objetos) en relación con el código.
b) En otros casos se observó que los estudiantes
presentaban dificultades en extraer información
del código del código del programa pero extraían
información clara de los diagramas creados con
BlueJ.
c) En casos en los que los estudiantes tenían que
desrrollar nuevo código se observó mayor
cantidad de respuestas erróneas o simplemente no
había respuesta, lo que podía atribuirse en parte a
la falta de equilibrio entre las representaciones
gráficas y el código textual.
De acuerdo a estudios anteriores de [3]se presentan algunas
dificultades encontradas en la enseñanza de la POO, como lo son:
a.
b.
c.
La falta de entornos de programación diseñados
adecuadamente para la enseñanza de POO en general, y
para los programadores novatos más específicamente.
La transición del paradigma de la programación
procedimental hacia el paradigma de la POO.
La filosofía de la enseñanza que está basada en el
enfoque seguido por la programación procedimental, lo
que quiere decir que los conceptos de POO como las
clases, objetos, herencia, y así sucesivamente son
enseñados después de los elementos básicos de un
lenguaje de programación, las estructuras de control y
sus funciones.
En [3] presentan los resultados obtenidos en la enseñanza de la
POO durante un semestre de un curso de programación regular en
el Departamento de Gestión de Tecnología de la Universidad de
Macedonia, en donde presentan los logros, dificultades, errores y
conceptos erróneos que los estudiantes encontraron. Este
documento intentó estudiar hasta qué punto es efectiva la
propuesta de enseñar POO con BlueJ presentada en el libro
Objects First with Java: A practical introduction using BlueJ de
Kolling and Barnes, el cual se utilizó como libro de texto. La
enseñanza del curso de POO fue basado en lecciones del libro y
en el ambiente de programación BlueJ.
3.3 Re-designing an OOP course base on
BlueJ
En [4] se presenta la evolución del rediseño de un curso de POO
basado en BlueJ, cuyo estudio tuvo sus inicios en [3], durante un
semestre en un curso de programación. El objetivo del curso era
que los estudiantes comprendieran y fueran capaces de utilizar los
conceptos básicos de POO, o sea la utilización de las librerías de
clases básicas, diseño de aplicaciones simples usando la técnica de
diseño de Orientación a Objetos (OO) y a la vez programar e
implementar programas en Java. La organización del curso de
POO se basó en los siguientes puntos[4]:
a.
b.
c.
Los lineamientos básicos para enseñar POO presentado
por Kolling y Rosenberg en su publicación “Guidelines
for Teaching Object Orientation with Java”.
El ambiente de programación BlueJ.
El libro “Objects First with Java: A practical
introduction using BlueJ”de Kolling and Barnes, el cual
tiene una muy buena propuesta de enseñanza para
introducir a los estudiantes en la POO.
El tercer semestre de este curso fue evaluado por primera vez en
el periodo 2005-2006 en [3]. Nuevamente los conceptos
principales de programación se impartieron a los estudiantes en el
segundo semestre con la utilización del lenguaje de programación
C y POO en el tercer semestre, que consistía en 2 horas teóricas
por semana y 2 horas de sesiones de laboratorio por semana. En
toral 11 horas teóricas y 11 horas de sesiones de laboratorio se
impartieron a un aproximado de 45 estudiantes[4].
Los estudiantes debían presentar dos o más asignaciones por
semana siguiendo los lineamientos presentados por Kolling and
Rosenberg, basados principalmente en la segunda y tercera
directriz que afirman que un estudiante debe empezar por hacer
pequeños cambios en el código existente y el aprendizaje de la
lectura del código respectivamente. Así que las asignaciones se
basan en el trabajo con proyectos existentes que tienen que ser
estudiados y entendidos para luego ser cambiado y/o ampliados,
por lo general mejorando un método existente o agregando uno
nuevo y con menos frecuencia adicionando estados (campos) o
nuevas clases[4]. En la Tabla 2 se muestran los contenidos del
curso de rediseño presentado en [4]:
Tabla 2. Contenidos del curso de rediseño.
Lección
Contenido
1.
Objetos y clases, parámetros, el ambiente BlueJ.
2.
Comprendiendo definición de las clases:
definición de las clases, campos, constructores,
métodos.
3.
Interacción con los objetos: objetos creando
objetos, constructores múltiples.
4.
Agrupando objetos en colecciones de tamaños
flexibles (ArrayList), colecciones de tamaño fijo
(Array).
5.
Usando librerías de clases (la clase Random,
HashMap, HashSet).
6.
Pruebas y Depuración.
7.
Diseñando clases: cohesión, duplicación de
código, reutilización de código.
8.
Improvisando estructuras con herencia.
9.
Polimorfismo, overriding.
10. Clases abstractas e interfaces.
11. Métodos estáticos ejecutando sin BlueJ.
el método principal,
Este curso fue evaluado mediante el estudio a fondo de las
respuestas dadas a los cuestionarios, las soluciones a los
problemas resueltos tanto en el laboratorio como en el hogar y los
resultados de los exámenes finales[4]. Los
errores,
malentendidos y dificultades que se registraron en [4] fueron
clasificados en tres categorías, como se muestra a continuación:
a. Dificultades encontradas en casi todos los cursos de
iniciación a la programación, sin importar cuál sea el
paradigma de programación.
b. Dificultades atribuidas a las características especiales de
la POO.
c. Dificultades que puedan atribuirse a toda la
organización del curso y sobre todo a las características
del entorno de programación.
En [4] las dos primeras categorías de las dificultades que se
caracterizan como un aspecto intrínseco al aprendizaje de
programación, mientras que la tercera categoría la relacionan
estrechamente con el diseño del curso[4].
3.4 Object Karel and BlueJ
El curso presentado en [5] fue enseñado por primera vez en el
periodo 2005-2006, estaba basado en el ambiente BlueJ,
acompañado del libro de texto “Objects First with Java: A
practical introduction using BlueJ”de Kolling and Barnes y de los
lineamientos para la enseñanza de BlueJ, con una organización de
11 horas de sesiones teóricas y 11 horas de sesiones de
laboratorio.
En este estudio se hacen algunos cambios con
respecto al estudio anterior y se utiliza el ambiente de
programación BlueJ y se introduce a los estudiantes en los
conceptos principales de POO con la ayuda del micromundo de
programación ObjectKarel, el cual está basado en Karel++[5].
También se mencionan en [5] algunas dificultades que se
presentaron en el estudio previo, las cuales se mencionan a
continuación:
Típicas: aquellas dificultades que fueron encontradas y
que son independientes del paradigma de programación.
Dificultades que fueron atribuidas a las características
especiales del ambiente BlueJ, como:
a.
Constructores
b.
Instanciación de objetos
c.
Métodos “set” (mutadores)
d.
Métodos “get” (de acceso)
e.
Llamada al método
f.
Modificación de accesos
g.
Colección de objetos
h.
Herencia
i.
Clases abstractas e interfaces
Luego, en el rediseño del curso presentado en [4] se presentaron
dificultades como:
Los estudiantes usaban la GUI de BlueJ para la creación
de objetos y la llamada a sus métodos en las primeras
tres lecciones y en la cuarta lección (en lugar de la
onceava en el primer curso) iniciaron el uso del método
principal.
Los estudiantes fueron cuidadosos en la utilización de
las características de BlueJ y después de la cuarta
lección se les pidió lograr los resultados esperados y
también proveer el código fuente.
Los estudiantes comenzaron a desarrollar proyectos
sencillos de cero mucho antes en el semestre.
La sexta lección acerca de depuración fue omitida y en
su lugar se dedicaron dos lecciones a la colección de
objetos (arrayList) que fue uno de los conceptos más
difíciles para los estudiantes.
Situaciones especiales de didáctica y fueron diseñadas
en base a los resultados obtenidos de la evaluación.
De acuerdo a los resultados obtenidos en [4], la evaluación del
rediseño del curso dio mejores resultados que la primera versión
del curso, ya que algunas dificultades que se atribuyeron a las
características de BlueJ y al uso tardío de la función main fueron
eliminadas, al igual que algunas dificultades que fueron atribuidas
a proyectos existentes se resolvieron de manera satisfactoria[5].
Se presentan en [5], cambios en la secuencia de actividades y en
las asignaciones utilizadas para comprender ArrayList. Se
introduce ObjectKarel con la finalidad de que los estudiantes
adquirieran el conocimiento. De esta forma se presentan en la
Tabla 3 y 4 los resultados comparativos de las tres versiones de
este curso, basados en los exámenes escritos[5].
Tabla 3. Respuestas correctas.
(2.1) Constructor
(2.3) Método "set"
(2.4) Método "get"
(2.7) ArrayList
(2.2, 2.5) Main
54
79
88
76
45
54
50
79
4
0
89
81
84
59
52
58
56
72
8
3
Correctas(%)
3ro:08-09
Respondidas(%)
Correctas(%)
2do:06-07
Respondidas(%)
Correctas(%)
Respondidas(%)
1ero:05-06
72
73
87
14
9
94
95
97
47
76
Perdiendo argumentos en la llamada
de métodos.
53
Perdiendo () en métodos sin
1 argumentos.
27
Llamando un método no nulo como
1 nulo.
33
Los parámetros en un constructor
tienen los mismos nombres que los
2.1 campos pero “estos” no son usados.
8
Campos con valores asignados de
identificadores no declarados y no de
2.1 los parámetros.
0
2.1 Mala iniciación de campos.
29
2.1 El cuerpo del constructor está vacío.
8
2.2 El tipo de variable objeto se pierde.
13
Los nombres de los campos que son
actualizados son usados como
2.3 argumentos en métodos “set”.
0
Declarando como un tipo de retorno
de un método “set” el parámetro (en
2.3 vez de vacío).
15
Método – Fusión de campo en
2.4 método “get”.
7
Acceso directo a campos privados
2.4, fuera de sus clases en lugar de usar el
2.6 método “get”.
32
Llamando un método sin su
2.5 instancia.
7
2.7 Manipulando un ArrayList.
1
4. UNA
METODOLOGÍA
DE
APRENDIZAJE DE PROGRAMACIÓN
ORIENTADO A OBJETOS (POO) BASADA
EN EXTREME PROGRAMMING (XP)
Con el objetivo principal de establecer una nueva forma de
enseñanza en cuanto a la programación se refiere, se plantea el
estudio comparativo de dos metodologías diferentes en la
enseñanza de la POO, de tal forma que se propone como un
método innovador y provechoso tanto para docentes como para
los estudiantes, la integración de las Tics en la metodología
didáctica de la enseñanza de la POO, utilizando dos herramientas
tecnológicas muy importantes, las cuales serán de gran ayuda en
el proceso de E-A y se muestran a continuación.
4.1 Tecnologías y Herramientas
Tabla 4. Dificultades de los estudiantes (%).
1ero.
con los estudiantes. Estos hallazgos permiten a los docentes el
buscar nuevas metodologías de enseñanza que faciliten a los
estudiantes el aprendizaje del paradigma de programación.
2do.
3ro.
33
45
6
0
6
30
0
2
7
33
0
0
7
23
0
0
6
0
12
5
0
0
3
0
12
0
Después de analizar el estudio presentado en [5], se observa que
después de realizar una serie de estudios sobre cómo enseñar POO
y qué herramientas utilizar en la enseñanza, se encontraron
muchas dificultades, pero también se lograron grandes avances
4.1.1 Cmap Tools
Los Mapas Conceptuales, tal y como se conocen actualmente
fueron desarrollados en 1972 dentro de un proyecto de
investigación a cargo del Dr. Joseph D. Novak, en la Universidad
de Cornell. En 1984, Novak propuso la utilización de los mapas
conceptuales para representar el conocimiento como una red
consistente de nodos que representan los conceptos y los enlaces
que representan las relaciones entre los conceptos[6].
En un mapa conceptual los conceptos son la generalización del
conocimiento de las ideas transmitidas de alguna forma, por
ejemplo, libros, documentos, lecturas, etc. Las proposiciones
expresan como los conceptos están relacionados entre sí, de tal
forma que un mapa conceptual está compuesto de conceptos,
proposiciones y palabras de enlace, las cuales permiten darle
sentido completo a la proposición[7].
Los mapas conceptuales son representaciones bidimensionales
de las estructuras cognitivas, en donde se muestran las jerarquías
y las interconexiones de los conceptos involucrados. Es una
importante herramienta para desarrollar habilidades intuitivas, lo
cual es importante para centrarse en lo que se conoce y en la
nueva información, de tal forma que las habilidades intuitivas nos
permiten establecer las relaciones, o sea organizar la información
por grupos[7].
Los mapas conceptuales son representaciones gráficas de las
relaciones entre conceptos, en donde sus interrelaciones
representan una estructura de conocimiento (esquema mental) que
el estudiante puede recordar en su memoria por un largo periodo
de tiempo, debido a que en la construcción de mapas lo que se
busca es enlazar conceptos relevantes al tema, que sean de gran
importancia para el desarrollo y comprensión de los temas que se
estén tratando[6-9].
En [7] se presentan las características de los mapas
conceptuales:
a.
b.
c.
Un mapa conceptual jerárquico contiene el concepto
más general en la parte superior y la más específica
en la parte inferior.
Los enlaces cruzados son utilizados para enlazar
diferentes segmentos en el mapa.
Los ejemplos ayudan a aclarar el significado de los
conceptos.
Lineamientos a la hora de hacer un buen mapa conceptual[7]:
Tomar nota de los conceptos más importantes.
Tomar nota de los conceptos más específicos para
cada uno de los conceptos principales, para agrupar
las ideas relacionadas.
Articular entre las ideas principales
Escribir palabras de enlace.
Realizar el entrecruzamiento entre segmentos del
mapa (punta de flecha hacia arriba para vincular).
Etiquetar las líneas con la vinculación de las palabras
o frases de enlace, para formar declaraciones
significativas.
Cmaps Tool es una herramienta que permite la construcción del
conocimiento, de tal forma que los estudiantes adquieren nuevos
conocimientos a través de la construcción de mapas conceptuales.
Cmap Tools es un programa creado por el Instituto de Ciencia
Cognitiva (IHMC) de la Universidad de West Florida, utilizado
alrededor del mundo por millones de personas, desde niños que se
encuentran recibiendo educación básica hasta científicos de la
NASA para expresar y compartir su conocimiento en cualquier
tema. Esta herramienta es de utilización libre y está disponible en
más de quince idiomas. Está basado en una arquitectura clienteservidor[9].
Cmap Tools fue creado en Java, es multiplataforma, nos
permite adentrarnos en el campo de la enseñanza significativa con
recursos multimedia, permitiéndole a los estudiantes el trabajar de
forma colaborativa con otros estudiantes a nivel local individual
como en red, donde el estudiante tendrá la oportunidad de
investigar sobre temas relacionados, resolver sus dudas,
complementar sus trabajos, etc. Esta herramienta permite el
intercambio y publicación de modelos de conocimiento
representados como mapas conceptuales[9]. También permite al
estudiante indexar diferentes tipos de recursos entre los cuales
están: Imágenes PNG, GIF, JPEG, Páginas web, Películas de
vídeo, Ficheros PDF de Adobe, Documentos de audio,
Documentos de texto en formato TXT[9].
Otras de sus bondades es el poder exportar el proyecto
completo a HTML, convirtiendo los mismos en páginas web de
manera inmediata y permitiéndole ser publicados en Internet
gracias a los servidores públicos con que cuenta la red de Cmap
Tools[9].
Las principales características de este programa son: Entorno de
trabajo sencillo, claro e intuitivo; ventana de estilos
(Formato/Estilos) que facilita el trabajo; conceptos que se pueden
ilustrar con símbolos, imágenes, colores, formas, sombras, fuentes
y estilos; conceptos que se relacionan fácilmente mediante
enlaces; relaciones que se explican con un texto en los enlaces,
textos en los que se pueden cambiar de minúscula a mayúscula y
viceversa; conceptos que pueden cambiarse de posición sin
romper los enlaces, solo se necesita arrastrarlos, u organizarlos
automáticamente[9].
4.1.2 BlueJ
BlueJ, es un ambiente de desarrollo integrado e interactivo,
diseñado específicamente como un ambiente para enseñar la
introducción a la POO en Java, siendo esta tecnología muy útil
para la enseñanza del paradigma de la Orientación a Objetos
(OO). Este ambiente de programación fue desarrollado por
Deakin University, Melbourne, Australia y la Universidad de
Kent, Kent, USA[10].
BlueJ consta de un editor, un compilador, una JVM y un
depurador. Uno de sus principales atractivos es que incluye una
ventana en la que despliega gráficamente la estructura de clases
parecido a UML y soporta la generación de código a partir de los
diagramas. Este sistema puede ser descargado de forma gratuita
de la Internet. En la actualidad muchos libros usan BlueJ o hacen
referencia de este entorno como un mecanismo para la ejecución
de ejercicios de programación[10].
Las principales fortalezas de BlueJ son las siguientes[2, 10]:
Se proporciona una visualización de la estructura de
clases, muestra automáticamente en un diagrama UML
las representaciones de las clases y sus relaciones en un
proyecto.
Los usuarios pueden crear directamente objetos de
cualquier clase y luego interactuar con los métodos. Se
puede probar un método inmediatamente después de
que se ha escrito, sin la necesidad de escribir pruebas
piloto, lo que convierte esta fortaleza en una ayuda muy
valiosa en la comprensión de conceptos y detalles del
lenguaje.
Además de proporcionar un editor de texto
especializado en Java en cierta medida, permite que el
usuario compile el código resultante y cree instancias de
objetos, con independencia de cualquier programa en
particular, de tal forma que los objetos que son
instanciados se ejecutan como parte del entorno BlueJ,
pero para el usuario parecen existir de manera
independiente.
4.1.3 Extreme Programming (XP)
Las metodologías ágiles de desarrollo de software se centran
en el factor humano, así como también en el producto de software,
el cual se basa en pequeñas versiones, dándole más valor al
individuo, al trabajo colaborativo y al desarrollo de software en
conjunto con el cliente, quien puede monitorear constantemente el
producto de software a través de su desarrollo[11]. La
programación extrema como tal, es la metodología ágil de
desarrollo de software más popular actualmente, ya que busca
cambiar el concepto tradicional de desarrollo de software, en el
que se centra la atención en establecer todos los requerimientos
del software al inicio del proyecto de forma que el mismo no
requiera de modificaciones posteriores, por un nuevo enfoque en
el que se busca la flexibilidad del software a modificaciones
cuando se consideren necesarias y que las mismas no afecten el
proyecto. Se muestra a continuación la Tabla No. 5, que contiene
las reglas en las cuales se basa la programación extrema[11] y
cómo podrían ser aplicadas en nuestro proyecto.
Consideramos que la utilización de las tecnologías y
herramientas propuestas nos servirán de apoyo en la realización
de nuestro proyecto de investigación gracias a las características
de cada una de ellas.
Tabla 5. Reglas de XP y su aplicación en la Propuesta:
Se trabajará con la carga horaria establecida por el centro
académico para el curso regular de Programación I, que consiste
en 3 horas semanales de sesiones teóricas y dos horas semanales
de sesiones de laboratorio, en donde se trabajará con grupos de
aproximadamente 30 a 35 estudiantes, en aulas que cuentan con
aproximadamente con 20 computadoras. Este estudio se aplicará
en un periodo comprendido a dos bimestres de clases regulares.
1. Equipo completo: Se formarán equipos completos por salones
de clases, incluyendo al docente, quien en este caso desempeña las
funciones del cliente.
2. Planificación: En este caso el docente es quien planificará los
requerimientos y en qué orden se trabajarán y revisará
continuamente.
3. Test del cliente: En este caso el docente propone las pruebas
para validar si las mini versiones están funcionando.
4. Versiones Pequeñas: Debido al área de aplicación de la
propuesta, se trabajarán versiones pequeñas y útiles de software.
5. Diseño simple: Se les solicitará desarrollar las mini versiones
de la forma más sencilla posible.
6. Pareja de programadores: Se formarán grupos de trabajo de dos
estudiantes por estación de trabajo y se rotarán una vez por cada
sesión de laboratorio, de tal forma que el código sea conocido por
todos los integrantes del proyecto.
7. Desarrollo guiado por pruebas automáticas: BlueJ posee una
función que permite realizarse pruebas a las mini versiones que se
vayan creando.
8. Mejora del diseño: La rotación de pares por sesiones de clase,
permite que se mejore el diseño del software.
9. Integración continua: Integrar continuamente las mini versiones
al proyecto.
10. El código es de todos: Todos los pares serán rotados y
trabajarán en las mini versiones de los demás grupos y el código
será propiedad de todos los colaboradores del proyecto.
11. Normas de codificación: Mantener un estilo común de
desarrollo (por definir).
12. Metáforas: Cada parte del programa será definida por
nombres para que sean entendibles por todos los integrantes del
equipo.
13. Ritmo sostenible: Se trabajará en todas las sesiones de clases,
sin interrupciones.
4.2 Arquitectura del Ambiente a Utilizar
La presente investigación tiene como principal objetivo el
estudio comparativo de dos segmentos de la población estudiantil,
del mismo nivel escolar, en este caso de 11°, los cuales, de forma
paralela, se dedicarán al aprendizaje de Java, como un lenguaje de
POO, utilizando diferentes metodologías de enseñanza en el
proceso de Enseñanza-Aprendizaje (E-A).
El primer grupo trabajará en el estudio de Java de manera
tradicional, utilizando programación secuencial, la cual se basa en
la creación de programas a partir de un conjunto de sentencias
escritas de forma secuencial y cuya ejecución sigue dicha
secuencia.
En cuanto a la evaluación, la cual “es una actividad o proceso
sistemático de identificación, recogida o tratamiento de datos
sobre elementos o hechos educativos, con el objetivo de valorarlos
primero y, sobre dicha valoración, tomar decisiones” (García
Ramos, 1989).
La evaluación formativa es el tipo de evaluación que se utiliza
preferentemente como estrategia para mejorar y ajustar sobre la
marcha los procesos educativos con la finalidad de conseguir las
metas u objetivos planteados. Esta tipo de evaluación es
considerada la más apropiada para la evaluación de procesos, ya
que sus resultados se empleen para mejorar los mismos. La
evaluación formativa es considerada como una evaluación
continua.
En cuanto a la evaluación formativa, el primer grupo de
estudiantes, recibirá en el aula de clases las explicaciones
necesarias sobre los temas relevantes del lenguaje Java, para que
los mismos puedan comprender de una manera clara el contenido
de la clase. Se les asignará la realización de una tarea semanal
sobre los tópicos dados previamente en clase, lo que contribuirá
con su formación de conocimientos con respecto a los temas
tratados previamente en clase y de la misma forma permitirá al
docente visualizar las deficiencias de los estudiantes, de tal forma
de tomar los correctivos adecuados e ir mejorando
progresivamente. Todo el material impartido en clase
posteriormente se tratará en las horas de laboratorio.
Para medir el rendimiento académico de los estudiantes en este
proceso, la evaluación sumativa de los conocimientos adquiridos
se dará a través de asignaciones semanales (tareas) relacionadas
con los temas tratados en clases y una prueba o ejercicio cada dos
semanas para medir tanto los conocimientos adquiridos como
deficiencias que los estudiantes vayan presentando en el
transcurso de la materia de Programación I.
En la figura 1, se muestra el enfoque tradicional de enseñanza
de la programación.
Figura 2. Metodología propuesta para la enseñanza de la POO,
utilizando Cmap Tools y BlueJ.
Figura 1. Mapa Conceptual del enfoque tradicional de
enseñanza de la programación, creado con Cmap Tools.
De forma paralela, se trabajará con un segundo grupo de
estudiantes del mismo nivel escolar, quienes estarán también
orientados al estudio del mismo lenguaje de programación.
Para este segundo grupo, la evaluación formativa se trabajará
diferente, con la ayuda de Cmap Tools, la cual es una herramienta
muy útil para organizar y representar el conocimiento a través de
mapas conceptuales, la misma permitirá que los estudiantes
comprendan claramente los conceptos generales de programación
y el modelado del algoritmo, que no es más que el análisis del
problema. Gracias a Cmap Tools, los estudiantes aprenderán los
conceptos básicos del lenguaje de POO.
Terminada la etapa de aprendizaje de conceptos, los estudiantes
serán capaces de iniciar en la fase de implementación del
algoritmo en un lenguaje de POO, en este caso Java, utilizando la
herramienta BlueJ, la cual es una interfaz para el desarrollo de
aplicaciones en Java a un nivel introductorio. También se les
asignará la realización de una tarea semanal sobre los tópicos
dados previamente en clase con el objetivo de reforzar los
conocimientos adquiridos previamente.
En la figura 2, se presenta un esquema de la propuesta, utilizando
las tecnologías Cmap Tools y Blue J.
Una vez que los estudiantes hayan adquirido los conocimientos
necesarios sobre Java, como lenguaje de POO a través de los
mapas conceptuales, se les introducirá en la programación en
Java, utilizando la herramienta BlueJ, la cual es una interfaz para
el desarrollo de aplicaciones en Java.
BlueJ es un ambiente que permite que los principiantes
aprendan POO de una manera fácil[3].
Al igual que en el primer caso se les aplicará a los estudiantes
evaluaciones sumativas, que comprende una tarea por semana y
una prueba o ejercicio cada dos semanas, con el objetivo de medir
el rendimiento académico de los estudiantes.
Los contenidos propuestos para este estudio (sujetos a
modificación) se presentan en la Tabla 5, que se muestra a
continuación:
Tabla 5. Contenidos propuestos para el curso de Programación I.
Lección
Contenido de la lección
1.
La POO como base de Java
2.
Instrucciones Básicas (Declaración, Sintaxis)
3.
Sentencias de Decisiones
4.
Ciclos
5.
Funciones y Métodos
6.
Arreglos unidimensionales
7.
Recursividad
8.
Herencia
9.
Polimorfismo
10.
Técnicas de Ordenamiento
5. CONCLUSIONES
Es necesario preparar adecuadamente a los jóvenes que
egresan cada año de Bachilleratos en Informática o
áreas afines, en los que el estudio de algún lenguaje de
programación resulta imprescindible.
Como docentes, debemos contribuir a que los
estudiantes que cada año intentan ingresar a
universidades que ofrecen carreras del área de
Informática, tengan una mejor preparación académica a
la hora de hacer las pruebas de admisión para ser
admitidos en alguna carrera de su área de formación y
evitarles en gran medida que su experiencia resulte
frustrante.
La enseñanza de la POO no es una tarea simple, sin
embargo muchos docentes preocupados por el
aprendizaje de sus estudiantes, buscan nuevas formas de
enseñar este paradigma.
Con la utilización de las Tics en esta propuesta, se
pretende que los estudiantes puedan comprender más
claramente los conceptos relacionados con la POO y su
posterior implementación en comparación con los
métodos tradicionales de enseñanza.
6. REFERENCIAS
[1]
[2]
L. J. Aguilar and M. F. Azuela, Java2. Manual de
Programación, 2001.
J. Kuljis, "Orienting the Teaching of an Introductory
Object-Oriented Programming to Meet the Learning
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
Objective," presented at the 26th Int. Conf. Information
Techonlogy Interfaces ITI 2004, Cavtat, Croatia, June
7-10, 2004.
S. Xinogalos, et al., "Teaching OOP with BlueJ: A Case
Study," in Sixth International Conference on Advanced
Learning Technologies (ICALT'06), 2006.
S. Xinogalos, et al., "Re-designing an OOP course
based on BlueJ," presented at the Seventh International
Conference on Advanced Learning Technologies
(ICALT'07), 2007.
S. Xinogalos and M. Satratzemi, "A Long-Term
Evaluation and Reformation of and Object Oriented
Design and Programming Course," presented at the
2009 Ninth IEEE Conference on Advanced Learning
Technologies, 2009.
P.-C. Sue, et al., "A New Approach for Constructing the
Concept Map," presented at the IEEE International
Conference on Advanced Learning Technologies
(ICALT'04), 2004.
G. K. Saha, "Understanding Dependable Computing
Concepts," November 6-12, 2007.
S. L. Miertschin and C. L. Willis, "Using Concept Maps
to Navigate Complex Learning Environment," 2007.
IHMC. (2010, May 18). http://cmap.ihmc.us.
M. Farrow and P. J. B. King, "Experiences With Online
Programming Examinations," May 2008.
P. L. Ph.D. and M. C. P. Ph.D., "Metodologías ágiles
para el desarrollo de software: eXtreme Programming
(XP)."
Descargar