• No se han encontrado resultados

Plataforma E-LEARNING para el desarrollo de habilidades del siglo XXI

N/A
N/A
Protected

Academic year: 2020

Share "Plataforma E-LEARNING para el desarrollo de habilidades del siglo XXI"

Copied!
68
0
0

Texto completo

(1)

0

[Escuela]

[Título del curso]

PLATAFORMA E-LEARNING PARA EL DESARROLLO DE HABILIDADES

DEL SIGLO XXl

INFORME TÉCNICO DE RESIDENCIA PROFESIONAL QUE PRESENTA:

Nombre del Residente

María Angélica Barreda Beltrán Jordi Alejandro García Núñez

Nombre del Asesor

Alma Delia Chávez Rojas

Nombre de la Carrera

Ingeniería en Sistemas Computacionales

(2)

Agradecimientos

Quiero agradecer a mis padres y hermano, por brindarme todo su amor y su confianza, por ellos estoy aquí. Gracias a mi tía Elo, por todo su apoyo a lo largo de mi vida; a todos mis amigos y aquellas personas que me han brindado un poco de sus consejos y conocimiento forman parte de un pilar importante en mi vida.

Extiendo toda mi gratitud a mis maestros, por guiarme y brindarme sus enseñanzas, especialmente a la L. I. Alma Delia Chávez Rojas, por enseñarme a ser yo mismo y seguir mí camino. Gracias a mi Abuelo por sus oraciones y todo su amor. Gracias a Dios, por permitirme estar aquí.

Jordi García

Quiero ofrecer un agradecimiento a mis padres por todo su amor, trabajo y sacrificio durante todos estos años; ya que gracias a ustedes he logrado llegar hasta aquí; y a mi hermana por todo el apoyo y consejos brindados.

También quiero agradecer a mis profesores por brindarme las herramientas y conocimientos necesarios para forjarme como un profesionista; especialmente a mi asesora la L.I Alma Delia Chávez Rojas que me ha orientado, apoyado y corregido de manera incondicional a lo largo de mi carrera. Gracias a todos los que me brindaron su apoyo y depositaron en mí su confianza.

(3)

Índice

Introducción ... 1

Empresa ... 2

Organigrama ... 3

Lugar de realización del proyecto ... 3

Problemática ... 4

Propuesta de Solución ... 5

Justificación ... 6

Alcances ... 7

Limitaciones ... 8

Ventajas Competitivas ... 8

Metodologías Aplicadas ... 9

Metodología de investigación aplicada ... 9

Scrum ... 10

Roles en Scrum ... 11

Sprint ... 11

Herramientas Scrum ... 12

Beneficios ... 13

Desarrollo ... 14

Cronograma de actividades ... 15

Comparativas de plataformas ... 16

Lenguajes de programación ... 16

Uso de hardware ... 17

Blockly ... 18

Tipos de bloques de blockly ... 18

Lógica ... 18

IfElse ... 19

Ciclos ... 20

(4)

Texto ... 22

Listas ... 24

Colores ... 25

Variables ... 26

Procedimientos/Funciones ... 27

Alternativas de solución ... 28

Scratch ... 28

App inventor ... 30

Briko ... 31

Fase de desarrollo ... 35

Instalación de Blockly ... 35

Canvas ... 36

Definición de ejercicios a realizar ... 36

Ejercicio 1 ... 37

Ejercicio 2 ... 37

Ejercicio 3 ... 37

Ejercicio 4 ... 37

Definición de bloques finales ... 37

Desarrollo de los ejercicios ... 39

Implementación de funcionalidades de la plataforma ... 42

Ejecutar código ... 43

Mostrar código ... 43

Guardar programa en XML ... 44

Cargar archivo XML ... 45

Pruebas y testing de la plataforma ... 46

Problemas con Edge e Internet Explorer ... 47

Problemas con Safari ... 47

Migración a RoR ... 48

Montaje y pruebas en Heroku ... 48

(5)

Montaje en app para iPad ... 51

Comunicación con Intel Edison ... 52

Conclusión ... 53

Anexos ... 55

Anexo A ... A

Anexo B ... B

Anexo C ... C

Anexo D ... D

(6)

Índice de Ilustraciones

Ilustración 1 Organigrama Intelligent Learning Solutions S.A. de C.V ... 3

Ilustración 2 Ubicación de la empresa ... 3

Ilustración 3 Roles Scrum tomada de (Viscardi, 2013) ... 11

Ilustración 4 Proceso tomada de (Lara, 2015) ... 12

Ilustración 6 Bloques de lógica tomada de ... 19

Ilustración 7 Bloque de If-else-if-else tomada de (Google, 2015) ... 20

Ilustración 8 Bloques de ciclos tomada de (Google, 2015) ... 21

Ilustración 9 Bloques matemáticos tomada de (Google, 2015) ... 22

Ilustración 10 Bloques de texto tomada de (Google, 2015) ... 23

Ilustración 11 Bloques de listas tomada de (Google, 2015) ... 25

Ilustración 12 Bloques de colores tomada de (Google, 2015) ... 26

Ilustración 13Bloques de variables tomada de (Google, 2015) ... 26

Ilustración 14 Bloques de procedimiento tomada de (Google, 2015) ... 27

Ilustración 15 Espiral del pensamiento creativo tomada de (E.scenarios, 2011) ... 28

Ilustración 16 Entorno de desarrollo Scratch tomada de (Makeblock, 2015) ... 29

Ilustración 17Entorno de desarrollo App Inventor tomado de (MIT, 2016) ... 30

Ilustración 18 Kit Premium tomada de (Briko, 2015) ... 31

Ilustración 19 Cerebro Briko tomada de (Briko, 2015) ... 32

Ilustración 20 Brikos de salida tomada de (Briko, 2015) ... 32

Ilustración 21 Brikos de entrada tomada de (Briko, 2015) ... 33

Ilustración 22 Piezas mecánicas Briko tomada de (Briko, 2015) ... 33

Ilustración 23 IDE briko tomada de (Briko, 2015) ... 34

Ilustración 24 Briko web tomada de (Briko, 2015) ... 34

Ilustración 25 Wireframe del ejercicio 1 ... 39

Ilustración 26. Wireframe y ubicación de los semáforos para el ejercicio 2... 40

Ilustración 27. Wireframe de referencia para el ejercicio 3 ... 41

Ilustración 28. Wireframe para el ejercicio 4 ... 42

Ilustración 29 Código en ejecución ... 43

Ilustración 30 Captura de pantalla de Alert con código ... 44

Ilustración 31 Prompt para el nombre ... 45

(7)

Ilustración 33 Ventana para elegir archivo ... 46 Ilustración 34 Plataforma montada en Heroku ... 49 Ilustración 35 Vista principal de la aplicación ... 51

Índice de tablas

(8)

1

Introducción

En los últimos años el aprendizaje a dado un giro, debido a que paulatinamente se ha pasado del método tradicional de enseñanza a un método más dinámico en cual se pueda tener acceso a la información desde cualquier lugar.

Tomando en cuenta dichas modificaciones que comienzan a realizarse en el sistema actual, se deben de proveer nuevas herramientas que permitan y faciliten el desarrollo de habilidades del siglo XXI.

Debido a la necesidad de desarrollar una plataforma que permita el desarrollo de habilidades que involucren el uso tecnologías actuales a continuación se abordará el desarrollo de una plataforma que permite e-Learning, la cual fue desarrollada en la ciudad de Puebla de Zaragoza dentro de la empresa Intelligent Learning Solutions S.A. de C.V., cuyo principal objetivo es el desarrollo de habilidades que involucren tecnologías de la información en niños y adolescentes dentro del país principalmente.

(9)

2

Empresa

La empresa Intelligent Learning Solutions S.A. de C.V es una empresa dedicada al desarrollo de sistemas y aplicaciones educativas con el objetivo de inspirar a niños y jóvenes a rediseñar y reinventar el mundo que los rodea. Los motiva a verse a sí mismos como agentes de cambio con buenas ideas y los empodera al mismo tiempo para que transformen esas ideas en realidad.

El principal objetivo de la empresa es inspirar a estudiantes a reinventar el mundo mediante los siguientes puntos

 Proyectos STEAM, los cuales son muy útiles ya que son proyectos

multidisciplinarios que incorporan los conocimientos de diversas materias, y se nutren de diversas metodologías y herramientas (Fundación Armancio Ortega, 2015).

 Enfoque construccionista, los cuales son muy útiles ya que son proyectos multidisciplinarios que incorporan los conocimientos de diversas materias, y se nutren de diversas metodologías y herramientas (Sabelli, 1990).

 Orientación a procesos, puesto que los proyectos están planteados como un conjunto de actividades de trabajo interrelacionadas que requieren de entradas las salidas de actividades previas (Franco Primera, 2011).

 Cualidades y competencias,debido a que el objetivo de estos proyectos es fomentar y desarrollar en los niños y adolescentes competencias y habilidades del siglo XXI.  Medios interactivos de apoyo, son altamente interactivos y promueven la

construcción de conocimiento tanto de forma individual o grupal (Medios Educativos, 2010).

 Comunidad, esto es propiciado gracias a que existe una plataforma que integra individuos con objetivos comunes, y que permite interacción entre ellos fomentando el trabajo colaborativo (Gómez Luna, 2002).

(10)

3

Organigrama

La empresa se encuentra estructurada de la siguiente manera como se puede apreciar en la ilustración 1 en la cual solo se hace referencia a la rama de Wegoo.

Ilustración 1 Organigrama Intelligent Learning Solutions S.A. de C.V

Lugar de realización del proyecto

La empresa Intelligent Learning Solutions S.A. de C.V., la sede se encuentra ubicada en Valle De Alcázar 1304, Colonia Real De Valle Alto 2 Sector, Monterrey, Nuevo León; pero el lugar donde se desarrolló dicho proyecto fue en Teziutlán Sur 26, Colonia La Paz, en Puebla, Puebla como se muestra en la siguiente imagen.

Ilustración 2 Ubicación de la empresa BENJAMÍN ARRIOLA CASASUS

Representante legal

Omar Adalid Vázquez Ortíz

Lider de proyecto

Alejandro Burgos

Artista visual

María Angélica Barreda Beltrán

Desarrollador

Jordi Alejandro García Núñez

Desarrollador

Raul Palacios

Desarollador

Jesús Alejandro Moctezuma González

Director de desarrollo

Eliot Ramón Rodriguez Gutiérrez

(11)

4

Problemática

Los cambios en los mercados laborales han propiciado que la economía actual opere sobre la innovación, creatividad y la colaboración; las labores de hoy necesitan cada vez más la resolución de problemas no estructurados y el análisis de cantidades masivas de información, los trabajos generados para “rutinas manuales” han disminuido considerablemente mientras que aquellos que se basan en habilidades de mayor orden, van en aumento.

Esto ha propiciado que los niños se enfrenten a un futuro donde habrá trabajos que aún no existen, manejando tecnologías que no han sido inventadas y con problemáticas que aún no son detectadas. El mundo en esta era del conocimiento evoluciona rápidamente demandando una nueva serie de habilidades que es imperativo desarrollar desde niños y jóvenes, para que con ello se pueda ayudar a erradicar el rezago, la inequidad y por ende la pobreza.

Es necesario desarrollar un nuevo paradigma de habilidades desde temprana edad, tales como la habilidad de analizar y evaluar información para la formulación de respuestas y sus soluciones (pensamiento crítico y resolución de problemas), la capacidad de imaginar e idear nuevas maneras de abordar problemas (creatividad), así como la habilidad de desarrollar un trabajo en equipo enfocado en una meta común, lidiando con el conflicto (colaboración), solo por mencionar algunas.

La educación en México siempre ha sido un tema de mucho debate si bien se han hecho grandes esfuerzos y se han autorizado diversos decretos en pro de mejorar la calidad de la educación, estas siempre se han encontrado con muchas inconsistencias, un punto clave es el hecho de que la educación se ha enfocado netamente en un modelo educativo basado en la evaluación, omitiendo el hecho de asegurar que se apliquen las competencias dentro del aula, con lo que la idea de conseguir aprendizajes y logros significativos se quedan en buenas intenciones.

Con el actual sistema de educación estandarizada, prácticamente se puede afirmar que no pueden cumplirse los 3 principios básicos: cobertura, calidad y equidad, surge entonces la necesidad de aplicar una nueva educación, que se enfoque más en apoyar y apremiar la utilización del pensamiento lateral, una educación que no se cimiente en el pensamiento vertical que actualmente ocurre, reorientar desde la base las estrategias educativas es importante para poder llegar a esa educación de mayor calidad, una educación enfocada en apreciar el talento, la capacidad e ingenio de los profesionales mexicanos (Rentería Guerrero, 2013).

(12)

5 herramientas a la educación, aunque es importante destacar que en realidad lo que es más determinante para que exista un cambio, es tener en claro que las TIC’s en la educación son una vía para que se pueda mejorar la calidad de la enseñanza, así como dotar de nuevos caminos para poder dar respuesta a las nuevas exigencias de la sociedad actual, la incorporación de las TIC’s no son sino una prioridad para que los jóvenes puedan desenvolverse de una mejor manera en el ámbito laboral, profesional y personal (Martín-Laborda, 2005).

Tomando en cuenta lo anterior, surge la necesidad de otorgar a las escuelas nuevas herramientas basadas en las tecnologías de la información que les permitan generar personas más capacitadas para enfrentar los problemas y los retos de hoy y del mañana, herramientas que propicien las condiciones idóneas para que las nuevas generaciones logren conseguir y desarrollar habilidades que les permitan desenvolverse en los ambientes reales que cada vez son más competitivos.

Propuesta de Solución

La propuesta que se presenta es el desarrollo de una plataforma e-Learning, misma que se pondrá a disposición de las escuelas públicas y privadas del país, permitiendo a estudiantes interactuar con tecnologías de información mediante el desarrollo de proyectos STEAM

(Science, Technology, Engineering, Arts and Math) para desarrollar habilidades del siglo

XXI.

Esta plataforma será el resultado de la implementación de un sistema tecnológico que contará con un módulo que permita hacer edición de código a través de una herramienta visual, mediante el uso de bloques ensamblables realizará las instrucciones de texto las cuales podrían ser más complicadas para los nuevos usuarios, ayudando a fomentar y despertar en ellos un pensamiento abstracto y lógico.

De igual manera, con esta herramienta se podrán controlar widgets virtuales o modelos de

hardware específicos de uso general como parte de un proceso de aprendizaje alternativo

basado en desarrollo de proyectos que permita fomentar el desarrollar las habilidades deseadas.

Para lograr el desarrollo de manera satisfactoria la solución propuesta, se plantearon los siguientes objetivos:

1. Investigar plataformas e-Learning.

2. Aprender del frameworkBlockly de Google.

3. Diseñar plataforma web que funcione como panel de administración.

4. Desarrollar la plataforma web que permita editar y probar código mediante el uso de lenguaje visual implementando la tecnología de Blockly.

5. Permitir la creación y personalización de bloques con la API de Blockly.

6. Documentar y reportar la creación del sistema web.

7. Realizar la planificación de una aplicación móvil que fungirá como panel de administración.

(13)

6 11.Realizar la comunicación de la plataforma web y la aplicación con el hardware. 12.Realizar la documentación, manuales y reporte final de actividades.

Justificación

En el México actual son grandes y bastos los retos que se presentan para poder mejorar la calidad de vida e incrementar la productividad y mejora continua del país; uno de los temas fundamentales que enmarcan y definen estos retos es la educación; si bien México no es considerado como país tercermundista, aún hay muchos detalles que lo alejan de ser una potencia, específicamente hablando de la educación, de acuerdo con la revista CNN Expansión, la debilidad principal que tiene México para lograr el desarrollo del talento de su juventud menor de 15 años, radica en la baja calidad de las oportunidades que se ofrecen para dicho sector de la población; incluso se ubica como el lugar 102 de 124 países que fueron medidos y analizados para lograr el Reporte de Capital Humano 2015 elaborado por el Foro Económico Mundial (WEF, por sus siglas en inglés). Las oportunidades generadas para los menores de 15 años, lo ubican en la posición 72 y hablando de un sector comprendido entre los 15 y los 24 años, se ubica en la posición 63, finalmente para el sector siguiente, su ranking mejora ubicándolo en el lugar 55; tomando en cuenta estos indicadores México se encuentra en el lugar 58 de 124 países del listado del estudio que mide la capacidad de las naciones analizadas para fomentar el talento a través de la educación, el desarrollo de habilidades y el despliegue de todas sus capacidades en todas las etapas de la vida. (CNN EXPANSION, 2015).

Bien es sabido que la educación es uno de los principales factores para el avance y progreso de las sociedades, aunado a los cambios y avances científicos y tecnológicos la importancia que la educación ha adquirido es aún mayor; en cuestiones de economía es considerada como uno de los pilares que más influyen tanto en producción, como en temas sociales, tales como la erradicación de las desigualdades, la pobreza y el analfabetismo. La educación es necesaria en todos los sentidos, nos ayuda a mejorar nuestro bienestar social, la calidad de vida y nos prepara para acceder a mejores oportunidades de empleo, a fortalecer nuestros valores y las relaciones sociales (Ortiz Reyes, 2015).

En la actualidad se han visto grandes e importantes cambios en la forma en la que se desenvuelve una persona profesionalmente, los cambios en los mercados laborales han propiciado que sean necesarias nuevas habilidades que hasta hace no mucho tiempo no eran consideradas por los métodos de enseñanza tradicionales. La innovación, creatividad y colaboración son los nuevos paradigmas sobre los que opera la economía de hoy; los diferentes puestos laborales requieren cada vez más la capacidad de resolver problemas no estructurados y hacer un análisis de cantidades masivas de información, todo esto de una manera rápida y eficiente, con el propósito de encontrar soluciones a las necesidades de la sociedad.

(14)

7 sido inventadas y deberán de atender problemas que aún no han sido detectados, por lo que será necesaria una mayor capacidad de adaptación al cambio y habilidades que deriven en la mejora de los procesos de análisis y resolución de problemas.

El mundo en esta era del conocimiento y evoluciones rápidas demanda una nueva serie de habilidades imperativas a desarrollar desde niños y jóvenes, que contribuyan a erradicar el rezago, inequidad y por ende la pobreza. Urge principalmente en edad temprana, desarrollar un nuevo conjunto de habilidades, tales como la habilidad de analizar y evaluar información para formular respuestas y soluciones (pensamiento crítico y resolución de problemas), la habilidad de imaginar e idear nuevas formas para abordar problemas (creatividad) y la habilidad de trabajar en equipo hacia una meta común lidiando con el conflicto (colaboración) por mencionar algunas.

Los avances tecnológicos que han surgido estos últimos años especialmente en las tecnologías móviles han puesto literalmente al alcance de las manos, nuevas y mejores herramientas que pueden ser explotadas de múltiples maneras; las nuevas generaciones prácticamente han crecido con estas herramientas en la palma de su mano, gracias a su manejo intuitivo y versatilidad se han convertido en una de las tecnologías más importantes de la actualidad; así mismo han surgido infinidad de proyectos de software que procuran ayudar a mejorar muchas de las tareas cotidianas, tal es el caso de los editores de programación visuales, mismos que se han convertido en excelentes aliados cuando de fomentar los principios básicos de programación se trata, el enseñar a programar a los estudiantes desde una edad temprana, ayuda a que desarrollen nuevos paradigmas de razonamiento, rompiendo los esquemas actuales y preparándolos para los retos del futuro.

Alcances

Dentro de la propuesta de solución planteada que consiste en el desarrollo de una plataforma e-Learning se establecieron una serie de objetivos a cumplir, de los cuales se desarrollaron los siguientes:

1. Investigación introductoria en plataformas e-Learning.

2. Capacitación y aprendizaje del frameworkBlockly de Google.

3. Diseñar una plataforma web que funcione como panel de administración.

4. Desarrollar la plataforma web permitiendo editar y probar código mediante el uso de lenguaje visual implementando la tecnología de Blockly.

5. Permitir la creación y personalización de bloques con la API de Blockly.

6. Documentar y reportar la creación del sistema web.

7. Realizar la planificación de una aplicación móvil que fungirá como panel de administración.

8. Desarrollar el entorno visual de la aplicación móvil (front-end). 9. Desarrollar la funcionalidad de la aplicación móvil (back-end). 10.Integrar la plataforma en la aplicación.

(15)

8

Limitaciones

Al momento de realizar un proyecto siempre existen ciertos factores que interfieren para que se desarrolle de la manera más óptima y sin contratiempos, dentro de las situaciones que pueden afectar en el transcurso de la investigación y desarrollo del sistema existen algunos que afectan directamente a la creación del mismo y otros que lo limitan en cuanto a funcionalidad.

Las limitantes que se encontraron en este proyecto retrasaron un poco el desarrollo del mismo, sin embargo, no impidieron que se realizara; a continuación, se enlistan y explican algunas limitantes tanto de la tecnología empleada como del desarrollo del proyecto:

 Curva de aprendizaje: Al haber utilizado y desarrollado en un framework nuevo para nosotros el tener que aprenderlo hizo que nos tomara más tiempo del propuesto para el desarrollo del sistema, de igual manera las distintas tecnologías que se utilizaron no habían sido manejadas al 100% y esto también represento atraso en tiempos.

 Asesorías remotas: Al no encontrarnos en la ciudad de Colima, las asesorías y revisiones tuvieron que ser mediante la vía remota, lo que significó que la atención no pudo ser tan personalizada como se esperaba, esto también logró provocar retrasos en la solución de diversas situaciones y problemáticas.

 La disposición del hardware: Lamentablemente no se contó todo el tiempo de desarrollo con el hardware necesario para realizar las pruebas ni el desarrollo de esta parte del sistema, este llego a finales de mayo, lo que significo poco tiempo para probarlo.

 Características del servidor Node.js: A pesar de que la tarjeta Edison es bastante potente, la funcionalidad que más nos interesa es la conexión inalámbrica basada en una conexión a internet, lo cual representa una limitante porque en caso de que no exista la infraestructura necesaria en las escuelas para montar una red, esta funcionalidad no será implementada de la manera deseada.

 Alcances de Blockly: Blockly es un excelente editor de texto, sin embargo, no tiene la capacidad suficiente para manejar todos los conceptos de programación, puesto que sería muy complicado implementar conceptos como recursividad, programación orientada a objetos entre otros, esto nos limita en los temas que pueden ser tratados.

Ventajas Competitivas

En el mercado existen diversas plataformas que hacen uso del framework de Blockly las más importantes son las siguientes:

Scratch.

App Inventor.

Briko.

(16)

9 como posibles plataformas a implementan en dado caso que estas cubrieran las características y objetivos planteados.

Dentro de las plataformas existentes se muestran una serie de limitantes referentes a la presentación de la interfaz, vistas previas de los ejercicios desarrollados y facilidad de navegación. Tomando en cuenta las problemáticas presentadas se optó por darles una solución dentro de la plataforma a desarrollar, dando como resultado las siguientes ventajas:

 Permite el manejo de widgets virtuales, así como hardware de uso específico.  El diseño muestra un preview de la ejecución del código que se cargará al

hardware.

 Posee una interfaz amigable para niños, sin dejar de ser formal para adultos.

 Forma parte de un sistema robusto de e-Learning que incluye entre otras cosas, modelado e impresión 3D, trabajo colaborativo en tiempo real, y red social de creadores.

 Tendrá versión web y móvil para IOS y Android.

 Es una plataforma basada en desarrollo de proyectos, que se encuentra en constante crecimiento.

 Se tiene un convenio con algunas instituciones.

Metodologías Aplicadas

Metodología de investigación aplicada

La “investigación aplicada” fue elegida para este proyecto ya que se caracteriza en buscar la aplicación y utilización de los conocimientos adquiridos de una manera práctica al tiempo que se adquieren nuevos conocimientos. El uso de los resultados y el conocimiento que generó dicha investigación, da como resultado una manera rigurosa, organizada y sistemática de conocer la realidad (Vargas Cordero, 2009).

Guarda íntima relación con la investigación básica, ya que depende directamente de los descubrimientos previos y los avances obtenidos en esta última; enriqueciéndose con la utilización y puesta en práctica de dichos conocimientos. Tiene como objetivo el conocer para hacer, actuar, construir y modificar (Diego Mendoza, 2012).

El término de “investigación aplicada” se ha propagado desde el siglo XX, con él se hace referencia al tipo de estudios científicos que se enfocan a la resolución de problemas de la vida cotidiana, o bien ayudan a controlar situaciones prácticas, tomando en cuenta dos tipos de investigación aplicada:

Aquella que incluye cualquier esfuerzo de manera sistemática y socializada con el fin de resolver problemas o intervenir en diversas situaciones, por ejemplo, la innovación técnica, artesanal e industrial tanto como la propiamente científica.

(17)

10 A través de la historia, la investigación aplicada muestra el cómo aprovechar diversos materiales teóricos con el fin de realizar el diseño de sistemas de acción que permitan resolver alguna necesidad o situación social deficiente, es decir que de alguna manera pueda ser mejorada (Vargas Cordero, 2009).

Ya que se pretende realizar un software que les permita a los estudiantes conocer los principios básicos de la programación y mediante el cual puedan controlar diversos widgets

o algún hardware físico de comportamiento general, es necesario realizar una investigación que posea un enfoque sistematizado con un orden práctico en lugar de alguna con un enfoque cognitivo, ya que este tipo de investigación tiene como objetivo alcanzar una fase aplicativa, en nuestro caso el desarrollo de la aplicación, la cual sea resultado de la investigación previa; su estructura general es la siguiente:

Paso 1: Se parte de una situación problemática, que requiere ser intervenida y mejorada. Se describe sistemáticamente esa situación, bajo criterios relevantes.

Paso 2: Se selecciona una Teoría, de carácter reconocido y suficientemente aceptada. Se expone sistemáticamente esa teoría, tanto en sus conceptos centrales como en sus rasgos contextuales.

Paso 3: Se examina la situación descrita en el paso1 a la luz de la Teoría expuesta en paso 2. Se deriva de esta teoría un sistema de acciones y de previsiones (prototipo) que, si se pone en práctica, resolvería favorablemente la situación problemática descrita en el paso 1. Se describe sistemáticamente este prototipo, tanto en sus secuencias de uso como en sus instrumentaciones asociadas.

Paso 4: Se ensaya y se prueba el prototipo que se obtuvo en el paso 3. Se determina la probabilidad que tiene el modelo aplicativo de resolver la clase de situaciones problemáticas del tipo descrito en el paso 1 (Padrón G., 2006).

Esta investigación se realizó con un enfoque cualitativo, en el que se plantea crear una aplicación que sea de un entendimiento sencillo y de fácil manejo para los usuarios, con la que podrán materializar sus ideas y mediante bloques visuales de código podrán generar sus propias rutinas y programas, desarrollando un pensamiento abstracto, además de poder manipular y controlar mediante el uso de bloques, los dispositivos bien sean virtuales o físicos.

El prototipo resultado de esta investigación se desarrolló bajo el esquema de trabajo Scrum, dicha metodología es aplicada dentro de la empresa para la cual se realizó el prototipo.

Scrum

La metodología Scrum es aplicada principalmente para el trabajo colaborativo y en equipo para obtener un mejor resultado del proyecto, debido a que se realizan entregas parciales y regulares del producto final.

Scrum está especialmente indicado para proyecto en entornos complejos, donde es

(18)

11 La empresa Intelligence to Bussines (I2B) define el Scrum como “Un proceso de la

Metodología Ágil que se usa para minimizar los riesgos durante la realización de un proyecto, pero de manera colaborativa” (Gutiérrez, 2014); las principales ventajas que posee es la productividad, calidad y el seguimiento diario respecto a los avances del proyecto los cuales permiten lograr que los integrantes posean una excelente comunicación y su vez el cliente pueda visualizar constantemente los avances efectuados.

Scrum se considera como un framework para trabajar en equipo empleando una serie de

iteraciones; por lo cual se divide en fases que definen el proceso basado en lo siguiente: 1. ¿Quién? y el ¿Qué?: se identifica los roles de cada uno de los miembros del equipo

y define la responsabilidad en el proyecto. 2. ¿Dónde? y el ¿Cuándo?: representan el Sprint.

3. ¿Porqué? y el ¿Cómo?: representan las herramientas que utilizan los miembros del

Scrum.

Roles en Scrum

Los roles del Scrum son los siguientes como se muestra en la ilustración 3:

1. El Product Owner/Dueño del producto es la “voz del cliente” y el responsable de

desarrollar, mantener y priorizar las tareas en el backlog.

2. El Scrum Master es responsable de asegurarse que el trabajo del equipo vaya bien

siguiendo las bases de Scrum. Además, se encarga de remover cualquier obstáculo que pueda encontrar el equipo de desarrollo.

3. Los Development Team Members/Miembros del Equipo de desarrollo son los

encargados de escribir y probar el código.

Ilustración 3 Roles Scrum tomada de (Viscardi, 2013) Sprint

(19)

12 el desarrollo del proyecto. El siguiente gráfico muestra cómo se lleva a cabo la metodología aplicada dentro un proyecto

Ilustración 4 Proceso tomada de (Lara, 2015)

Durante cada iteración que se realiza tiene que proporcionar un resultado completo o en su defecto un incremento del producto final, dicho procesos parte de una lista de objetivos o requisitos como plan de proyecto de tal modo que se priorizando los objetivos respecto al valor y al coste.

Herramientas Scrum

Son un tipo de herramientas que nos provee Scrum, las cuales son:

1. Backlog de Producto/ Product Backlog: se refiere a todo elemento que sea parte del

proyecto, brindando información muy general del proyecto que no forma parte dentro de los requerimientos oficiales.

2. Historias de Usuario/ User Stories: es un considerado como un elemento especial, ya que proporcionar información sobre cómo debe ser el comportamiento del requerimiento a trabajar, los cuales son tomados como requerimientos oficiales.

3. Backlog del Sprint/ Sprint Backlog: es el conjunto de elementos tomados del

product backlog que fueron priorizados, medidos y aceptados en las reuniones de

Sprint planning.

4. Panel de tareas /The Taskboard: dicho panel muestra todas y cada una de las tareas que se tienen asignadas a cada uno de los miembros de equipo; dicha tabla se divide en 3 columnas que representan el estado de cada tarea

 Por hacer (to do).

 Haciendo (Doing).

 Terminado (Done).

5. Definición de listo/ Definition on Done: es una serie de acuerdos que deben cumplirse para que pueda darse por finalizado un proyecto. Estos son:

(20)

13  Revisión de código.

 Pruebas realizadas a cada elemento desarrollado.  Revisión por parte de los clientes.

 Revisión de las condiciones de aceptación

Beneficios

La metodología ofrece varios beneficios dentro del proyecto, debido a que las entregas de resultados son constantes (mensual o quincenal) proporcionan diferentes ventajas que a continuación se enlistan (Tataje, 2010):

1. Gestión regular de las expectativas del cliente. 2. Resultados anticipados.

3. Flexibilidad y adaptación.

4. Gestión sistemática del retorno de inversión. 5. Mitigación sistemática de los riesgos. 6. Productividad y calidad.

(21)

14

Desarrollo

Gracias a que las características de este proyecto involucran la implementación de tecnologías relativamente nuevas o poco comunes, el desarrollo de una herramienta educativa bajo paradigmas de enseñanza emergentes y la proposición de un método educativo nuevo que incluye la interacción entre las TIC’s y la educación, fue necesario dividir en dos fases o etapas el desarrollo de la plataforma resultante: Investigación y Desarrollo.

Para realizar la primera etapa denominada fase de investigación, se utilizó la investigación aplicada, en la que se realizó toda una contextualización de la actualidad de los diferentes métodos de enseñanza existentes, se realizó una investigación a fondo de distintas y diversas plataformas que ponen en línea infinidad de cursos, ejercicios, pruebas y materiales educativos en general, esto con el propósito de comprender y abstraer las particularidades que pudieran aportar ideas y mostrarnos la manera en que se aplican estas herramientas, de igual manera se revisaron informes educativos de distintas fuentes para conocer cuál era la forma más adecuada en la que debían desarrollarse las temáticas y contenidos que debía de incluir la plataforma, para así generar un mejor producto.

Se realizó una comparativa entre algunos de los lenguajes de programación más utilizados para enseñar a los niños, se analizaron los pros y contras de cada uno de ellos, sus orígenes y propósitos entre algunos detalles más. Así mismo, en esta etapa se hizo una profunda capacitación en el manejo y uso del framework Blockly de Google, su origen, propósito y ventajas que ofrece, se investigó a detalle el modo de uso, la forma de implementación, los alcances y limitaciones del mismo, se estudiaron algunos proyectos que también utilizan esa herramienta con el fin de conocer la manera en la que ellos aprovechan las virtudes de este editor, se realizaron algunas pruebas de implementación y se exploraron todas las características destacadas del mismo para poder comprender de qué manera podía aportar mejoras en nuestra plataforma.

Debido a que el proyecto incluye el manejo no solo de widgets virtuales sino también de

hardware específico, se realizó una búsqueda de algunos Kits de robótica para niños, con

los que posiblemente se podría interactuar desde la plataforma, esto se realizó con el fin de analizar algunas alternativas para implementar en conjunto con nuestra propuesta. Posteriormente se analizó el uso de Kits de electrónica para el desarrollo de proyectos de propósito general, tales como la creación de artefactos y gadgets multipropósito, así como

Kits enfocados en el ámbito del Internet de las Cosas.

Sabiendo que es importante conocer diversas alternativas de solución a la problemática detectada, se investigaron algunas plataformas y entornos de desarrollo que involucran conceptos muy similares a lo que se propone con el desarrollo de esta plataforma, se hizo hincapié en las ventajas y desventajas que presentan, así como una explicación detallada de su funcionamiento y composición.

(22)

15 Primero que nada, se hizo un análisis completo para que con base en el cronograma propuesto quedaran definidas las actividades a realizar, se partió por instalar y configurar

Blockly, posteriormente se comenzó con el desarrollo de algunos bloques personalizados

como pruebas para aprender a hacerlos.

Se hicieron algunas pruebas para la manipulación del elemento canvas controlado desde los bloques ya que ahí es donde se mostraría la ejecución del código que el niño haya programado, para tener una mejor visualización de la ejecución del código, se implementó también el JS Interpreter, con el cual se podían ir resaltando los bloques que estuvieran ejecutándose en ese momento.

Una vez probada la interacción entre bloques y canvas, se pasó a definir todos los bloques que serían necesarios, se crearon las estructuras y se programaron las funciones correspondientes. Se definieron y desarrollaron los primeros ejercicios y se agregaron algunas funcionalidades a la plataforma, se realizaron las pruebas correspondientes para asegurar la calidad del sistema y el cumplimiento de los objetivos.

Se llevó a cabo el desarrollo de la aplicación para iPad, en el que se embebió la plataforma

web, así como la migración del sistema a un entorno en Ruby on Rails, y su montaje en un servidor de Heroku, lo anterior para poner a disposición de pruebas reales la plataforma. Se montó un servidor Node.js en la tarjeta elegida para el desarrollo de la manipulación del

Hardware, para que mediante él se pudiera hacer la comunicación entre los actuadores y la

plataforma, ya sea en su versión web y en su aplicación móvil, esto para cumplir el objetivo del control de hardware de uso específico.

Cronograma de actividades

Para efectuar el desarrollo de cada una de las actividades se planteó un cronograma en el cual se muestran las actividades y el tiempo que se pretende emplear en cada una de ellas para concluir con el objetivo final del proyecto.

La distribución de los tiempos se puede visualizar en el Anexo A , así como la actividad a realizarse durante dicho periodo; a continuación, se enlista las actividades a realizar:

1. Investigación de plataformas e-learning. 2. Investigación de entornos de desarrollo. 3. Aprendizaje y capacitación del entorno. 4. Análisis y definición del sistema. 5. Desarrollo del sistema.

6. Pruebas y documentación.

(23)

16

Comparativas de plataformas

Con el propósito de entrar en el contexto de las diferentes plataformas existentes mismas que son utilizadas para enseñar a los niños a programar, se realizó una investigación y análisis de algunas de ellas.

Primero se hizo una búsqueda de distintas herramientas, recursos, juegos o plataformas que propiciaran la enseñanza de los conceptos básicos de programación, ya sea a través de sistemas drag & drop, o mediante algún método más tradicional. Para llevar a cabo la evaluación y comparación de dichas plataformas se tomaron en consideración 11 criterios o características que se describen a continuación:

 Temas: En este apartado se enlistaron los temas que la plataforma en cuestión aborda en su totalidad, es decir, que temas son vistos y en qué orden se presentan a lo largo del uso de la plataforma en turno.

 Retroalimentación: Con este criterio se determina la manera en la que la herramienta ofrece retroalimentación al usuario, ya sea para instrucciones o correcciones de errores.

 Lenguaje específico: Este criterio nos da a conocer que lenguaje de programación implementa la plataforma analizada, con él se podría determinar las tendencias de uso de lenguaje y elegir la mejor opción.

 Número de niveles: Nos permite saber aproximadamente cuantos ejercicios implementa en su totalidad la plataforma.

 Ejercicios por tema: Esto nos da un rango de aproximadamente cuantos temas o tiempo debería demorarse la enseñanza de un capitulo en general.

 Tipo de ejercicios: Esto con el fin de conocer las tendencias en cuanto a la manera de presentar los ejercicios que permitan enseñar a los niños a programar.

 Plataforma: Ese criterio indica bajo que plataforma corre el sistema analizado.  Costo: Para saber si acaso alguna de las alternativas es de paga.

Widget utilizado: Esto nos indica el tipo de personaje que la plataforma implementa

para interactuar con el usuario.

 Habilidades que desarrolla: Este apartado nos muestra que tipo de habilidades y conceptos son enseñados a lo largo del uso de la plataforma en turno.

 Propósito: Nos dice cuál es el objetivo final de los ejercicios.

También se analizaron el tipo de interfaz que presentaba la plataforma, con el fin de observar y diseñar una interfaz que cumpliera mejor con los objetivos, se observaron las ventajas y desventajas generales, así como alguna característica o situación sobresaliente que ayudara a tener algún punto extra en consideración (ver Anexo B).

Lenguajes de programación

(24)

17 fomentar en ellos nuevas habilidades, se realizó una comparativa entre algunos de los lenguajes más utilizados para la enseñanza e introducción al mundo de la programación. Aun cuando el usuario final no tendría contacto directo con la sintaxis de ningún lenguaje de programación, es importante elegir uno que sea suficientemente sencillo para enseñar a usuarios que no han tenido acercamiento con ningún tipo de desarrollo de software anterior, pero que sean lo suficientemente potentes para que puedan desarrollarse proyectos interesantes y de alto impacto con ellos, con base en lo anterior, se realizó una comparativa en la que se evaluaban e investigaban 6 características generales de los lenguajes, a continuación se enlistan los criterios considerados:

 Propósito: meta que busca conseguir, misma que lo diferencia del resto.

 Base de desarrollo: que lenguajes inspiraron su creación, esto con el fin de conocer las bases sobre las que se cimienta

 Sitios donde se usa: un contexto general de proyectos e iniciativas que implementan este lenguaje.

 Usabilidad: características esenciales en cuando a la manera en la que se utilizan.  Facilidades de aprendizaje: grado de complejidad que presenta para ser aprendido

por usuarios novatos.

Este estudio se realizó entre 3 lenguajes que han surgido últimamente como referentes en la enseñanza de la programación no solo en niños, sino en la sociedad en general, los cuales son Python, elegido por ser muy sencillo en su estructura y con reciente auge, JavaScript, lenguaje altamente probado con características bastante interesantes y finalmente Ruby, lenguaje muy solicitado últimamente con una gran filosofía de desarrollo (ver Anexo C). De los lenguajes analizados se optó por hacer uso de JavaScript debido a la solidez que representa, así como las facilidades que nos otorga respecto al desarrollo.

Uso de hardware

Parte fundamental del proyecto involucra la programación y manipulación de hardware

especifico, es por esto que se investigó y buscó diferentes alternativas que pudieran ser implementadas a la par de nuestro sistema, para ello en un comienzo se comenzó por buscar

kits de robótica completos para niños, para ello se tomaron en cuenta la versatilidad de cada uno de los kits.

 Fabricante: para ser tomado como referencia al momento de elegir.

 Placa: para conocer bajo que arquitectura están desarrollados y verificar escalabilidad.

 Lenguajes: con esto es más sencillo saber de qué manera pueden ser programados y poder verificar compatibilidad, complejidad de adaptación y escalabilidad.

Opensource: simplemente verificar si el hardware es de código abierto.

 Costo: para fines económicos y análisis costo-beneficio.

(25)

18 el análisis y comparación de los kits de electrónica fueron el precio, cantidad de sensores, calidad de la tarjeta de desarrollo, escalabilidad y ventajas; con estos datos se obtuvo el costo beneficio de cada uno de los kits de electrónica investigados, esta investigación dio como resultado una tabla donde se incluye la siguiente información:

1. Nombre del kit. 2. Imagen de referencia. 3. Lugar de venta. 4. Costo.

5. Productos disponibles. 6. Liga de compra.

7. Tiempo estimado de envío.

8. Descripción (cantidad de sensores y contenido).

Con toda la información recabada (ver Anexo D) se llegó a la conclusión de hacer uso de

Intel Édison y Grove kit starter plus debido a las características que posee y el

costo-beneficio que otorga.

Blockly

Blockly es un lenguaje de programación visual compuesto por un sencillo conjunto de comandos que podemos combinar como si fueran las piezas de un rompecabezas. Es una herramienta muy útil para el que quiera aprender a programar de una forma intuitiva y simple (Rodríguez, 2012).

Permite a los programadores principiantes a concentrarse en la lógica. Se le ofrece una serie de comandos y cómo se pueden colocar juntos. No hay paréntesis desequilibrados, cadenas de escape, no hay puntos y coma que falten (Rodríguez, 2012).

Blockly permite arrastrar los distintos componentes de control, lógica, operaciones matemáticas, texto, listados y procesos para crear sencillos scripts que podremos exportar a lenguajes como JavaScript, Dart, Python o XML.

Tomando como referencia toda la investigación anterior al igual que los objetivos que se pretenden cumplir haciendo uso de la herramienta blockly la cual nos permite la implementación de lenguaje JavaScript y permite la conexión con la tarjeta Intel Édison. Dentro de blockly existe una serie de bloques que nos permiten realizar diferentes funciones además de introducción los diferentes conceptos de programación, más adelante se enlistan cada uno de ellos con una descripción más amplia de sus funciones.

Tipos de bloques de blockly

Lógica

En el álgebra booleana existen dos valores, falso y verdadero. Se implementan en los bloques condicionales y en los bloques de repetición.

(26)

19  igual a (=).

 diferente a (! =).  mayor que (>).

 mayor igual que (> =).  menor que (<).

 menor igual que (< =).

Existen también operaciones lógicas, AND que regresará verdadero sólo cuando ambas entradas sean verdaderas, en cambio el operador OR regresará verdadero si cualquiera de las dos entradas sea verdadera.

El bloque NOT cambia el valor de la entrada en el opuesto, si se omite la entrada esta se considerará como verdadero por lo que el bloque regresará falso.

Dichos bloques los podemos visualizar en la siguiente ilustración 6.

Ilustración 5 Bloques de lógica tomada de (Google, 2015)

IfElse

Las sentencias condicionales son muy importantes para la programación computacional. Dentro de esta sección de bloques referentes a condicionales se tienen las siguientes estructuras de sentencias:

 Bloque if

 Bloque IF-ELSE

 Bloque IF-ELSE-IF

 Bloque IF-ELSE-IF-ELSE

(27)

20 EL bloque IF-ELSE aplica la misma lógica que el bloque IF, sin embargo, este bloque permite realizar alguna acción en cualquiera de los dos casos que se generen ya sea que la condicional sea FALSO o VERDADERO (Google, 2015)..

Existe un bloque llamado IF-ElSE-IF, con el cual se pueden probar múltiples condiciones, si ninguna resulta verdadera, no realiza ninguna de las opciones y ejecuta las siguientes instrucciones.

El bloque IF-ELSE-IF-ELSE (ilustración 7) prueba más de una condición, y en caso de que ninguna resulte verdadera, también realiza una acción correspondiente al último ELSE que se maneja en la estructura (Google, 2015).

Existe el bloque de modificación, en el cual el usuario puede definir cuantas condiciones desea realizar, este bloque permite tantos ELSE-IF como el usuario desee, sin embargo, únicamente permite un solo bloque ELSE con el que termina la estructura de ese bloque.

Ilustración 6 Bloque de If-else-if-else tomada de (Google, 2015)

Ciclos

Los bloques de CONTROL (ilustración 8) permiten controlar cuantas veces el código que se encuentra en su cuerpo se va a correr, estos son llamados CICLOS (loops) los cuales pueden ser posiblemente repetidos muchas veces, cada vez que se corre el código en el cuerpo del ciclo se llama ITERACION.

El bloque de ciclos más simple es el REPEAT el cual correrá el código dentro de su cuerpo un número específico de veces (este número puede ser definido por una variable), el ciclo

(28)

21 establecida por el usuario sea VERDADERA, en cambio el ciclo REPEAT UNITL, repetirá el código dentro de su cuerpo hasta que la condición sea verdadera, es decir que mientras dicha condición no se cumpla el código seguirá ejecutándose (Google, 2015).

El bloque COUNT WITH (ciclo FOR) utiliza 4 parámetros en el cual incrementa una variable (primer parámetro) desde el primer valor (segundo parámetro), hasta el segundo valor (tercer parámetro) con un incremento del tercer valor (cuarto parámetro), que incluso pude ser negativo, ejecutando el código una vez por cada valor de la variable (ITERACION), el ciclo FOR EACH es muy similar al anterior, solo que en lugar de dar una secuencia numérica utiliza los valores de una lista dada, es decir cada elemento que pertenezca a dicha lista (Google, 2015).

Los bloques de terminación permiten controlar las iteraciones de cada uno de este tipo de ciclos, el bloque CONTINUE WITH NEXT ITERATION es un bloque que causa que el código restante se omitido, continuando con la siguiente iteración, el bloque BREAK OUT OF LOOP, permite terminar la ejecución del código en el cuerpo del ciclo en cualquier momento.

(29)

22

Matemáticas

Los bloques de matemáticas te permiten escribir un número, poner una suma, existe un bloque de la raíz cuadrada, funciones trigonométricas (seno, coseno, etc.), números especiales (pi, épsilon, infinito), bloque para saber si tiene alguna característica especial (si es primo, negativo, positivo, divisible entre X), incrementar cierta variable, redondear ya sea hacia arriba o hacia abajo, operaciones con listas (suma, máximo, mínimo, medias, etc.) la siguiente ilustración 9 muestra dichos bloques (Google, 2015).

Ilustración 8 Bloques matemáticos tomada de (Google, 2015)

Texto

Dentro de la sección de texto existen diferentes bloques que nos permiten la interacción con cadenas de texto, cada uno de los bloques que se incluyen dentro de esta sección muestran características que nos permiten obtener diferentes resultados de una misma cadena; dichos bloques pueden contener:

1. Letras (mayúsculas y minúsculas).

2. Números.

3. Signos de puntuación. 4. Espacios en blanco. 5. Símbolos especiales.

El bloque TEXT CREATION, es uno de los bloques principales puesto que nos permite crear un texto de longitud indefinida y poder almacenarlo en una variable del tipo CADENA. Mientras que el bloque CREATE TEXT WITH permite crear una combinación o concatenación entre diferentes ítems que el usuario desee definir para su uso.

Para modificar texto puede utilizarse el bloque APPEND TEXT, en el cual hace posible el poder cambiar el valor de texto que se encuentra guardado dentro de una variable de tal modo que este sea alterado para beneficio del usuario.

(30)

23 longitud igual a 0, en caso de que dicha longitud sea diferente de 0 el resultado arrojado será VERDADERO, en cambio si el texto tiene una longitud igual a 0, el resultado obtenido será FALSO (Google, 2015).

En algunas ocasiones es necesario encontrar pequeñas fracciones de texto específicos dentro de un texto; para vida de hacer esto posible se hace uso del bloque IN TEXT FIND, el cual necesita de un texto, para posteriormente seleccionar la letra o palabra que se desea encontrar; cuando esta es localizada da como resultado el número de la posición en donde se encuentra ubicada dicha letra o palabra, en dado caso de que la letra o palabra no se encuentre dentro del texto, el resultado será 0.

Otra manera de poder extraer texto es haciendo uso del bloque IN TEXT GET, donde se debe especificar la palabra que se desea analizar, y la posición en la que se deseamos obtener el carácter (Google, 2015).

Cuando se desee obtener toda una fracción de texto se utiliza el bloque IN TEXT GET SUBSTRING, FRO, TO, en el cual se especifica en que letra va iniciar y hasta que letra va terminar, bien puede ser, primera letra hasta el final, o de la letra n hasta el final o de letra n hasta letra n-1.

Si se desea ajustar el texto a mayúsculas, minúsculas o como título (primera mayúscula), se puede llevar a cabo con el uso del bloque TO; durante dicho proceso los caracteres no alfabéticos no serán afectados.

También existe el bloque de TRIM SPACES FROM, el cual nos permite remover espacios ya sean de lado izquierdo, derecho o ambos, los espacios que estén en medio no serán afectados.

Para imprimir palabras en una ventana pop-up se utiliza el bloque PRINT, si se desea obtener una entrada por parte del usuario, se utiliza el bloque, PROMPT FOR WITH

MESSAGE, mismo que normalmente se asigna a una variable para guardar la entrada del

usuario, esta entrada bien puede ser texto o número (Google, 2015) en la ilustración 10 se observan estos bloques.

(31)

24

Listas

Las listas son una colección ordenada de ítems, los cuales pueden representar cualquier tipo de dato o información, normalmente se usan para colecciones de datos en forma de texto, para crear una lista es suficiente con un bloque CREATE EMPTY LIST, este bloque lo que hace es crear una estructura de dato del tipo lista sin ningún elemento, es decir, lo crea vacío.

En cambio cuando se desea crear una lista que cuente ya con ítems definidos se utiliza un bloque CREATE LIST WITH, esta lista normalmente se asigna a una variable, los elementos que contiene pueden ser o bien de un solo tipo o incluir variedad de tipos diferentes, es posible incrementar o disminuir el número de ítems que deseas permitir en la lista, además que estos ítems puedes moverlos y cambiarlos en la posición que sea, permitiéndote ordenar o manipularlos a conveniencia (Google, 2015).

En cambio, para hacer una lista que esté definida con un determinado número de copias del mismo elemento lo que se hace es utilizar el bloque llamado CREATE LIST WITH ITEM, este bloque necesita de dos parámetros, el primero es donde se especifica el nombre del ítem y en el segundo parámetro se asigna el número de veces que deseas que se repita este ítem en tu lista.

El bloque IS EMPTY, funciona muy bien para identificar si existe por lo menos un elemento en la lista que se está analizando ya que regresará verdadero si es una lista que se encuentre sin elementos y falso si hay por lo menos un elemento en ella.

Así mismo el bloque LENGHT OF es aplicable en las listas, ya que este es capaz de contar los elementos de una lista, regresando el valor del número de ítems que se encuentren en ella, cabe mencionar que este bloque cuenta el total de elementos, es decir, si hubiera elementos repetidos igual contarían individualmente.

Al igual que en el texto se pueden buscar elementos específicos, por ejemplo con el bloque

IN LIST, FIND, OCCURRENCE OF ITEM, dependiendo de la ocurrencia que se desea

conocer, este bloque regresa el número de la posición en la que se encuentra el elemento que se envió como parámetro en dicha ocurrencia, también se puede obtener un ítem específico de las listas, estos ítems normalmente se buscan contando las posiciones, ya sea comenzando en el inicio hasta el final, o bien en sentido inverso comenzando con el final, de igual manera configurando un poco, este mismo bloque, se pueden obtener y remover ítems determinados, o bien solo removerlos, es importante mencionar que con estas opciones la lista original cambia por completo (Google, 2015).

Es posible que partiendo de una lista se puedan obtener sub-listas, para ello se implementa el bloque IN LIST, GET SUB-LIST FROM, con el que se obtienen listas partiendo de una que las contenga, estas sub-listas bien pueden elegirse desde un número de ítem hasta el final de la lista, pueden ser de un ítem inicial a un ítem final, o del principio a cierto número de ítem.

(32)

25 nuevo ítem ya sea en determinada posición haciendo que el resto se desplacen un número más, o bien al principio, o agregándose hasta el final de la lista (Google, 2015).

Para generar una lista a partir de una cadena, la cual tendrá un delimitador, se utiliza el bloque MAKE LIST FROM TEXT, WITH DELIMITER, con este bloque se hace un Split del texto y con él se genera una lista, así mismo, es posible crear un texto a partir de una lista. El comando CREATE TEXT FROM LIST WITH DELIMITER, donde generará el texto colocando el delimitador entre cada ítem de la lista. Las listas también pueden ser impresas en pantalla con el comando PRINT, y pueden ayudar en los ciclos como el FOR EACH ITEM (Google, 2015), a continuación se muestran estos bloques en la ilustración 11.

Ilustración 10 Bloques de listas tomada de (Google, 2015)

Colores

Existe una categoría que permite hacer el uso de distintos colores, estos son implementados de diversas maneras, en la ilustración 12 se observan los distintos bloques que manejan colores, los cuales pueden ser elegidos, creados o mezclados, para ello es necesario hacer uso de un bloque denominado COLOUR; este bloque nos permite hacer cualquiera de estas acciones, con lo que es posible implementar una gama bastante amplia de colores, puesto que las combinaciones son muy variadas

La forma más sencilla de utilizar e implementar los colores es eligiéndolos de una paleta de colores predefinida, esta se encuentra junto con el bloque COLOUR PICKER, el cual aparecerá por defecto en rojo, sin embargo, una vez que se le da clic al bloque aparece una paleta de colores variada donde el usuario puede elegir a su gusto

También es posible crear colores que no estén definidos en la paleta predefinida, esto se logra con el bloque, COLOUR WITH, RGB, el cual utiliza un rango de 0 a 100 en lugar de 0 a 255, con este rango, se especifican las cantidades de color que en escala RGB que se insertarán y darán como resultado un nuevo color. (Google, 2015).

(33)

26 números aleatorios, mismos que representan un valor en escala RGB y que traen como resultado un color que se encuentre especificado dentro de la gama de colores existente. También es posible mezclar colores utilizando el bloque BLENDING COLOURS, sin embargo con este bloque únicamente es posible realizar la mezcla de dos colores con un rango de 0 a 1, donde 0 representa el total del segundo color, y 1 el total del primer color, por lo que la escala que se tiene si bien no es mucha, tampoco está limitada, es importante resaltar que los colores resultantes son representados en hexadecimal: #RRGGBB, por lo que si alguno de los colores se imprimiera aparecería ese número hexadecimal (Google, 2015).

Ilustración 11 Bloques de colores tomada de (Google, 2015)

Variables

Es el nombre que se le da a un valor que puede cambiar, estas pueden ser creadas de múltiples maneras, cada bloque COUNT WITH y FOR EACH, utilizan una variable y definen su valor, esos valores pueden ser utilizados únicamente dentro de esos bloques, también pueden ser definidas por el usuario dentro de las funciones y son utilizadas únicamente dentro de estos procedimientos, son mejor conocidos como argumentos o parámetros (Google, 2015).

El usuario puede crear variables globales en cualquier momento utilizando el bloque SET, donde puede ponerle un nombre cualquiera o dejarle con el valor por defecto de ITEM, el menú dropdown permite bien, dejar el nombre definido por el programa, renombrar la variable con lo que cambiaría el nombre de todas las variables que tenían ese nombre, o bien crear una nueva variable sin cambiar ni alterar ninguna otra variable (Google, 2015). Los bloques para las variables son, SET con lo que asigna el valor a una variable o creándola si no existe, el bloque GET, provee el valor almacenado en una variable sin cambiarlo, en la ilustración 13 se pueden observar (Google, 2015).

(34)

27

Procedimientos/Funciones

Los bloques de funciones (ilustración 14) tienen la particularidad de poder ser llamados en cualquier momento del programa y ejecutar otras sentencias de código independientemente del código principal, ayudando a generar mejores resultados.

Dichos bloques contienen código dentro de una estructura determinada; existen dos tipos en particular, los primeros no regresan ningún valor, sino que en su propia ejecución realizan algún cambio en el código global y los segundos devuelven un valor, el primero se llama

TO DO SOMETHING , y el segundo es el TO DO SOMETHING, RETURN, en el primer

caso como se mencionó anteriormente el método o función no regresa ningún valor en particular, en cambio con el segundo, hay un apartado en el cual se especifica que es posible regresar alguna información en forma de dato o variable (Google, 2015).

En ambos casos es posible especificar que exista pase de parámetros, esto haciendo modificación en su engrane superior, e igualmente se puede especificar una descripción para dicho método.

Para mandar llamar y ejecutar una función hay dos maneras, el bloque IF RETURN, en el cual al igual que en el condicional IF, realizará una acción en consecuencia al valor que haya retornado la función, de igual manera se puede únicamente ejecutar el bloque DO

SOMETHING para con el mandar llamar dicha función (Google, 2015).

(35)

28

Alternativas de solución

Hoy en día los proyectos que se enfocan en enseñar a los niños los conceptos básicos de programación son múltiples y variados, sin embargo, en su mayoría utilizan editores de texto o frameworks de programación visual basados en sistemas drag & drop, con lo que se le facilita al niño el uso de dichas herramientas, puesto que se convierten en una especie de ejercicios o retos que van resolviendo a manera de rompecabezas. Con el uso constante y el aumento gradual de la dificultad, así como la inclusión progresiva de diferentes y cada vez más avanzados conceptos de programación, el niño comienza a aprender las bases de la programación en general de manera autónoma y transparente para él.

Como se mencionó anteriormente, existen muchos proyectos y alternativas que introducen estos conceptos a los niños, a continuación, se enlistan y describen algunos de ellos que son muy parecidos a la plataforma que se desarrolló.

Scratch

Scratch es un lenguaje de programación visual que se encuentra orientado principalmente a

la creación de juegos que facilita crear historias interactivas, juegos y animaciones y compartir sus creaciones con otras personas en la Web. Fue creado por el Instituto Tecnológico de Massachusetts (MIT), destinado principalmente a niños y jóvenes permitiendo explorar y experimentar (Rios & Pizzolanti, s.f.).

La plataforma se basa en el espiral del pensamiento creativo permitiendo a los niños crear sus propios juegos, historias interactivas, animaciones, música y arte y de esta forma desarrollar el pensamiento creativo a partir del juego; por lo cual se consideró el "estilo jardín infantil" que es caracterizada por una espiral de imaginar, crear, jugar, compartir, reflexionar y de nuevo imaginar (ilustración 15). Esta espiral ayuda a desarrollar el pensamiento creativo para cualquier edad, que es una de las habilidades críticas para nuestra sociedad (E.scenarios, 2011).

(36)

29 Esta aplicación informática destinada principalmente a los niños y permite explorar y experimentar con los conceptos de programación de ordenadores mediante el uso de una sencilla interfaz gráfica (ilustración 16); ofreciendo posibilidades educativas que hace que la programación sea más atractiva y accesible para todo aquel que se enfrente por primera vez a aprender a programar.

Ilustración 15 Entorno de desarrollo Scratch tomada de (Makeblock, 2015)

Es usado por estudiantes, escuelas, profesores y padres para crear animaciones de forma sencilla, también puede usarse para un gran número de propósitos educativos, construccionistas y de entretenimiento, como proyectos de ciencias o matemáticas, incluyendo simulación y visualización de experimentos.

(37)

30

App inventor

Es una plataforma de Google Labs para crear aplicaciones de software para el sistema operativo Android de forma visual haciendo uso de herramientas básicas donde se puede ir enlazando una serie de bloques para crear la aplicación (MIT, 2016).

Con esta plataforma se pueden crear diferentes aplicaciones simples, pero cabe mencionar que estas están limitadas por su simplicidad de esta, pese a eso permiten cubrir un gran número de necesidades básicas en un dispositivo móvil.

App Inventor fue lanzada en el 2010 (Google, 2010), dirigida principalmente a personas que no se encuentran familiarizados con términos de programación.

Esta aplicación ha sido una de las grandes innovaciones de los últimos años por parte de Google debido a que ha permitido a cualquier persona realizar sus propias aplicaciones con diferentes objetivos, ya sea para satisfacción y comodidad personal o incluso para llenar sus bolsillos y monetizarlas (App moviles, 2014).

La interfaz que maneja es muy sencilla de utilizar y la programación que presentan basada en bloques en la siguiente imagen (ilustración 17) se muestra parte de la interfaz que maneja App Inventor.

Referencias

Documento similar

Esto viene a corroborar el hecho de que perviva aún hoy en el leonés occidental este diptongo, apesardel gran empuje sufrido porparte de /ue/ que empezó a desplazar a /uo/ a

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

[r]

SVP, EXECUTIVE CREATIVE DIRECTOR JACK MORTON

Social Media, Email Marketing, Workflows, Smart CTA’s, Video Marketing. Blog, Social Media, SEO, SEM, Mobile Marketing,

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el