Enseñando Prolog en Línea

Resumen: Con base en ideas provenientes del Conectivismo, aprendizaje en red y el uso de redes sociales como soporte de comunidades virtuales, exploramos una alternativa para la enseñanza/aprendizaje de la programación en lenguaje Prolog para estudiantes de Ciencias de la Computación que consiste en dos proyectos relativamente independientes: un curso abierto en línea y una comunidad virtual de programadores en Prolog.

Abstract. Based on insights from Connectivism, networked learning and virtual communities, we explore an alternative to the teaching / learning of Prolog programming for students of computer science which consists of two relatively independent projects: an open course online and a virtual community of Prolog programmers.

1          Introducción

Con base en ideas provenientes del Conectivismo, aprendizaje en red y el uso de redes sociales como soporte de comunidades virtuales, exploramos una alternativa para la enseñanza/aprendizaje de la programación en lenguaje Prolog para estudiantes de Ciencias de la Computación que consiste en dos proyectos relativamente independientes:

a)      Un Curso abierto en línea de programación en Prolog.

b)      Una comunidad abierta de programadores en Prolog

El propósito esencial de esta idea consiste en la creación, mantenimiento y promoción de comunidades virtuales abiertas de práctica y aprendizaje como complemento de Cursos formales abiertos o cerrados, presenciales o virtuales, lo cual se ilustra en la figura 1.

La comunidad es en cierto sentido independiente de los Cursos, en tanto que un Curso determinado contiene un Plan de Estudios predefinido y requiere de la evaluación del aprendizaje de los estudiantes, la comunidad está en cambio fundamentada por un dominio de conocimientos equivalente total o parcial con el Plan de Estudios y no mantiene ninguna indicación de orden o secuencia para abordar los temas, niveles de profundidad, fuentes de información y de contenidos fijos y preestablecidos, una comunidad puede funcionar como una ecología del aprendizaje, capaz de reconfigurar permanentemente el currículum de estudio.

figura1

Figura 1. Cursos y Comunidades relativamente independientes entre sí.

Debido a esta independencia entre un Curso y una Comunidad virtual, es posible acceder a la comunidad desde cualquier Curso impartido en forma presencial, mixta o en línea conformando así una comunidad abierta de interesados en la programación en Prolog, una comunidad pretendidamente regional, latinoamericana.

En la sección 2 describimos la propuesta de un Curso en línea, en la sección 3 abordamos el uso de comunidades de práctica y aprendizaje en red y finalmente enunciamos algunas conclusiones y perspectivas de posibles trabajos futuros.

2          Un Curso Abierto en Línea

El nacimiento del lenguaje de programación Prolog se remonta al periodo comprendido entre 1971 y 1975 (Colmerauer & Roussel, 1993), el primer libro de texto sobre Prolog se publicó en 1981: Programación en Prolog (Clocksin & Mellish, 1981).

Prolog es un lenguaje de programación declarativa (basado en declaraciones de estados, por ejemplo estado inicial y final de un problema) a diferencia de los lenguajes procedurales (basados en procedimientos para resolver problemas), tiene sus raíces en la Lógica de Predicados y es un lenguaje de propósito general, lo que significa que cualquier algoritmo puede programarse en Prolog (Bratko, 2001; Sterling & Shapiro, 1994).

David Callear (2000) describe cinco reglas empíricas sugeridas para la enseñanza de cualquier lenguaje de programación, las que podemos adaptar para trabajar con Prolog:

  1. La programación debe ser aprendida a un ritmo personalizado, individual, cada estudiante es diferente, su contexto, antecedentes, condiciones y ritmos de estudio son determinantes para el aprendizaje no solo de Prolog, aunque en este caso es especialmente importante por la naturaleza singular del lenguaje.
  2. Es preferible abordar un tema de programación cada vez, deteniéndose en los conceptos nuevos hasta comprenderlos y entender su aplicación en la solución de algunos problemas de ejemplo y aplicarlos a problemas propuestos. Por ejemplo las listas, su manipulación, técnicas de recorrido y terminación, predicados recursivos, etc.
  3. Para aprender Prolog, es apropiado aplicar la técnica conocida como aprendizaje en espiral (Peam, 2006): se estudia el mismo tema a diferentes niveles de profundidad, por ejemplo, en el primer nivel se estudia sin preocuparse por los detalles que requieran de mayor atención, conforme se aprende, se aborda nuevamente el tema introduciendo más y más detalles que se habían dejado pendientes y problemas un poco más complejos donde se apliquen estos detalles, esta técnica es como ir avanzando en círculos, poco a poco y adelante.
  4. La ordenación y secuencia de los temas es importante, lo más sencillo debe abordarse primero para adquirir confianza y seguridad antes de enfrentarse a temas más complejos.

Nalepa y Wojnicki (2008) desarrollaron un proyecto muy interesante para la enseñanza de Prolog complementado con un sitio Web basado en Wikis, esta propuesta se basa en la idea de complementar la enseñanza presencial de Prolog con el apoyo de un sitio Web relativamente interactivo que contiene enunciados de problemas y su solución, ejemplos y tareas propuestas, los profesores y estudiantes tienen permiso para modificar ciertas partes del contenido Web, los cambios son moderados por los administradores del sitio, existe la posibilidad de cargar y descargar documentos digitalizados. Previo a su liberación se adaptaron y cargaron cerca de 400 ejemplos de programación mediante un equipo de trabajo conformado por profesores y estudiantes que buscaron en Internet código libre de programación, los adaptaron al compilador de SWI-Prolog (http://www.swi-prolog.org/) y conformaron una Base de datos de ejemplos de programación.

El Proyecto de Nalepa y Wojnicki fue aplicado en Polonia, continúa vigente (http://ai.ia.agh.edu.pl/wiki/pl:prolog:start) aunque consideramos que mantiene algunas desventajas provenientes de su origen como Curso tradicional complementado en la Web: el contenido almacenado en la Base de Datos es estático, fijo, pero el contenido en el espacio Web es dinámico, cambiante, en permanente actualización. Otro inconveniente al menos para globalizar esta aportación reside en el idioma, el polaco; el sitio Web, la información, la base de datos, los cursos, están descritos en polaco, un idioma al que difícilmente podrían acceder los estudiantes hispanohablantes o anglosajones.

2.1       Un Curso de programación en Prolog

El Curso está dirigido a estudiantes de Ciencias de la Computación y contiene generalmente un Plan de Estudio preestablecido y basado en el libro de texto más popular publicado también en español (Clocksin & Mellish, 1987), aunque también se utiliza la primera parte del libro de Iván Bratko (2001) publicado en inglés: la primera parte trata sobre programación en Prolog y la segunda sobre aplicaciones de Prolog a la Inteligencia Artificial, por lo que se puede utilizar para un Curso mas completo sobre Prolog.

El primer semestre de 2013 exploramos esta idea administrando el Curso en un sitio Web de Wikispaces y un grupo en Facebook, sin embargo encontramos dificultades: los estudiantes universitarios de Ciencias de la Computación, en su gran mayoría, no están acostumbrados a trabajar con herramientas Web tales como blogs, wikis, documentos de google, twitter, redes sociales, sesiones de conferencias, incluso chats de texto en ambientes de aprendizaje colaborativo, a pesar de estar inscritos formalmente en un curso a distancia, a pesar de ser capaces de crear un blog, acceder a sesiones de videoconferencia, abrir una cuenta en Wikispaces, los usos y costumbres de nuestros estudiantes generan una especie de rechazo involuntario para trabajar en Internet, especialmente el uso de wikis, blogs, sesiones de videoconferencia y ambientes de aprendizaje colaborativo resultan problemáticos, la cultura formativa de estudiantes pasivos recibiendo clases y explicaciones de los profesores parece residir en las expectativas de consumo de información de los estudiantes, por lo que entendemos que no es recomendable transitar directamente a cursos completos en línea sino antes es recomendable incursionar en la modalidad mixta, parte presencial y parte en línea.

Para el segundo semestre de 2013 impartiremos el curso a estudiantes de posgrado, los cuales deberán aprobar un curso propedeútico obligatorio sobre competencias en las tecnologías Web necesarias para tomar el Curso; adicionalmente decidimos rediseñar el Curso en línea conformando un sitio Web dedicado, el cual estamos desarrollando todavía (ver Figura 2) y trasladar nuestra comunidad virtual a Google+ para aprovechar la característica de contener subdominios (categorías) lo cual nos permitirá crecer sin temor de ser abrumados por las participaciones, pero esto lo describimos en la sección 3.

Figura2

Figura 2. Sitio Web para el curso en línea.

La organización del Curso está basado en primer lugar en las ideas de un curso conectivista (Siemens, 2004; Altamirano et al, 2010) que consiste en lo siguiente:

La utilización de un Ambiente Personal de Aprendizaje (APA) por cada estudiante; esencialmente se trata de promover el trabajo con Blogs, Twitter, redes sociales, sesiones de videoconferencia en línea y opcionalmente otras herramientas Web para crear y compartir contenidos. El blog funciona como un cuaderno de notas donde los estudiantes registran su aprendizaje y para los estudiantes matriculados efectuamos un seguimiento individual. Adicionalmente efectuamos un proceso de recopilación y agregación de los posts de los blogs de los estudiantes que es reenviado en forma de correo electrónico a todos los participantes como una forma de retroalimentación para compartir, este proceso lo generamos mediante las direcciones RSS de los blogs, la agregación de los nuevos posts y el uso de la herramienta MailChimp (http://mailchimp.com/) para generar un correo semanal de actualización y enviarlo automáticamente a los correos electrónicos de los estudiantes. En la figura 3 se muestra un fragmento de uno de los correos enviados por este medio.

 Figura3

Figura 3. Agregación de posts de Blogs en un correo electrónico.

3          Comunidades de Aprendizaje en línea

Una comunidad es un grupo de personas conectadas que comparten un interés común por algo que practican, aprenden y que las mantiene juntas. En una comunidad virtual las personas están conectadas sobre todo por tecnología, las comunidades suelen estar soportadas por plataformas para redes sociales como Facebook, Ning, Google+ y otras.

En (Wenger et al, 2002) se describen tres características esenciales que sugieren deben estar presentes en las comunidades virtuales de aprendizaje:

  1. El dominio. Una comunidad virtual es más que una red de conexiones, tiene una identidad definida por un dominio compartido de interés. La membresía implica un compromiso con el dominio y una competencia compartida en el mismo que los distingue de otras personas.
  2. La comunidad. En la búsqueda de sus intereses dentro del dominio los miembros se involucran en actividades y discusiones, se ayudan unos a otros y comparten información; construyen relaciones que posibilitan aprender unos de otros.
  3. La práctica. Los miembros practican, aprenden. La comunidad y sus miembros desarrollan un conjunto de recursos: herramientas, libros, referencias, ejemplos, experiencia, modos de abordar problemas, lo cual representa una práctica compartida.

En la figura 4 se muestra una de las dos comunidades que abrimos en Facebook, una para nivel básico (Aprendiendo Prolog) y otra para nivel avanzado (Prolog programmers).

 Figura4

Figura 4. Comunidad virtual de aprendizaje

3.1       Comunidades alojadas como Grupos en Facebook

Un grupo en Facebook opera como una subred de la red general, el grupo es creado por cualquier usuario que tenga cuenta en Facebook, después él mismo se convierte en administrador del grupo, posteriormente puede compartir la administración al mismo nivel con otros usuarios, el grupo puede constituirse como público, cerrado o secreto, se puede pertenecer al grupo por invitación directa o solicitud del interesado, no es necesario que los miembros de un grupo estén conectados entre sí para compartir dentro del grupo, dentro del mismo se puede interactuar de diversos modos (Facebook, 2013).

La diferencia entre el Curso en línea y la comunidad reside en el hecho de que en el Curso formal el currículum consiste en la interacción de los estudiantes con un contenido instruccional predefinido junto con la utilización de recursos y actividades planificadas para el aprendizaje, en cambio en la comunidad virtual el currículum adquiere la característica de constituirse en un dominio de conocimientos que se reconstruye y se negocia constantemente por la actividad de los miembros de la comunidad.

Por ejemplo, en la experiencia de la comunidad que exploramos en Facebook teníamos una idea predefinida de los contenidos que serían objeto de estudio, sin embargo en la práctica emergió una discusión no esperada: algunos miembros utilizan sistemas operativos abiertos (linux, en diversas variantes como Debian o Ubuntu) mientras que la gran mayoría de la comunidad trabaja con un sistema operativo de Microsoft Windows. La discusión se concentró en el problema respecto de qué Software resultaría más apropiado, para qué sistema operativos, el problema de la instalación de software y de un Entorno de Desarrollo Integrado recomendable para la programación. Esta discusión puede repetirse nuevamente debido a que tanto el software como los sistemas operativos son artefactos en permanente actualización y evolución, cambian con el tiempo. Este tipo de discusiones se conforman dentro de comunidades en pequeños grupos de interesados quienes discuten y negocian una solución común aceptable para la mayoría de los involucrados en la negociación y que podría ser útil para la comunidad.

3.2       Comunidades en Google+

Uno de los problemas detectados en la primera experiencia al trabajar con una comunidad abierta en Facebook fue que con el tiempo aglutinamos más y más interesados que ingresaban a la comunidad y consecuentemente comenzamos por advertir que teníamos en el mismo espacio juntos y compartiendo opiniones desde aprendices novicios hasta miembros más o menos avanzados (matriculados en algún posgrado, investigadores o profesores universitarios de otros países), lo cual por el nivel de las discusiones y la cantidad de las participaciones convertían en poco apropiado el uso de grupos de Facebook para alojar comunidades virtuales cuya participación tiende a ser heterogénea y numerosa.

Esta es la razón principal por la que en el segundo semestre de 2013, exploraremos la utilización de una comunidad virtual en Google+, donde cada comunidad tiene la opción de crear categorías que funcionan prácticamente como subcomunidades de la comunidad original, es decir que podemos crear una comunidad de Prolog y dentro de ella abrir categorías para los niveles de discusión básico, intermedio y avanzado, y también para otros temas de interés particular, por ejemplo discusiones sobre el software SWI-Prolog, enlaces a sitios Web relacionados, instalación de un entorno integrado de desarrollo (IDE) y más. Ésto y las posibilidades de poder mantener conversaciones de tipo video conferencia, nos parecen interesantes como para trasladar nuestra comunidad de Facebook a Google+, aún con la desventaja de estar obligados a mantener una cuenta de correo en Google. Para nuestra próxima experiencia que iniciará en septiembre de 2013 creamos la comunidad en Google+ que se muestra en la figura 5.

Figura5

Figura 5 Comunidad de programadores de Prolog en Google+

Cuando uno accede a una comunidad en Google+ tiene de inicio acceso a todos los posts independientemente de la categoría en que son compartidos, adicionalmente con un clic es posible acceder a una categoría determinada y leer únicamente los posts relacionados. Esta posibilidad puede incidir para que los miembros interesados en programación avanzada puedan acceder únicamente a esta categoría y los interesados en el nivel básico o algún tópico diferente puedan hacerlo. Aunque por otra parte podría ser también una desventaja para los estudiantes de nivel básico que ya no tendrían todo el apoyo directo de los estudiantes más aventajados para apoyarlos.

3.3       Comunidades, Cursos Masivos y Redes Sociales

En el Curso Connectivism and Connective Knowledge (Siemens & Downes, 2008) impartido en formato abierto y en línea por Internet, se inscribieron aproximadamente dos mil trescientos estudiantes los cuales se agruparon en comunidades virtuales soportadas en escenarios como foros internos de MOODLE, el mundo virtual de Second Life, posts en blogs compartidos y encuentros de video conferencia en línea, este primer curso fue denominado por Dave Cormier (2008) como MOOC (Massive Open Online Course).

Posteriormente en 2011 la Universidad de Stanford organizó a través de los investigadores Peter Norvig y Sebastian Thrun el primer curso masivo en línea perteneciente a un Currículum formal: Introducción a la Inteligencia Artificial, en el cual se registraron cerca de 160,000 estudiantes; la característica esencial del Curso es que se trataba del mismo curso impartido presencialmente en la Universidad de Stanford y con un formato tradicional, es decir, fundamentado en un diseño instruccional con lecturas, actividades y tiempos fijos para estudiar junto con evaluaciones y exámenes en línea para evaluar el aprovechamiento de los estudiantes. En este Curso los miles de estudiantes de diversas regiones del mundo también se agruparon en diversas comunidades creadas por ellos mismos, se podían encontrar comunidades en Facebook de estudiantes árabes, de mujeres, de estudiantes de habla hispana, inglés y otros.

Para diferenciar ambos tipos de cursos claramente diferentes, a los que siguieron la estructura y conceptualización basada en el conectivismo, son conocidos ahora como cMOOC (Curso Conectivista) y los Cursos Masivos con diseño tradicional son xMOOC para indicar que es un MOOC eXtendido de la Educación formal.

4          Conclusiones

En el futuro inmediato nos proponemos incorporar la utilización de un sitio Web basado en Wikis con enlaces a recursos y actividades relacionadas con el dominio bajo estudio, debido a que la información y contenidos alojados en la Web cambian y se actualizan constantemente el propósito es de acceder a un dominio de conocimientos en permanente actualización. Esta colección de enlaces y documentos estaría abierta para ser accedida y actualizada por las comunidades virtuales interesadas.

Respecto al uso de comunidades virtuales, destacamos que en el proyecto Futurelearn (Nelson, 2013) lanzado por la Universidad Abierta del Reino Unido (The Open University) afirman que su plataforma para Cursos Masivos, la cual iniciará actividades a mediados de 2013, funcionará también como una red social para su comunidad de estudiantes: “entrar a una plataforma como Futurelearn para aprender será divertido, social, una alternativa para la televisión y algunas de las otras cosas en que uno se ocupa para entretenerse en la noche”. Futurelearn está asociada inicialmente con 17 Universidades listadas dentro de las más importantes del Reino Unido.

Si los Cursos Masivos en línea de las plataformas orientadas al aprendizaje como Futurelearn y las Universidades líderes del mundo occidental abren espacios de red social atractivos y orientados al aprendizaje comunitario, muchos estudiantes y profesionistas de las redes sociales de propósito general podrían emigrar o diversificar su tiempo en las redes incidiendo en la consolidación de la sociedad del conocimiento.

Referencias

Altamirano, E.; Becerra, N. y Nava, A. (2010). Hacia una educación conectivista. XXVI Simposio Internacional de Computación en la Educación. Monterrey, México.

Bratko, I. (2001). Prolog Programming for Artificial Intelligence. 3rd edition. Addison-Wesley Publishers.

Callear, D. (2000). Teaching Programming: Some Lessons from Prolog. 8th Annual Conference on the Teaching of Computing, Edinburgh, Scotland.

Clocksin, F.W. and Mellish, C.S. (1981). Programming in Prolog. Springer-Verlag Berlin Heidelberg.

Colmerauer, A. and Roussel, Ph. (1993). The Birth of Prolog, The Second ACMSIGPLAN History of Programming Languages Conference, ACM, Cambridge USA, pp. 37–52.

Cormier, D. (2008). The CCK08 MOOC – Connectivism course, 1/4 way. http://davecormier.com/edblog/2008/10/02/the-cck08-mooc-connectivism-course-14-way/ Consultado el 20 de junio de 2013.

Facebook. Groups. https://www.facebook.com/about/groups Consultado el 10 de junio de 2013.

Nalepa, G.Z. & Wojnicki, I. (2008). Concept of an Interactive Web Portal for Teaching Prolog. Proceedings of the Twenty-First International Florida Artificial Intelligence Research Society Conference, 240-244, Coconut Grove, Florida, USA.

Nelson, S. (2013). Futurelearn’s boss on breaking into Moocs. The Times Higher Education. Entrevista. http://www.timeshighereducation.co.uk/news/futurelearns-boss-on-breaking-into-moocs/2002636.article Consultado el 5 de junio de 2013.

Peam, M. (2006). The Learning Spiral A Powerful Tool for Learning in Teams. http://www.michaelpearn.net/downloads/index.aspx Consultado el 14 de junio de 2013.

Siemens, G. (2004). A learning theory for the digital age. Consultado el 24 de octubre de 2008, en http://www.elearnspace.org/Articles/connectivism.htm

Sterling, L. and Shapiro, E. (1994). The Art of Prolog. 2nd edition. MIT Press.

Wenger, E., McDermott, & Snyder, W. (2002). Cultivating communities of practice: a guide to managing knowledge. Harvard Business School Press. USA.