Universidad Maimónides: Escuela de Multimedia
8 Junio 2017

Análisis de herramientas multimediales para aprender a programar

Por Mayra Koloditzky

Licenciada en Tecnología Multimedial por la Universidad Maimónides

  • facebook
  • google plus
  • twitter

El presente artículo forma parte de la tesis de grado "Pensamiento computacional: Herramientas multimedia para la enseñanza del pensamiento computacional. Relevamiento, estructuración e implementación en el aula" presentada en junio de 2017. Esta investigación pretende un trabajo exploratorio sobre herramientas multimediales desarrolladas para la enseñanza de la programación y de qué forma resulta mejor incorporarlas en la escuela. Se describen aquellas propuestas por la iniciativa Program.ar. Se analizan, clasifican y valorizan las características volcando los datos en una base de datos diseñada para tal fin. Las consultas realizadas a esta estructura de datos son fundamentales para que docentes puedan elegir una herramienta con la cual preparar una clase donde los contenidos nodales están referidos a la lógica de la programación en relación a los conceptos propios del pensamiento computacional.

Elección y descripción de herramientas

Como se expuso anteriormente, esta tesis se basaría en los lineamientos de Program.ar. Esta iniciativa propone un listado de herramientas y plataformas, la mayoría open source, para enseñar los contenidos relacionados al pensamiento computacional y a la introducción a la programación. Lo importante a destacar es que las herramientas contienen diferentes enfoques y no todas tienen el mismo fin a la hora de la planificación de una currícula.

Las herramientas seleccionadas son:

  • Scratch
  • Pilas Engine
  • Pilas Bloques
  • LightBot
  • Alice
  • PyGobstones (Gobstones)
  • Mumuki
  • Pharo Smalltalk
  • Hugs (Haskell)
  • PSeInt Scratch

Scratch

Scratch es un entorno de programación diseñado por el grupo Lifelong Kindergarten perteneciente al MIT Media Lab. Su director es el Dr. Mitchel Resnick. Se lanzó en el año 2005 y en el 2013 cambió a Scratch 2. Su característica principal es la programación por bloques. Estos bloques se arrastran y encastran formando combinaciones que crean acciones sobre ciertos objetos. La misma lógica que los bloques de ladrillos con los que juegan los niños cuando son pequeños. Está especialmente diseñado para que lo usen niños y adolescentes dentro y fuera del ámbito escolar. Scratch se creó con el objetivo de enseñar el pensamiento computacional en base a la metodología de aprendizaje basado en el diseño. Cuenta con una gran comunidad de educadores e investigadores que comparten sus actividades y experiencias y ayudan a los docentes que quieran incluir esta herramienta en sus materias. Los niños pueden crear animaciones interactivas, historias, juegos, trivias, etc. Lo enriquece la posibilidad de la creación colaborativa y la modificación de proyectos creados por otros usuarios. Su uso es muy intuitivo, aunque existen muchos tutoriales para aprender. Con Scratch no se aprende un lenguaje de programación en particular sino que se toma conocimiento de la lógica que ésta conlleva. Trabaja mucho con la creatividad y la imaginación y busca que éstas se vean reflejadas en los proyectos realizados.

Pilas Engine

Pilas-engine es una herramienta para el desarrollo de videojuegos. Su principal objetivo es el aprendizaje de la programación de computadoras. Está creado por una comunidad de programadores, docentes y estudiantes de distintas partes del mundo, todos de habla hispana. Su líder de proyecto es Hugo Ruscitti. El proyecto vio la luz en Agosto del 2010 y su última actualización es de Febrero de 2017 (1.4.10). Según sus creadores, se basa- ron en las ideas de Seymour Papert y su lenguaje “Logo” y en bibliotecas de videojuegos actuales como “cocos2d”. También se focaliza en ayudar a desarrolladores novatos, al ofrecer una colección de actores, objetos y escenas predefinidas que pueden utilizarse de base para desarrollos propios. El tipo de programación que requiere este programa es de código basado en lenguaje Phyton.

Pilas Bloques

Pilas bloques es una aplicación especialmente desarrollada para la enseñanza de la programación. Al igual que Scratch, utiliza los bloques como medio. Está pensada para ser usada dentro de la escuela, acompañada de distintas secuencias didácticas planteadas por el docente. Está recomendada para niños a partir de los 10 años. Fue desarrollada por la Fundación Sadosky y Huayra, en nuestro país y usa como base el programa Pilas Engine antes descrito. La versión en vigencia es la 1.1.2 publicada en enero de 2017 y su primera versión data de enero de 2015. La particularidad de esta herramienta es su formato de “desafíos”, donde cada uno se relaciona con un concepto del pensamiento computacional. No existe el desarrollo por parte del usuario, sino que el objetivo es completar las secuencias que se proponen. Cuentan con personajes animados que se repiten en los distintos desafíos.

LightBot

LightBot es una propuesta de resolución de puzzles para la cual debe utilizarse la lógica de la programación. Estos juegos de ingenio tienen como protagonista un robot que, mediante instrucciones, debe llegar a un determinado destino. Su creador es Daniel Yaroslavski y lo desarrolló mientras era alumno de la Universidad de Waterloo, Canadá. En julio de 2014 fue lanzado. Expresado por su propio creador, hay dos grupos en los que se dividen los conceptos que se enseñan con esta herramienta: prácticas de programación (el orden en que los programadores resuelven problemas) y flujo de control (conceptos relacionados a la secuencia paso a paso de la ejecución de un programa). Su particularidad es la utilización de íconos y símbolos en lugar de palabras o bloques. Se abstrae lo máximo posible de estos elementos para enfocarse en los pasos de una secuencia. Está pensado para un primer acercamiento a la programación en niños a partir de los nueve años.

Alice

Alice es un software para la enseñanza de la programación mediante un entorno 3D para la creación de animaciones y videojuegos. Fue desarrolla- do por el Human-Computer Interaction Institute de la Universidad Carnegie Mellon (Estados Unidos) en lenguaje Phyton. Hay dos versiones, Alice 2 (en vigencia desde 1999) y Alice 3 (desde 2008). Ambas versiones son actualizadas hasta la actualidad. Utiliza un lenguaje orientado a objetos representado por bloques que a diferencia de otras herramientas de este tipo, dentro de los bloques se encuentran las instrucciones en sintaxis de código de programación de la acción que realiza. Los alumnos pueden ver la ejecución paso a paso del programa que realicen, posibilitando la corrección de errores. El acercamiento a la programación es mucho mayor y cuenta con una gran librería de objetos que facilita el desarrollo. El gran atractivo es el entorno 3D y los mundos virtuales de las animaciones y juegos que los alumnos crean, similares a los videojuegos que ellos juegan. Alice está recomendado para niños a partir de los 12 años.

PyGobstones (Gobstones)

PyGobstones es un intérprete y entorno de desarrollo para el lenguaje de programación Gobstones, creado por Pablo Martínez López y Eduardo Bonelli en el año 2008 en la Universidad Nacional de Quilmes, con el propósito de ser utilizado en materias de introducción a la programación en dicha Universidad y está pensado para personas que no tienen conocimientos previos de programación. Sus creadores conceden los programas como “una descripción en texto de un conjunto de ideas que además puede ser ejecutable”, donde el foco está puesto en buscar soluciones y la implementación es una consecuencia. En paralelo a este lenguaje elaboraron una secuencia didáctica denominada también Gobstones que prioriza la presentación de procedimientos y parametrización antes que las estructuras de control y manejo de variables para que los alumnos se focalicen en ejercitar la capacidad de dividir tareas para generar abstracciones. PyGobstones se basa en un tablero de casillas en el cual pueden introducirse bolitas de colores y moverlas por el mismo mediante la escritura del código correspondiente.

Mumuki

Mumuki es una plataforma para aprender programación desarrollada por profesores de distintas universidades argentinas a fines de 2014. Se presenta en forma de guías de ejercicios didácticos e interactivos divididos en niveles y capítulos. Lo más interesante es la corrección automatizada que tiene cada ejercicio que le brinda al alumno una devolución al instante de su programa, lo que hace que Mumuki puede utilizarse tanto dentro como fuera del aula. El docentes puede tener un seguimiento del progreso de sus alumnos mediante la herramienta de aula virtual que posee, donde no sólo se informa sobre el desempeño frente a los ejercicios, dándole importancia al proceso y no sólo al resultado, sino también puede comunicarse con ellos a través de mensajes. La plataforma se basa en cuatro pilares fundamentales: de la práctica a la teoría (tan importante como ejercitar es adquirir conceptos teóricos), pensar computacionalmente (la tecnología y los lenguajes son un medio, los conceptos fundamentales no), contenido en español y corrección automatizada (para complementar la educación presencial, sin eliminar el rol del docente).

Pharo Smalltalk

Pharo es un ambiente para programar en lenguaje Smalltalk, orientado a objetos. Lo que más se destaca de este software es su interfaz simple y moderna. Se encuentra en vigencia la versión 5.0 desde mayo de 2016. Está desarrollado por RMoD. Cuenta con un lenguaje simple que no utiliza constructores ni declaración de tipos de variables y con un depurador del código que indica errores sin necesidad de compilar. Cuenta con una comunidad que desarrolla bibliotecas para contribuir con la plataforma. Aunque forma parte del listado de programas que Progr.am sugiere, no es un software desarrollado para la enseñanza de la programación y por lo tanto no será tomado en cuenta en el análisis posterior.

Hugs (Haskell) 

Hugs es una implementación del lenguaje operativo Haskell de tipo funcional. La programación funcional es un tipo de paradigma basado en funciones matemáticas y de alto nivel. El proyecto comenzó en 1987 durante la conferencia FPCA (Lenguajes de Programación Funcional y Arquitecturas de Ordenador) en Oregon, Estados Unidos y la primera versión se publicó en 1998. Hugs ya no se encuentra en desarrollo. Los programas desarrollados con este tipo de lenguaje resultan un conjunto de funciones que no poseen ni variables ni estructuras como una secuencia o una iteración. Estos dos conceptos pertenecen al pensamiento computacional y ya que esta herramienta no los posee, no será tomada en cuenta en el siguiente análisis.

PSeInt Scratch

PSeInt es un intérprete de pseudocódigo desarrollado para asistir a los estudiantes a la hora de dar los primeros pasos en programación, centrando la atención en los conceptos fundamentales de los algoritmos. Está en español y fue desarrollado por Pablo Novara en el año 2003 y su última versión es de marzo de 2017. Cuenta con numerosas ayudas y recursos didácticos dentro del software y evita que los principiantes tengan que lidiar con la sintaxis de los lenguajes reales. Una característica de PSeInt es la incorporación de un diagrama de flujo que se construye automáticamente según los algoritmos que se escriben. Program.ar desaconseja utilizar estos diagramas basándose en el artículo de Brooks (1987) “No Silver Bullet – Essence and Accident in Software Engineering”, por lo tanto no será tomado en cuenta para el análisis posterior.

Además de lo descrito en cada una de ellas, las últimas tres herramientas tienen la particularidad de no poseer un entorno multimedial como ser animaciones, gráficos interactivos o juegos, lo cual puede llegar a resultar desmotivante para los alumnos y no cumplir con el objetivo del desarrollo del pensamiento computacional.

 

Estructura de datos para el análisis

Para poder recopilar la información sobre niveles y variables de clasificación de las herramientas antes descritas, es necesario diagramar una estructura de datos que sostenga el análisis de acuerdo al resultado buscado, que en este caso es la elección de una o varias herramientas para la posterior planificación de una clase que incluya las habilidades del pensamiento computacional. Se resolvió la creación de una base de datos específicamente diseñada para este fin con el propósito de ser distribuida para su consulta.

Elección de tipo de base de datos

Se comenzó por diseñar una base de datos de tipo relacional. Es una de las bases más utilizadas y se compone de tablas con propiedades que representan una entidad. Las tablas se relacionan compartiendo alguna de las características, siendo la más común el identificador único (ID) y se accede a las relaciones mediante consultas de unión (joins).

Al momento de diseñar, y en base a las características a analizar de cada una de las herramientas, se llegó a la conclusión de que este tipo de base de datos no era la adecuada ya que no lograba realizar las relaciones de tal manera que se puedan extraer conclusiones al momento de elegir una herramienta para usar en el aula. Por ende, se investigó acerca de otros tipos de base de datos y la que mejor se adecúa al análisis para este trabajo es la base de datos orientada a grafos. Principalmente porque su uso en el mundo real se da, entre otros, para los software de recomendación y lo que se busca crear en este trabajo es un sistema que le ayude a los docentes a elegir cuál herramienta es la adecuada según las actividades que desea realizar para impartir el pensamiento computacional. Y otra característica que sustenta la elección es la escalabilidad que poseen estas bases.

Las recomendaciones efectivas generan valor para el usuario final. Los algoritmos de recomendación son intuitivos y sugerentes, donde personas identifican productos para otras personas o grupos (docentes). El motor de la base de datos, mediante las consultas que se le realicen, puede identificar recursos de interés para el grupo objetivo.

Base de datos orientada a grafos

Es un tipo de base que se encuentra dentro de las denominadas “NoSQL” (Not Only SQL). Son un conjunto de sistemas de gestión de base de datos que difieren del modelo clásico relacional, que no usan el lenguaje SQL para realizar las consultas y los datos no se almacenan en tablas. Su implementación comenzó con la llegada de la Web 2.0 en grandes sistemas como Google, Facebook y Twitter en particular para almacenar los datos y las relaciones de las redes sociales.

Las bases de datos orientadas a grafos (BDOG) son similares a una red. La fórmula de los grafos es G = (V , E), donde V son los vértices y E las aristas y se desprende de la teoría de grafos perteneciente a la matemática.

Modelo de grafos de propiedad para una base de datos de películas

Figura 1 – Modelo de grafos de propiedad para una base de datos de películas Mark Maslyn, 2015

El modelo de grafos de propiedad (Property Graph Model) se compone de nodos (vértices, entidades) que pueden contener N cantidad de propiedades (atributos, pares clave:valor) y etiquetas que representan diferentes roles dentro del grafo. Las relaciones (aristas) son las conexiones entre dos nodos nombradas semánticamente de manera relevante. Siempre tiene una dirección, un tipo, un nodo de inicio y uno de fin y pueden tener propiedades. Dos nodos pueden compartir N cantidad de relaciones y éstas pueden navegarse independientemente de la dirección que tengan.

Este tipo de base de datos se caracteriza por la importancia que le da a las relaciones entre los datos, éstas pueden tener propiedades y se pueden consultar directamente, sin necesidad de pasar primero por los nodos. Otras fortalezas son el rendimiento (permanece constante a pesar del crecimiento), la flexibilidad (el crecimiento del sistema permite sumar nuevos tipos de nodos y relaciones) y la agilidad (no se pierde en el crecimiento).

Para poder acceder a los datos de los nodos y las relaciones, existen distintos motores de procesamiento gráfico que es la tecnología que permite ejecutar los algoritmos de grafos sobre los datos. Neo4J es el motor más utilizado y recomendado por su alto rendimiento, es de código abierto, está desarrollado en Java y está al alcance del público desde 2007. Se descarga el sitio oficial (neo4j.com/download/) y requiere instalación.

Este motor utiliza un lenguaje de consulta especial para las BDOG llamado Cypher. Es de fácil entendimiento para los desarrolladores que utilizan otro tipo de bases ya que su uso resulta intuitivo a la descripción de los gráficos y está inspirado en el lenguaje SQL utilizado en las bases de datos relacionales. Las cláusulas para la codificación de las consultas son start, match, return, where, create, delete, set, union.

Start especifica los puntos de partida, es el puntero desde donde se inicia la búsqueda dentro del grafo. Estos puntos pueden ser nodos y/o relaciones.

Match utiliza caracteres ASCII para representar los nodos y las relaciones.

Return especifica los nodos, relaciones y propiedades que deben ser devueltos en la consulta.

Diseño de la base de datos

Se utilizó la versión del motor de procesamiento gráfico Neo4j Community Edition que se obtiene del sitio oficial. Se llevó a cabo su instalación y se creó la base de datos, vacía.

Para plantear el diseño de los datos, se eligieron cuáles características de las herramientas iban a tomarse en cuenta para el análisis. Las entidades, que devienen en los nodos de la base de datos son: herramienta, tutorial, idioma, actividad principal, metodología de enseñanza, habilidad del pensamiento computacional, software y curva de aprendizaje. Cada una tiene propiedades.

Como en este tipo de bases la relación entre nodos está explícita en el diseño, se diagramó el gráfico de la estructura con las siguientes relaciones:

una herramienta está disponible en un idioma

una herramienta cuenta con un tutorial

una herramienta tiene una actividad principal

con una herramienta puede implementarse una metodología de enseñanza

una herramienta trabaja con habilidades del pensamiento computacional

una herramienta es un software

una herramienta posee una curva de aprendizaje

 

Estructura de la base de datos

Figura 2 – Estructura de la base de datos

Las propiedades de los nodos y de las relaciones son:

Herramienta → nombre, si requiere registro, lenguaje de programación y si cumple con el modelo U.M.C (usar-modificar-crear)

Tutorial → tipo (video, presentación, documento)

Idioma → nombre (español, inglés)

Actividad principal → tipo (desarrollo de juegos, desarrollo de animaciones, resolución de ejercicios)

Metodología de aprendizaje → tipo (A.B. Proyectos, A.B. Problemas, A.B. Diseño)

Habilidad del P.C. → tipo (resolución de problemas, algoritmo, abstracción, repetición, eventos, operadores, datos, descomposición, creatividad, trabajo colaborativo)

Curva de aprendizaje → plazo (largo, medio, corto)

Software – en relación a una herramienta → tipo de licencia, si cuenta con una comunidad de desarrolladores que lo respalda, soporte oficial, si tiene una versión online, si cuenta con documentación, si es multiplataforma, si cuenta con una librería de objetos (elementos dentro del programa que facilitan el desarrollo del producto final).

Teniendo diagramado el grafo, se procedió a ingresar los datos en la base. Primero se crearon los nodos con sus propiedades y luego las relaciones entre ellos. Algunas de las consultas realizadas son:

Creación de nodos
CREATE (h:Herramienta { nombre: “Scratch”, registracion: true, lenguaje_prog: “bloques”, modelo_u_m_c: true})

Creación de relación entre dos nodos
MATCH (a:Herramienta),(b:ActividadPrincipal), (c:ActividadPrincipal) WHERE a.nombre = “Scratch” AND b.tipo_actividad = “desarrollo_animaciones” AND c.tipo_actividad = “desarrollo_juegos” CREATE (a)- [tu1:TIENE_UNA]->(b), (a)-[tu2:TIENE_UNA]->(c) RETURN a,b,c

Creación de relación con propiedades entre dos nodos
MATCH (a:Herramienta),(b:Software) WHERE a.nombre = “Scratch” AND b.nombre_soft = “software” CREATE (a)-[r:ES_UN{ licencia: “open_source” , comunidad_desarrolladores: true, soporte_oficial: true, online: true, documentacion: true}]->(b) RETURN r

Realizando estas consultas para todas las herramientas, se completó la base.

 

Gráficos de las consultas

Las consultas están disponibles también en la misma base.

Figura 3 – Base de datos completa

Base de datos completa

MATCH (n) RETURN n

 

Figura 4 – Herramienta que trabaja con mayor cantidad de habilidades del pensamiento computacional

Herramienta que trabaja con mayor cantidad de habilidades del pensamiento computacional

MATCH(h:Herramienta)-[r]-(hpc:HabilidadPC) RETURN h.nombre, count(r) as cantidad_hpc_x_h ORDER BY cantidad_hpc_x_h desc

 

Figura 5- Herramientas por Metodología

Herramientas por Metodología

MATCH (h:Herramienta)-[r]-(m:Metodologia) RETURN h,m, count(r) as cantidad_met_x_h ORDER BY cantidad_ met_x_h desc MATCH (h:Herramienta)-[r]-(m:Metodologia) RETURN h.nombre,collect(m.tipo_metodologia), count(r) as cantidad_ met_x_h ORDER BY cantidad_met_x_h desc

 

Figura 6 – Herramientas por Actividad Principal

Herramientas por Actividad Principal

MATCH (h:Herramienta)-[r]-(ap:ActividadPrincipal) RETURN h,ap, count(r) as cantidad_act_x_h ORDER BY cantidad_ act_x_h desc

MATCH (h:Herramienta)-[r]-(ap:ActividadPrincipal) RETURN h.nombre,collect(ap.tipo_actividad), count(r) as cantidad_ act_x_h ORDER BY cantidad_act_x_h desc

 

Figura 7 – Todas las relaciones entre una herramienta y los demás nodos

MATCH (:Herramienta {nombre: ‘Scratch’})-[r]-() RETURN r

 

Disponibilidad y licencia de la base de datos

La base de datos realizada será distribuida para poder ser usada y/o modificada bajo una licencia con atribución al autor. Existen cuatro tipos de licencias para datos abiertos denominadas Open Data Commons: Open Data Commons Public Domain Dedication and License (PDDL), que no tiene restricciones; Open Data Commons Attribution License (ODC-By) que requiere de referencia al autor y fuentes de los datos; Open Data Commons Open Database License (ODbL), que indica que se mantengan las licencias en las obras derivadas del uso de los datos y Creative Commons Atribución 4.0 Internacional, que permite la copia y redistribución para cualquier uso, incluso el comercial.

La elegida es la licencia Open Data Commons Open Database License (ODbL) ya que es específica para las bases de datos, puede ser utilizada, modificada y/o distribuida y necesita de referencia al autor. El texto completo de la licencia se encuentra en opendatacommons.org/licenses/odbl/1.0/

Declaración de la licencia

This BASE DE DATOS HERRAMIENTAS MULTIMEDIALES is made available under Open Database License whose full text can be found at http://opendatacommons.org/licenses/odbl/. Any rights in individual contents of the database are licensed under the Database Contents License whose text can be found http://opendatacommons.org/licenses/dbcl/

La base de datos de herramientas multimediales se encuentra publicada en GitHub en el siguiente enlace:

https://github.com/mayrakolo/base-datos-herramientas-multimediales