21
PLAYER 1 ANTONIO M. MORA GARCÍA CODE REIMAGINED CODE REIMAGINED © SEED 2013 - Press START - GAMIFICACIÓN A TRAVÉS DE LA VISUALIZACIÓN DE CÓDIGO GAMIFICACIÓN A TRAVÉS DE LA VISUALIZACIÓN DE CÓDIGO

Code Reimagined SEED2013

Embed Size (px)

DESCRIPTION

This is the presentation (in Spanish) made for the First Spanish Symposium on Digital Entertainment about Code Re-imagined: an experimental tool for visualizing Java code through gamification.

Citation preview

Page 1: Code Reimagined SEED2013

PLAYER 1 – ANTONIO M. MORA GARCÍA

CODE REIMAGINEDCODE REIMAGINED

© SEED 2013

- Press START -

GAMIFICACIÓN A TRAVÉS DE LA VISUALIZACIÓN DE CÓDIGO

GAMIFICACIÓN A TRAVÉS DE LA VISUALIZACIÓN DE CÓDIGO

Page 2: Code Reimagined SEED2013

IntroducciónVisualización del softwareDiagrama de flujo como grafo o mapaGamificación de la visualización

ContextoTaxonomía de visualización de SWLegilibilidad del SWGamificaciónMetáfora Conceptual

PropuestaJava + MaryoElementos: IF, SWITCH, FOR, RETURN, …

Implementación y ConclusionesPlugin de EclipseVista de MaryoFuncionalidad

Page 3: Code Reimagined SEED2013

INTRODUCCIÓNINTRODUCCIÓN

Page 4: Code Reimagined SEED2013

Visualización• Para comprender el SW hay que visualizarlo• La visualización del SW permite documentar mejor los sistemas• También facilita la detección de fallos• Es especialmente importante durante su aprendizaje

Grafo• En el software principalmente hay dependencias• Las dependencias se pueden representar con grafos• Existen multitud de diagramas especializados según el SW• Ejemplo básico: diagrama de flujo para una función• El grafo representa el flujo de ejecución del código.

Mapa• Alternativa: usar un grafo tipo árbol• El árbol representa la estructura sintáctica• El árbol puede ser representado como un mapa

Page 5: Code Reimagined SEED2013

CONTEXTOCONTEXTO

Page 6: Code Reimagined SEED2013

La visualización se clasifica según qué y cómo se visualiza el software:

Estático Dinámico

Código X

Datos X X

Algoritmo x x

El objetivo de es añadir un valor expresivo yestético al software a nivel de función o método que mejore laexperiencia del usuario.

Page 7: Code Reimagined SEED2013

Definición de legibilidad: Capacidad de ser leído por un humano. (Esta definición es demasiado general)

¿La información es legible? ¿Cuán legible? …

En programación, se refiere a la claridad con que se entiende el texto de un programa. Se puede hacer una analogía con un texto lingüístico (p. ej. narrativo): – Si la historia es confusa o sin sentido el texto es poco legible– Si la historia está clara pero el lector es poco experimentado el

texto tampoco es legible

Si

No

Page 8: Code Reimagined SEED2013

Diferencia texto lingüístico VS texto de programa:

• El mensaje o la historia del texto de un programa está en un contexto computacional muy distante a la experiencia natural del lector humano.

• Porque en realidad el texto tiene dos lectores:

El humano (incluyendo al propio autor)

La máquina(lector privilegiado que lo entiende

perfectamente)

Opciones para mejorar la legibilidad:

1. Acercar el mensaje al lector (enfoque constructivista) Se presupone que el lector humano en algún momento se encontrará cómodo en el lenguaje de la máquina)

2. Acercar el lector al mensaje (enfoque conductista)Es necesario mejorar la experiencia del lector al usar el lenguaje de la máquina

Page 9: Code Reimagined SEED2013

Se adapta el mensaje de los programas para asemejarlo a la experiencia natural del lector (programas de tipo Storytelling).

Alice Etoys Scratch

X El código (aunque más vistoso) no adquiere legibilidad en general.X El aprendizaje está limitado a este tipo de programas.

Page 10: Code Reimagined SEED2013

Es el camino largo, tiene un amplio alcance, hay multitud de conceptos abstractos que generalmente son difíciles de visualizar (algunos más que otros).

En general, para enseñar todos estos conceptos, se utilizan metáforas conceptuales.

Page 11: Code Reimagined SEED2013

Algunos símbolos poseen ciertas metáforas, como los paréntesis (agrupan visualmente los términos) pero su uso extensivo puede disminuir su efectividad o incluso ser contraproducente:

(defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1)))))

Igual pasa con el uso de flechas. Además, la metáfora también pierde fuerza (adquiere abstracción) si hay variaciones en su significado.

Page 12: Code Reimagined SEED2013

Mecánicas o pensamiento de juego en contextos ajenos al juego para conseguir objetivos.

Tipos:A. Recompensas por tareasB. Competitividad entre jugadoresC. Hacer que las tareas aburridas sean más

atractivas

Ejemplos de A y B:Enseñanza en general, el colegio Quest To Learn de NYEnseñanza de programación, Codecademy.com

Ejemplo de C:Enseñanza de partículas subatómicas, ParticleQuest.com

Page 13: Code Reimagined SEED2013

PROPUESTAPROPUESTA

Page 14: Code Reimagined SEED2013

Metáfora conceptual:Código del método como un videojuego de plataformas.

Código Scratch Code Reimagined Diagrama de flujo

Page 15: Code Reimagined SEED2013

¿Cómo funciona?

El mapa se puede personalizar para aumentar su valor expresivo cambiando la textura de un elemento particular o de todos los elementos usando otros temas del videojuego o incluso otro videojuego.

Expresiones

Bucle

Condicional

Page 16: Code Reimagined SEED2013

IMPLEMENTACIÓNIMPLEMENTACIÓN

Page 17: Code Reimagined SEED2013
Page 18: Code Reimagined SEED2013

Finalista en CUSL VII

(Final de Granada)

Page 19: Code Reimagined SEED2013

CONCLUSIONESCONCLUSIONES

Page 20: Code Reimagined SEED2013

Se necesitan nuevas técnicas de visualización automática, donde la metáfora conceptual juegue un papel importante tanto para el aprendizaje como para la documentación en programación.

El uso de gamificación para el diseño de estas metáforas permite maximizar la concreción de los elementos visuales (permitiendo su personalización) sin perder analogía con los elementos representados.

Se ha implementado un prototipo base para la metáfora propuesta.https://github.com/javiplay/code-reimagined

Como línea a seguir se estudiará la efectividad de esta herramienta, habrá que diseñar experimentos con usuarios reales y completar funcionalidad.

Page 21: Code Reimagined SEED2013