CARDENASLUIS-CARDONAJULIAN (1) - Removed

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 116

DESARROLLO DE PLUGIN PARA MOODLE QUE AÑADA

CARACTERISTICAS Y FUNCIONALIDADES RELACIONADAS CON


PRACTICAS DE LABORATORIO (PROGRAM LAB)

JULIAN ANDRES CARDONA SANCHEZ


LUIS GERMAN CARDENAS
GUERRERO

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE


CALDAS FACULTAD TECNOLÓGICA
TECNOLOGÍA EN SISTEMATIZACIÓN DE
DATOS BOGOTÁ D.C.
2022
1
DESARROLLO DE PLUGIN PARA MOODLE QUE AÑADA
CARACTERISTICAS Y FUNCIONALIDADES RELACIONADAS CON
PRACTICAS DE LABORATORIO (PROGRAM LAB)

JULIAN ANDRES CARDONA SANCHEZ


LUIS GERMAN CARDENAS
GUERRERO

PROYECTO DE GRADO

MSc. ROCIO RODRIGUEZ GUERRERO


TUTORA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE


CALDAS FACULTAD TECNOLÓGICA
TECNOLOGÍA EN SISTEMATIZACIÓN DE
DATOS BOGOTÁ D.C.
2022
2
Tabla de contenido
1. INTRODUCCIÓN................................................................................................................................ 9
2. PLANTEAMIENTO DEL PROBLEMA................................................................................................... 11
2.1. DESCRIPCIÓN DEL PROBLEMA..............................................................................................................................................11
2.2. FORMULACIÓN DEL PROBLEMA...........................................................................................................................................13
3. ALCANCES Y LIMITACIONES............................................................................................................ 13
3.1. ALCANCES..............................................................................................................................................................................14
3.2. DELIMITACIONES...................................................................................................................................................................14
4. OBJETIVOS..................................................................................................................................... 15
4.1. OBJETIVO GENERAL..............................................................................................................................................................15
4.2. OBJETIVOS ESPECÍFICOS.......................................................................................................................................................15
5. JUSTIFICACIÓN............................................................................................................................... 16
6. MARCO DE REFERENCIA.................................................................................................................. 18
6.1. ESTADO DEL ARTE.................................................................................................................................................................18
6.2. MARCO TEÓRICO..................................................................................................................................................................21
6.2.1. Programación...........................................................................................................................21
6.2.2. Moodle.....................................................................................................................................28
6.2.3. Plugin.......................................................................................................................................30
6.2.4. Application Programming Interfaces (API)...............................................................................34
7. FACTIBILIDAD................................................................................................................................. 35
7.1. FACTIBILIDAD TÉCNICA.........................................................................................................................................................36
7.2. FACTIBILIDAD OPERATIVA.....................................................................................................................................................38
7.3. FACTIBILIDAD LEGAL.............................................................................................................................................................38
7.4. FACTIBILIDAD ECONÓMICA...................................................................................................................................................39
7.4.1. Presupuesto y financiación.......................................................................................................39
8. METODOLOGIA.............................................................................................................................. 42
8.1. DEFINICIÓN DE ROLES...........................................................................................................................................................44
8.1.1. Product Owner.........................................................................................................................44
8.1.2. Scrum Master...........................................................................................................................45
8.1.3. Scrum Team.............................................................................................................................45
8.2. BACKLOGS O LISTAS DE REQUERIMIENTOS..........................................................................................................................46
8.2.1. Planeación y estimación...........................................................................................................46
8.2.2. Crear el sprint backlog o iteración de tareas............................................................................47
8.2.3. Implementación.......................................................................................................................47
8.2.4. Creación de entregables...........................................................................................................48
8.3. REFINAMIENTO DEL BACKLOG PRIORIZADO DEL PRODUCTO..............................................................................................48
8.4. REVISIÓN Y RETROSPECTIVA.................................................................................................................................................49
8.5. LANZAMIENTO......................................................................................................................................................................49
9. CRONOGRAMA DE ACTIVIDADES.................................................................................................... 50

3
10. IMPLEMENTACIÓN DEL PROYECTO................................................................................................. 51
10.1. IDENTIFICACIÓN DE ROLES....................................................................................................................................................51
10.2. LISTA DE ACTIVIDADES POR ROL...........................................................................................................................................51
10.3. SPRINTS.................................................................................................................................................................................52
10.4. REQUERIMIENTOS.................................................................................................................................................................52
10.5. DESARROLLO.........................................................................................................................................................................53
10.5.1. Primer Sprint........................................................................................................................54
10.5.2. Segundo Sprint....................................................................................................................68
10.5.3. Tercer Sprint........................................................................................................................77
10.5.4. Cuarto Sprint.......................................................................................................................83
10.5.5. Quinto Sprint.......................................................................................................................89
11. RESULTADOS.................................................................................................................................. 93
11.1. ANÁLISIS DE RESULTADOS....................................................................................................................................................93
12. CONCLUSIONES.............................................................................................................................. 98
13. REFERENCIAS................................................................................................................................ 100
ANEXOS................................................................................................................................................. 103

4
Tabla de figuras
Gráfica 1 – Estudiantes que cursaron materias de programación en los periodos 2020-1 al 2021-1. 12
Gráfica 2 – Estudiantes de la materia de “Introducción a Algoritmos” en los periodos 2020-1 al 2021-1. 12
Gráfica 3 – Estudiantes que cursaron materias de programación durante los semestres 2018-3 y 2019-3. _ 16
Gráfica 4 – Análisis #1: Satisfacción sobre el OVA presentado 94
Gráfica 5 – Análisis #2: Utilidad del editor de código y consola de ejecución en Python. 95
Gráfica 6 – Análisis #3: Facilidad para generar informes dentro del Plugin [ProgramLab] 96
Gráfica 7 – Análisis #4: Satisfacción del plugin y recomendación del Plugin [ProgramLab] 97

Tabla 1 – Lenguajes de programación soportados por el VPL de la Universidad de Extremadura. 20


Tabla 2 – Tipos de plugins disponibles para Moodle. 32
Tabla 3 – Herramientas necesarias para el desarrollo del plugin para Moodle. 36
Tabla 4 – Recurso físico necesario para el desarrollo del plugin para Moodle. 37
Tabla 5 – Recurso humano necesario para el desarrollo del plugin para Moodle. 37
Tabla 6 – Costos del recurso humano estimado para el desarrollo del plugin para Moodle. 40
Tabla 7 – Costos del recurso físico estimado para el desarrollo del plugin para Moodle. 40
Tabla 8 – Costos del recurso lógico estimado para el desarrollo del plugin para Moodle. 41
Tabla 9 – Costo total del proyecto de desarrollo. 41
Tabla 10 – Definición de roles para el desarrollo del plugin. 51
Tabla 11 – Definición de actividades según el rol definido. 51
Tabla 12 – Sprints totales del desarrollo del plugin. 52
Tabla 13 – Requerimiento de navegación del plugin. 52
Tabla 14 – Requerimiento de disponibilidad del plugin. 53
Tabla 15 – Definición del Sprint #1: Configuración de entorno 54
Tabla 16 – Versiones de Moodle. 60
Tabla 17 – Versiones de Moodle 4.0. 61
Tabla 18 – Definición del Sprint #2: Modulo: Interacción y experimentación virtual 68
Tabla 19 - Definición del Sprint #2: Modulo de Producción 77
Tabla 20 – Definición del Sprint #4: Módulo de Material de Aprendizaje 83
Tabla 21 – Definición del Sprint #5: Creación de laboratorios 89

Ilustración 1 – Proceso de un lenguaje de programación para solucionar un problema. 23


Ilustración 2 – Proceso de ejecución de un lenguaje compilado. 26
Ilustración 3 – Proceso de ejecución de un lenguaje interpretado. 27
Ilustración 4 – Esquema de funcionamiento básico de una API. 35
Ilustración 5 – Cronograma de actividades del desarrollo del plugin para Moodle. 50
Ilustración 6 – Sprint #1: Configuración de Entorno – Instalación de Moodle. 57
Ilustración 7 – Sprint #1: Configuración de Entorno – Configuración de modo desarrollador. 58
Ilustración 8 – Sprint #1: Configuración de Entorno – Configuración del IDE. 59
Ilustración 9 – Activación de los mensajes de Debugging de Moodle. 62
Ilustración 10 – Activación del diseñador de temas de Moodle. 62
Ilustración 11 – Desactivar el chaché de JavaScript, las plantillas y las cadenas de lenguaje. 63
Ilustración 12 – Configuración del modo desarrollador por medio del archivo config.php. 63
Ilustración 13 – Plugin Code-Checker. 64
Ilustración 14 – Plugin Moodle PHPdoc Check. 64

5
Ilustración 15 – Plugin skeleton generator. 64
Ilustración 16 – Extensiones de Visual Studio Code utilizadas para el desarrollo. 65
Ilustración 17 – Prueba Sprint #1: Moodle instalado 66
Ilustración 18 – Prueba Sprint #1: Creación de curso y curso creado 67
Ilustración 19 – Sprint #2: Modulo de Interacción y experimentación virtual 70
Ilustración 20 – Vista del Plugin Skeleton Generator 71
Ilustración 21 – Configuraciones del Plugin Skeleton Generator 72
Ilustración 22 – Plugin [ProgramLab] instalado como actividad o recurso 73
Ilustración 23 – Prueba Sprint #2: Librerías gráficas 76
Ilustración 24 – Prueba Sprint #2: Ejecución por consola 76
Ilustración 25 – Sprint #3: Módulo de producción 79
Ilustración 26 – Prueba Sprint #3: Funcionamiento del editor de texto 81
Ilustración 27 – Prueba Sprint #3: Descarga en PDF del informe 82
Ilustración 28 – Sprint #4: Módulo de Material de Aprendizaje 85
Ilustración 29 – Vista general del OVA de Introducción a Algoritmos 86
Ilustración 30 – Prueba Sprint #4: Información del OVA dentro del Plugin 87
Ilustración 31 – OVA vista desde el plugin [ProgramLab] 88
Ilustración 32 – Sprint #5: Creación de laboratorios virtuales 91
Ilustración 33 – Prueba Sprint #5: Visualización de los laboratorios al interior del OVA 92

Código 1 – Ejemplo de código en lenguaje ensamblador x86-64.....................................................................25


Código 2 – Función init del evento course_module_viewed.php......................................................................74
Código 3 – Output de la vista del editor en php...............................................................................................75
Código 4 – Creación del objeto del editor Quill................................................................................................80
Código 5 – Funciones del botón de descarga en PDF.......................................................................................80
Código 6 – Output de la vista del OVA.............................................................................................................86

6
AGRADECIMIENTOS

Queremos expresar nuestra gratitud a todas las personas que han contribuido a la
realización de este trabajo de grado. En primer lugar, a nuestros padres y amigos
por apoyarnos a lo largo de nuestra carrera con paciencia y amor, a nuestra tutora
Rocío Rodríguez por su orientación experta, su apoyo constante y su paciencia
durante todo el proceso de investigación y desarrollo.

También queremos agradecer al Profesor Noé Arcos por sus valiosas sugerencias,
comentarios y críticas constructivas que nos ayudaron a mejorar la calidad de
nuestro proyecto. Al Ingeniero Andrés por su guía y conocimiento brindado durante
el desarrollo del proyecto.

Agradecemos a la Universidad Francisco José de Caldas por brindarnos la


oportunidad de llevar a cabo este desarrollo. A los integrantes del Semillero de
Investigación en Software Libre Gehirn y del grupo de Investigación Imaginet por
todo el apoyo brindado. Y, por último, pero no menos importante, agradecemos a
todos los participantes de las pruebas, quienes dedicaron su tiempo y esfuerzo
para participar en el proceso de resultados haciendo posible la recolección de
datos necesarios para el análisis de este proyecto.

Gracias a todos por su apoyo, guía y colaboración en la realización de este trabajo


de grado. Sin su ayuda, este logro no habría sido posible.

7
RESUMEN

Este documento presenta el software complementario que facilita la reproducción y


calificación de prácticas orientadas a la programación. El objetivo es mejorar la
eficiencia en la asignación de estas tareas, ahorrando tiempo y brindando una
mejor atención a docentes y estudiantes, gracias a la capacidad de editar código,
crear nuevos problemas, experimentar y proporcionar comentarios detallados
sobre el trabajo de los alumnos, los profesores pueden observar a profundidad el
trabajo de sus alumnos. También dispone de un apartado de ayuda para que el
alumno pueda avanzar por su cuenta y fomentar el estudio autónomo reduciendo
la relación de dependencia entre docente y estudiante. El resultado es un software
útil, preciso y amigable que fomenta la proactividad en la comunidad estudiantil.

ABSTRACT

This document presents the complementary software that facilitates the


reproduction and qualification of programming-oriented practices. The objective is
to improve the efficiency in the assignment of these tasks, saving time and
providing better attention to teachers and students, thanks to the ability to edit
code, create new problems, experiment and provide detailed feedback on the work
of the students, the teachers can observe in depth the work of their students. It also
has a help section so that students can progress on their own and encourage
autonomous study, reducing the dependency relationship between teacher and
student. The result is a useful, accurate and friendly software that encourages
proactivity in the student community.

8
1. INTRODUCCIÓN
La tecnología es un campo en constante evolución, siempre hay nuevos avances y
descubrimientos que mejoran la industria, esto puede hacer que sea difícil
mantenerse al día con todos los cambios e innovaciones; la programación es un
ejemplo de esta dificultad. Con tanta información y herramientas nuevas
disponibles, puede ser desafiante asegurar que se están usando las mejores
prácticas y tecnologías disponibles, por lo tanto, es indispensable contar con bases
sólidas de aprendizaje que permitan adaptarse fácilmente a las novedades.

En la era digital actual la programación es una habilidad clave, sin embargo,


no basta con tener conocimientos teóricos sobre cómo funcionan los lenguajes de
programación y sus diferentes sintaxis, es necesario también tener practica y
experiencia en su aplicación para poder resolver problemas y crear soluciones
efectivas. Como señala (Raymond, 1991), la teoría es bastante útil para enseñar
los conceptos más fundamentales y tener una comprensión necesaria de los
fenómenos, pero la práctica es necesaria para adquirir habilidades que sean útiles
en un entorno laboral.

La programación es una habilidad compleja, se requiere de tiempo y


esfuerzo para dominarla, así lo afirma (Sonmez, 2014), para aprender a programar
se necesita de disciplina y responsabilidad, es posible que se tenga que pasar
horas, días o incluso semanas enfrentando diferentes obstáculos presentes en
este campo, los cuales deben ser superados antes de ver un progreso
significativo. Esto genera que los estudiantes de programas enfocados en áreas
tecnológicas tengan dificultades debido a que la programación se basa en una
lógica abstracta para la cual no todos están preparados. Según (Fuentes &
Medina, 2017):

La programación es parte esencial e integral de cualquier programa de


ingeniería. Los estudiantes de ingeniería en sus últimos semestres tienen
que enfrentar tareas de solución de problemas empleando esta
competencia. El contar con buenas habilidades de desarrollo les ayudará a
dar solución a estos problemas fácilmente. (p. 01)
9
La comunidad estudiantil tiene que invertir una gran cantidad de tiempo en
el aprendizaje teórico-práctico ya que son la fuente principal de su aprendizaje.
Según el estudio realizado por (Mayer & Moreno, 2003), las actividades de
aprendizaje que involucran la resolución de problemas y la realización de tareas
prácticas son más efectivas para promover el aprendizaje profundo que las
actividades puramente teóricas (p. 45). Los estudiantes y los maestros se ven
limitados debido a la metodología que se tiene actualmente entorno a las
actividades prácticas, puesto que la gran cantidad de alumnos por curso y el
limitado tiempo que posee el docente para realizar las correcciones afectan la
calidad de estas. Dentro de los espacios académicos no hay una completa
atención al detalle para cada alumno individual y estos son calificados en términos
generales debido a la falta de tiempo, según la investigación de (William &
Thompson , 2006), la falta de tiempo para realizar correcciones adecuadas y
proporcionar retroalimentación individualizada a los estudiantes puede afectar
negativamente la calidad de las prácticas, aparte de limitar el aprendizaje y la
mejora de los mismos.

La educación ha evolucionado a lo largo de la historia y ha establecido un


modelo de enseñanza que a pesar de los años sigue siendo utilizado en la mayoría
de instituciones educativas alrededor del mundo. Sin embargo, es posible que este
modelo ya no sea el más adecuado o efectivo para atender las necesidades de los
estudiantes y el mundo actual. Aunque cambiar radicalmente la forma de
educación podría ser una solución, en la práctica puede resultar imposible o
incluso irreal debido a que la educación está enraizada en muchos aspectos de la
sociedad y cambiarla de manera drástica podría tener consecuencias
impredecibles. En lugar de tratar de implementar grandes cambios, una opción
más viable podría ser generar pequeños cambios, como el desarrollo de nuevas
herramientas y estrategias educativas, como aplicaciones que puedan ser útiles
tanto para los estudiantes como para los profesores. Al hacerlo, es posible mejorar
la educación de manera gradual y lograr un avance en el panorama educativo en
general.

10
2. PLANTEAMIENTO DEL PROBLEMA
2.1. Descripción del problema.
Dentro del ámbito universitario los problemas con el aprendizaje en general son
amplios, para tener una mejor compresión de los mismos se deben tomar
individualmente y realizar un análisis a profundidad. La raíz del problema con
respecto a la apropiación de conocimientos acerca de la programación son los
métodos de aprendizaje que se aplican actualmente, pues la programación
involucra conceptos dinámicos que muchas veces se instruyen mediante medios
tradicionales como: presentaciones, explicaciones verbales, diagramas, dibujos en
pizarra, textos, etc. Para algunos estudiantes esto es un problema, ya que no
logran comprender la dinámica de los procesos a través de este tipo de materiales.
(Gomes & Gomes, 2007)

Los estudiantes de primeros semestres tienen que enfrentarse a conceptos


que generalmente no han tocado, (Fuentes & Medina, 2017) afirma que “aprender
a programar consiste en plasmar, mediante un lenguaje de programación, la forma
de solucionar un problema. Cada problema se soluciona de manera distinta y cada
programador lo resuelve de una forma diferente.” (p. 01), de esta forma se
concluye que esta falta de comprensión de los nuevos conocimientos por los
métodos tradicionales provoca que el estudiante tenga un bajo desempeño y un
menor interés en aprender, el cual puede ser causal de pérdida o cancelación.

En las [Gráficas 1 y 2] se aprecia que, en las materias de introducción a


algoritmos, estructura de datos y programación orientada a objetos del proyecto
curricular de tecnología en sistematización de datos de la Universidad Distrital
Francisco José de Caldas, hay un alto porcentaje de estudiantes que pierden o
cancelan. Además, durante los semestres de 2020-1 a 2021-1, solo el 45.6% de
los estudiantes aprobaron la materia de Introducción a algoritmos, que es
considerada la más importante en cuanto a programación. Esto indica un problema
significativo en cuanto a la retención y el rendimiento de los estudiantes en estas
materias.

11
Gráfica 1 – Estudiantes que cursaron materias de programación en los
periodos 2020-1 al 2021-1.

Nota. Autoría propia. Estadística que muestra la cantidad de estudiantes que inscribieron las materias de
programación mostradas, separándolos por estado de: Aprobado, reprobado y canceló.

Gráfica 2 – Estudiantes de la materia de “Introducción a Algoritmos” en los periodos


2020-1 al 2021-1.

Nota. Autoría propia. Estadística que muestra en porcentaje la cantidad de estudiantes que inscribieron la
materia de Introducción a Algoritmos, separándolos por estado de: Aprobado, reprobado y canceló.

12
2.2. Formulación del problema.
Con los datos suministrados surge la siguiente pregunta: ¿Desarrollar un software
complementario para Moodle que añada a la plataforma características
relacionadas con prácticas de laboratorio de introducción a algoritmos permitirá
fortalecer conocimientos en este tema?

3. ALCANCES Y LIMITACIONES
Es importante tener en cuenta los límites de las herramientas que se utilizan a la
hora de resolver problemas para que puedan ser efectivas. Al tratar de abordar un
problema complejo como la educación, hay muchas variables que deben
considerarse para evitar tomar decisiones basadas en suposiciones o sin una
comprensión adecuada del problema en cuestión. Un primer paso es definir quién
es el público objetivo, ya que esto nos ayudará a identificar la mejor manera de
interactuar con ellos a través del software. Por ejemplo, el proceso para asistir a un
adolescente puede ser diferente al proceso para asistir a un adulto debido a
diferencias en la forma en que procesan la información y en sus necesidades
educativas (Gaete, 2015).

Un software que facilite el trabajo de los profesores a la hora de administrar y


calificar los trabajos de los estudiantes puede ser útil para liberar tiempo y permitir
que los docentes se centren más en cada estudiante individualmente. Sin
embargo, es importante tener en cuenta que este tipo de herramientas no son una
solución definitiva o un reemplazo para la labor de calificación por parte de los
profesores. Se debe considerar como una forma de asistencia para que los
docentes realicen su trabajo de manera más eficiente. Además, es importante
recordar que el proceso de revisión y evaluación es parte crucial del proceso
educativo y no se debe automatizar completamente (Hamodi, Lopez Pastor, &
Lopez Pastor, 2015). En el área de la programación en particular, hay muchas
formas diferentes de abordar un problema y no es común que haya una única
solución correcta. Por lo tanto, es esencial que los profesores tengan una
oportunidad de revisar y evaluar el trabajo de los estudiantes de manera
personalizada.
13
3.1. Alcances.
El software está destinado a ser utilizado por todos los estudiantes universitarios
que se encuentren en los primeros semestres de carreras relacionadas con la
tecnología o que tengan materias básicas de programación en la Universidad
Distrital Francisco José de Caldas. Los profesores también pueden utilizar el
software, pero en lugar de usarlo como una herramienta de aprendizaje, lo
utilizarán para gestionar sus cursos y mejorar su eficiencia ahorrando tiempo. Es
posible que los profesores encuentren útil utilizar el software para organizar y
evaluar el trabajo de los estudiantes, y para comunicarse con ellos de manera más
efectiva. Además, el software puede proporcionar a los profesores una visión más
clara del progreso y el rendimiento de los estudiantes a lo largo del tiempo.

3.2. Delimitaciones.
El desarrollo de la aplicación se ve limitado por los siguientes aspectos:

 El software cubre únicamente las bases de la programación básica llegando


al tema de funciones. Esto significa que no abarca temas más avanzados o
específicos de ciertos lenguajes de programación.
 El software está diseñado principalmente para dar la bienvenida a los
nuevos estudiantes y fomentar su buen desempeño en las materias de
primer semestre. Esto significa que se enfoca en proporcionar una
experiencia de aprendizaje acogedora y agradable para los estudiantes
principiantes. Esto limita la utilidad del software para estudiantes más
avanzados o para aquellos que buscan aprender sobre temas más
específicos.

Aunque el software se centra en las bases de la programación básica, no se


descarta la posibilidad de agregar temas más avanzados tales como la
Programación Orientada a Objetos, como una opción para mejorar y ampliar los
módulos actuales en el futuro. Esto puede proporcionar a los estudiantes una
experiencia de aprendizaje más completa y desafiante, y puede ayudar a
satisfacer las necesidades de aquellos que buscan aprender sobre temas
avanzados.
14
4. OBJETIVOS
4.1. Objetivo general.
Desarrollar un software complementario (plugin) para la plataforma de gestión de
aprendizaje Moodle que añada características relacionadas con prácticas de
laboratorio de introducción a algoritmos orientadas a la resolución de problemas
de lógica de programación.

4.2. Objetivos específicos.


• Realizar un análisis de requerimientos que permita establecer las prácticas de
laboratorio a desarrollar en el plugin.
• Desarrollar los módulos de: Información, interacción, producción y exhibición,
de acuerdo a la caracterización de laboratorios virtuales.
• Realizar pruebas de configuración para instalar el plugin en Moodle.

15
5. JUSTIFICACIÓN
Los datos de los periodos académicos 2018-3 y 2019-3 [Gráfica 3] muestran una
tasa alta de perdida y cancelación en las materias de Introducción a algoritmos,
estructura de datos y programación orientada a objetos, con un 52% de estudiante
afectados. Esto es preocupante, ya que concuerda con lo observado en el periodo
2020-1 a 2021-1 [Gráfica 1] y destaca el alto porcentaje de fracasos en las
materias de primer y segundo semestre, dichas materias son fundamentales para
la formación en informática y su dominio es esencial para el éxito en las materias
de semestres posteriores.

Gráfica 3 – Estudiantes que cursaron materias de programación durante los


semestres 2018-3 y 2019-3.

Nota. Autoría propia. Estadística que muestra la cantidad de estudiantes que inscribieron las materias de
programación mostradas, separándolos por estado de: Aprobado, reprobado y canceló.

De acuerdo con el informe de (Universidad de los Andes, 2014), una tasa alta de
perdidas aumenta el riesgo promedio de deserción. Esto es preocupante, ya que la
deserción tiene consecuencias a largo plazo tanto para el individuo como para la
sociedad en general. Aunque las instituciones han implementado medidas para
brindar apoyo a los estudiantes, muchos de ellos todavía se sienten insatisfechos
con la metodología que se lleva a cabo para enseñarles.

16
En la actualidad, es esencial que los estudiantes cuenten con un ambiente
agradable y de apoyo para fomentar su aprendizaje en materias de programación,
ya que esta disciplina es desafiante y la dificultad que conlleva puede generar una
tasa alta de repitencia y deserción entre los estudiantes. Esto puede llevar a los
estudiantes a sentirse frustrados y a perder la motivación para seguir aprendiendo.
Según (Fuentes & Medina, 2017) “Todo ingeniero debe programar. El mercado
laboral exige que todo ingeniero tenga la competencia de crear aplicaciones, tal
vez no al grado de un ingeniero de software, pero sí que pueda realizar rutinas que
le apoyen en su trabajo.” (p. 78)

Los conocimientos y habilidades fundamentales en programación se


adquieren en gran medida durante los primeros semestres de estudio,
especialmente en las materias de introducción a algoritmos, estructura de datos y
programación orientada a objetos. El informe de los periodos académicos 2018-3 y
2019-3 [Gráfica 3] muestran que la materia de Introducción a algoritmos es la que
tiene el mayor número de reprobaciones, mientras que la programación orientada
a objetos es la que tiene el mayor número de cancelaciones y la materia de
estructura de datos tiene un número similar a las dos anteriores. (Fuentes &
Medina, 2017) afirma que:

La competencia del desarrollo de software se adquiere en los primeros


semestres de las ingenierías; en ingeniería electromecánica en el primer
semestre en la materia Introducción a la Programación; mientras que en
ingeniería en sistemas en primer semestre en la materia Fundamentos de
Programación y en Segundo Semestre en la materia Programación
Orientada a Objetos.

Por lo tanto, es importante que las instituciones educativas aborden este problema
de manera proactiva y encuentren soluciones para minimizar la perdida,
cancelación y la deserción, ayudando a mantener a los estudiantes motivados y
comprometidos con sus estudios.

17
6. MARCO DE REFERENCIA
Los laboratorios virtuales son entornos de aprendizaje en línea que permiten a los
estudiantes acceder a equipos o aplicaciones especializadas a través de Internet.
Estos laboratorios son especialmente útiles para las materias que involucran la
programación y el uso de software especializado, ya que permiten a los
estudiantes practicar y desarrollar sus habilidades sin tener que estar físicamente
presentes en un laboratorio de informática. Según el estudio de (Aggarwal &
Singh, 2011), la creación de laboratorios virtuales ha revolucionado la forma en
que se enseña y se aprende informática. Estos laboratorios proporcionan un
entorno de aprendizaje seguro y controlado donde los estudiantes pueden
experimentar y aprender a su propio ritmo sin tener que preocuparse por el costo
de hardware y software.

6.1. Estado del arte.


El E-Learning o aprendizaje en línea, ha experimentado un crecimiento
exponencial durante la crisis sanitaria causada por la pandemia de COVID-19.
Ante esta situación, se ha vuelto necesario explorar nuevos métodos de
enseñanza que permitan a los estudiantes aprender de manera efectiva a través
de Internet (Marquina, Alvarado , & Benitez, 2021). Uno de estos métodos son los
laboratorios virtuales de programación (VPL), que permiten a los estudiantes
escribir, probar y depurar código en línea, sin necesidad de instalar ningún
software local.

Los laboratorios virtuales de programación (VPL) son una herramienta muy


útil para los estudiantes de programación, ya que les permiten practicar y mejorar
sus habilidades de manera eficiente. Además, muchos VPLs también ofrecen una
serie de recursos y tutoriales en línea que les ayudan a comprender mejor los
conceptos básicos de la programación y a desarrollar sus habilidades de manera
más efectiva. En los últimos años, se han desarrollado muchas aplicaciones y
plataformas que ofrecen características similares a los VPL. Algunas de las
opciones más populares son repl.it, Glitch, CodePen y AWS Cloud9, sin embargo,
se ven limitadas por el hecho de que no forman parte de una integración mayor

18
con plataformas de aprendizaje como por ejemplo Moodle.

19
Esta falta de integración no es el único problema, pues muchos de ellos
tienen problemas relacionados con la falta de una tutoría adecuada. Esto puede
ser frustrante para los estudiantes que dependen de estos recursos para aprender
y puede dificultar su capacidad para obtener una comprensión completa del
material. Según (Alvarez Martinez, 2012), esta es una de las principales
preocupaciones con los laboratorios virtuales:

En muchas ocasiones los grupos de estudiantes son muy grandes y


sobrepasan la cantidad de equipos disponibles, el acompañamiento del
profesor no se puede realizar con la frecuencia que necesita el estudiante,
el seguimiento realizado por el profesor en la práctica en muchas ocasiones
no alcanza la cobertura total de los estudiantes y no le permite crear una
visión completa de la evolución en el aprendizaje de cada estudiante, el
proceso de evaluación de las prácticas es muy lento y pasa mucho tiempo
para que el estudiante sepa si su desarrollo es correcto. (p. 08)

La Universidad de Extremadura es considerada una de los mayores referentes en


cuanto a laboratorios virtuales de programación. Esta universidad cuenta con una
gran cantidad de herramientas y plugins aplicables para Moodle, su plataforma de
aprendizaje en línea, que ofrecen a sus estudiantes una amplia gama de opciones
para practicar y mejorar sus habilidades de programación. En la [Tabla 1] se
encuentra una amplia lista de lenguajes de programación, como C, C++, Python,
Java y muchos otros que son admitidos por los plugins de la Universidad de
Extremadura, junto con las extensiones necesarias y el compilador o interprete que
utilizan. Este conjunto permite a los estudiantes realizar pruebas y ejercicios de
programación de manera sencilla desde cualquier lugar y en cualquier momento.

20
Tabla 1 – Lenguajes de programación soportados por el VPL de la Universidad de
Extremadura.

Nota. Universidad de Extremadura. Recuperado de: https://campusvirtual.unex.es/docs/index.php?


title=VPL_(Virtual_Programming_Lab).

Los referentes actuales de laboratorios virtuales de programación, como el VPL


disponible para Moodle, tienen ciertas limitaciones con respecto a la modalidad en
la que se plantean. Desde un enfoque pedagógico, un laboratorio es un ambiente
controlado experimental en el que los estudiantes tienen la oportunidad de
experimentar, probar y equivocarse mientras aprenden (Manylizu, 2022). Esto les
permite adquirir habilidades y destrezas de manera más efectiva, ya que pueden
practicar y mejorar sus habilidades de manera autodirigida. Sin embargo, algunos
VPLs solo proporcionan corrección de código, lo que limita la flexibilidad y la
libertad de los estudiantes para experimentar y aprender por sí mismos.

21
Durante la exploración del plugin de laboratorio virtual de programación
(VPL), se pudo observar que el control del maestro sobre la actividad es amplio
debido a las opciones de casos de prueba, opciones de ejecución y ficheros
requeridos disponibles. Esto significa que el maestro tiene la capacidad de
establecer un conjunto requisitos que deben cumplirse para que el código sea
considerado correcto. Además, solo se admiten respuestas correctas previamente
analizadas, lo que convierte el VPL en un calificador automático en lugar de un
verdadero laboratorio experimental.

La esencia de un laboratorio virtual es proporcionar a los estudiantes un


ambiente de aprendizaje en el que puedan desarrollar sus habilidades de manera
óptima e integra, mezclando el conocimiento empírico y teórico (Yager, Linn, &
Bell, 2016). Sin embargo, algunos laboratorios virtuales carecen de este
componente pedagógico y en su lugar, se enfocan más en la corrección
automática del código. Por lo tanto, es importante que los laboratorios virtuales
proporcionen a los estudiantes la oportunidad de experimentar y aprender por sí
mismos, en lugar de simplemente corregir su código.

6.2. Marco teórico.


6.2.1. Programación.
La programación informática es el proceso a través del cual se crean programas
computacionales para cumplir con una tarea especifica. Esto se hace siguiendo un
conjunto de normas, instrucciones y expresiones que se parecen a una lengua
natural acotada. Este proceso se realiza mediante el uso de algoritmos, que son
reglas o instrucciones que deben seguirse para resolver un problema. Estos
algoritmos son esenciales para la programación, ya que le indican a la
computadora cómo resolver un problema de manera eficiente y efectiva, esta es
una habilidad esencial en el mundo moderno, ya que es la base de la mayoría de
las aplicaciones y sistemas informáticos que usamos en nuestra vida cotidiana. 1

1
NETEC. ¿Qué es programación? https://www.netec.com/que-es-programacion [Consulta: viernes, 11 de marzo de 2022]

22
Los orígenes de la programación se remontan al siglo XIX, cuando el
matemático e inventor inglés Charles Babbage con la colaboración de Ada
Lovelace diseñó una máquina analítica capaz de ejecutar operaciones aritméticas
mediante tarjetas perforadas. Lovelace es considerada la primera programadora
de la historia por haber escrito un algoritmo para calcular los números de Bernoulli
con la maquina analítica, este hecho se considera un antecedente teórico de los
ordenadores modernos (Aiello, 2016).

Los equipos modernos tienen millones de interruptores que están encendidos


(1) o apagados (0). Así se les puede dar instrucciones al ordenador a través de bits
(cadenas de 0s y 1s). Sin embargo, esto resulta demasiado complejo para los
seres humanos. Por eso se crearon los lenguajes de programación de bajo y alto
nivel, que nos permiten escribir código legible que luego será traducido a lenguaje
máquina como se ve en la [Ilustración 1]. Estos lenguajes de programación de son
más fáciles de usar y entender, pero luego deben ser traducidos a lenguaje
máquina para que la computadora pueda entenderlas. 2

Los lenguajes de bajo nivel son más cercanos al lenguaje máquina y por lo
tanto más difíciles de leer y escribir. Estos lenguajes se usan para programar
directamente el hardware o para optimizar el rendimiento del software. Algunos
ejemplos son el ensamblador, el C o el lenguaje máquina mismo. Por otro lado, los
lenguajes de alto nivel son más alejados del lenguaje máquina y por lo tanto más
fáciles de usar. Estos lenguajes se pueden clasificar según su paradigma de
programación, que es la forma en que se estructura y organiza el código. Algunos
ejemplos son Python, Java, C++, Ruby o JavaScript. Dependiendo del tipo de
problema que se quiera resolver o de las preferencias del programador, se puede
elegir un lenguaje u otro.

2
DIARLU. Los tipos de lenguajes de programación: bajo y alto nivel. https://www.diarlu.com/lenguajes-de-
programacion/ [Consulta: viernes, 11 de marzo de 2022]

23
Ilustración 1 – Proceso de un lenguaje de programación para solucionar un
problema.

Nota. Autoría propia. Esta ilustración demuestra el proceso que realiza internamente un lenguaje de
programación para solucionar un problema, teniendo el problema y la solución fuera del proceso. Se le
ingresan instrucciones humanas en el lenguaje (Visual Basic, C, C++, Java, Perl, . . .) y a continuación son
traducidas a lenguaje máquina para que la computadora puede interpretarlas.

Paradigmas de programación.

Un paradigma de programación es un enfoque o método para resolver un


problema o realizar una tarea 3. Aunque existen diferentes lenguajes de
programación, es necesario tener una estrategia en mente al implementar
una solución. Algunos de los paradigmas de programación más conocidos
son:

o Programación lógica.
o Programación orientada a objetos.
o Programación funcional.
o Programación imperativa.
o Programación declarativa.

3
IONOS. Paradigmas de programación. Paradigmas de programación: análisis de los paradigmas principales (ionos.es)
[Consulta: viernes, 11 de marzo de 2022]

24
Cada uno de estos paradigmas tiene sus propias ventajas y desventajas y
se pueden utilizar en diferentes situaciones y contextos. Es importante
conocer los diferentes paradigmas y saber cuándo utilizar cada uno para
resolver un problema de manera efectiva y eficiente.

Tipos de lenguaje.

Al momento de programar se debe tener en cuenta que hay distintos


lenguajes de programación, debido a que cada uno tiene sus propias
fortalezas, debilidades y se especializan para diferentes propósitos y
situaciones. Por ejemplo, algunos lenguajes son mejores para el desarrollo
de aplicaciones de escritorio mientras que otros son más adecuados para el
desarrollo de sitios web. Además, algunos lenguajes son más fáciles de
aprender y usar que otros, por lo que pueden ser más adecuados para
principiantes o para proyectos más simples, estos se dividen en el lenguaje
maquina y dos grandes grupos:

Lenguaje máquina.
Las computadoras no entienden el lenguaje humano, por lo que se
necesitan programas intermediarios que permitan a los usuarios
comunicarse con ellas. Estos programas convierten secuencias de
código en lenguaje máquina, que es el lenguaje que entiende
directamente la computadora (Slivnik, 2022).

El lenguaje máquina se compone de un conjunto de


instrucciones binarias (0s y 1s) que determinan las acciones que
serán realizadas por la máquina. Estas instrucciones son
interpretadas por el microprocesador de la computadora y luego
ejecutadas para llevar a cabo el proceso deseado. 4

4
UNAM. Lenguajes de programación. https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/1023/mod_resource/
content/1/contenido/index.html
[Consulta: viernes, 11 de marzo de 2022]

25
Lenguajes de bajo nivel.
Un lenguaje de programación de bajo nivel es un lenguaje que
proporciona poca o ninguna abstracción del microprocesador de una
computadora. Esto significa que el código escrito en un lenguaje de
bajo nivel está muy cerca del lenguaje máquina que entiende la
computadora, por lo que es fácil de traducir a lenguaje máquina. Los
lenguajes de bajo nivel son útiles para realizar tareas específicas y
detalladas en la computadora, pero son difíciles de usar y entender
para los humanos debido a su falta de abstracción. Un ejemplo de
lenguajes de bajo nivel es el lenguaje ensamblador (Asăvoae, 2014).

Código 1 – Ejemplo de código en lenguaje ensamblador x86-64.

Nota. (Orenga & Manonellas, 2011). Este código muestra un programa básico en el lenguaje
de bajo nivel ensamblador x86-64 donde se comenta cada línea con el fin de explicar el
funcionamiento de cada una de las mismas.

26
Lenguaje de alto nivel.
Los lenguajes de programación de alto nivel se caracterizan por su
sintaxis similar a la forma en que escriben los seres humanos, lo que
facilita la producción de código y su comprensión. Estos lenguajes se
han desarrollado con el objetivo de ser más fáciles de usar y
entender para los humanos (Li, Qi, & Yang, 2022). Dentro de esta
categoría existen dos tipos de lenguaje, los compilados y los
interpretados.

 Lenguajes compilados: Son aquellos que son traducidos al


lenguaje máquina de una sola vez, por lo que requieren volver
a compilar cada vez que se realizan modificaciones. Este
proceso consiste en traducir el código escrito en un lenguaje
de alto nivel al lenguaje máquina que entiende la
computadora. Una vez compilado, puede ser ejecutado de
manera más rápida que si fuera interpretado. Algunos
ejemplos de lenguajes compilados son C++ y Fortran. 5

Ilustración 2 – Proceso de ejecución de un lenguaje compilado.

Nota. Autoría propia. Esta ilustración demuestra el proceso que realiza


internamente un lenguaje de programación compilado a la hora de ser ejecutado.
Teniendo como punto inicial las instrucciones humanas, están pasan por el
compilador para ser traducidas a lenguaje máquina, el cual es comprendido por el
procesador y da el resultado de las instrucciones.

5 DIARLU. Los tipos de lenguajes de programación: bajo y alto nivel. https://www.diarlu.com/lenguajes-de-


programacion/ [Consulta: viernes, 11 de marzo de 2022]

26
 Lenguajes interpretados: Son traducidos instrucción por
instrucción al lenguaje máquina. Este tipo de lenguaje de alto
nivel facilita las cosas para el programador ya que el código es
convertido a máquina a medida que es ejecutado. Sin
embargo, son más lentos que los lenguajes compilados. 6

Ilustración 3 – Proceso de ejecución de un lenguaje interpretado.

Nota. Autoría propia. Esta ilustración demuestra el proceso que realiza


internamente un lenguaje de programación interpretado a la hora de ser ejecutado.
Teniendo como punto inicial las instrucciones humanas, están pasan por el
intérprete, este convierte línea por línea el código de alto nivel a lenguaje máquina,
el cual es comprendido por el procesador y da el resultado de las instrucciones.

Funcionamiento.

Los lenguajes de programación son herramientas fundamentales para el


desarrollo de software. Sin ellos, no sería posible escribir programas que
puedan ser ejecutados por una computadora. La función principal de los
lenguajes de programación es permitir la comunicación entre el usuario y la
máquina, lo que permite a los usuarios especificar las tareas que desean
que la computadora realice.

6
DIARLU. Los tipos de lenguajes de programación: bajo y alto nivel. https://www.diarlu.com/lenguajes-de-
programacion/ [Consulta: viernes, 11 de marzo de 2022]

27
Para lograr esto, las instrucciones escritas en lenguaje humano
deben ser convertidas a un formato que pueda ser comprendido por la
computadora, es decir, lenguaje máquina. Esta tarea es llevada a cabo por
programas especiales llamados compiladores o intérpretes. Los
compiladores son programas que traducen el código fuente escrito en un
lenguaje de programación de alto nivel a lenguaje de máquina de bajo nivel,
generando un archivo ejecutable que puede ser ejecutado directamente por
la computadora. Los intérpretes, por otro lado, leen las instrucciones línea a
línea y las traducen a código máquina en tiempo real, permitiendo la
ejecución del programa sin necesidad de generar un archivo ejecutable. 7

Objetivos.

El objetivo de la programación es desarrollar soluciones correctas, es decir,


cumplir con los requerimientos y especificaciones establecidos. Además, es
importante seguir un proceso de planeación detallado y estructurado en
cada etapa del desarrollo del software. Para ello, los programadores deben
ser claros y concisos a la hora de escribir el código, lo que facilita su
desarrollo y mantenimiento.

6.2.2. Moodle.
Es una plataforma de aprendizaje diseñada para proporcionarle a educadores,
administradores y estudiantes un sistema integrado único, robusto y seguro para
crear ambientes de aprendizaje personalizados. Está construido por el proyecto
Moodle, soportada financieramente por una red mundial de cerca de 80 compañías
de servicio. Cuenta con la confianza de instituciones como Shell, La Escuela
Londinense de Economía (London School of Economics), La Universidad Estatal
de Nueva York, Microsoft y la Universidad Abierta del Reino Unido (Open
University). 8

7
UNAM. Lenguajes de programación.
https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/1023/mod_resource/content/1/contenido/index.html
[Consulta: viernes, 11 de marzo de 2022]
8
(Moodle, 2022). Acerca de Moodle. https://docs.moodle.org/all/es/Acerca_de_Moodle [Consulta: viernes, 11 de marzo de 2022]

28
Moodle está disponible de manera gratuita como un programa de código
abierto bajo la Licencia Pública General (GNU General Public License), lo que
significa que cualquier persona puede adaptar, extender o modificar Moodle para
proyectos comerciales o no comerciales sin tener que pagar cuotas de
licenciamiento.

La plataforma cuenta con compatibilidad en más de 120 idiomas y con una


interfaz simple y características de arrastrar y soltar que la hacen fácil de usar.
Esta plataforma es muy versátil y se puede utilizar en una amplia variedad de
contextos educativos, desde universidades y escuelas hasta empresas y
organizaciones sin fines de lucro. Estas características la convierten en una opción
popular para los profesores y educadores que buscan una plataforma de
aprendizaje en línea potente y fácil de usar.

Algunas de las funciones y características más importantes que ofrece


Moodle son:

 Creación de cursos: Los profesores pueden crear y organizar cursos


en línea con contenido multimedia, actividades y recursos, para que
los estudiantes puedan acceder a ellos en cualquier momento y
lugar.
 Comunicación: Moodle ofrece varias herramientas de comunicación,
como foros, mensajería privada y chats, para que los profesores y
estudiantes puedan interactuar en tiempo real.
 Evaluaciones: Los profesores pueden crear y administrar
evaluaciones en línea, como exámenes, cuestionarios y tareas, y los
estudiantes pueden enviar sus trabajos y recibir retroalimentación.
 Seguimiento del progreso: Moodle permite a los profesores y
administradores ver el progreso de los estudiantes en tiempo real,
incluyendo la participación en actividades, calificaciones y los
resultados de las evaluaciones.

29
 Personalización: Moodle es altamente personalizable, y permite a los
profesores y administradores crear un ambiente de aprendizaje en
línea único, adaptado a sus necesidades y objetivos educativos.
 Integración: Moodle es altamente integrable con otros sistemas y
herramientas, como Google Classroom, Turnitin, Microsoft Teams y
muchos otros.

6.2.3. Plugin.
Un plugin es una pieza de software que se adiciona a un programa principal para
proporcionar una funcionalidad adicional. Estos complementos suelen ser
desarrollados por terceros y pueden ser instalados en el programa principal para
añadir nuevas características o mejorar las existentes. Los plugins son
ampliamente utilizados en muchas aplicaciones, incluyendo navegadores web,
editores de texto, programas de diseño gráfico, reproductores de música y vídeo,
entre otros.

Estos complementos pueden proporcionar una variedad de funciones, como


la compatibilidad con diferentes formatos de archivo, herramientas de edición
avanzadas, efectos de vídeo y audio, soporte para lenguajes de programación,
entre otras cosas. Además, los plugins suelen ser fáciles de instalar y utilizar, lo
que hace que sean una forma popular de añadir funcionalidad a un programa sin
tener que modificar su código fuente. Sin embargo, al ser desarrollado por
terceros, es importante asegurarse de obtener plugins de fuentes confiables y
mantenerlos actualizados para evitar posibles problemas de seguridad. 9

Existen diversos tipos de plugins:

 Plugins de audio: Se usan en los estudios digitales de grabación para


generar diferentes tipos de sonido o emular instrumentos musicales.
 Plugins gráficos y de video: Se usan para proporcionar nuevos efectos o
trabajar con ciertos formatos de archivo e imagen.

9
ARITMETICS. ¿Qué es un plugin? https://www.arimetrics.com/glosario-digital/plugin [Consulta: viernes, 11 de marzo
de 2022]

30
 Plugins para entornos de desarrollo integrados: Los plugins permiten
habilitar nuevos lenguajes de programación en entornos de desarrollo
integrados (IDE).
 Plugins de correo electrónico: Suelen utilizarse para dotar a los programas
de correo electrónico funciones de seguimiento o plantillas adicionales.

El uso de plugins es una técnica muy útil para añadir funcionalidad a un programa
principal sin tener que modificar su código fuente. Esto permite a los
desarrolladores crear una amplia variedad de funciones adicionales para el
programa, y también permite a los usuarios elegir solo las funciones que
necesitan. El uso de plugins es posible gracias a las interfaces de programación
estandarizadas, más conocidas por su nombre en inglés, Application Programming
Interfaces (API). 10

Los plugins en Moodle son variados y proporcionan unas nuevas opciones


a la hora de crear cursos, esta plataforma de aprendizaje tiene una amplia lista de
tipos de plugins con distinto propósito. En la [Tabla 2] se puede apreciar el nombre
del tipo de plugin, una descripción y las versiones para las que se encuentra
disponible.

31
10
IONOS. ¿Qué es un plugin y para que se usa? https://www.ionos.es/digitalguide/servidores/know-how/que-es-un-
plugin/ [Consulta: viernes, 11 de marzo de 2022]

32
Tabla 2 – Tipos de plugins disponibles para Moodle.

33
Tabla 2 – Tipos de plugins disponibles para Moodle.

Nota. (Moodle, n.d.). Esta tabla muestra los distintos tipos de plugin que se pueden usar dentro de la
plataforma de aprendizaje Moodle, junto con su directorio de instalación, una breve descripción y las versiones
para las cuales se encuentran disponibles.

34
6.2.4. Application Programming Interfaces (API)
Una API, o Interfaz de Programación de Aplicaciones en español, es un conjunto
de reglas y especificaciones que describen cómo dos programas o sistemas deben
interactuar entre sí. Estas reglas y especificaciones incluyen cómo transmitir datos,
cómo acceder a bibliotecas de uso compartido, y cómo manejar errores y
excepciones.

Existen varios tipos de API, pero las más comunes son las API de software,
que permiten a los desarrolladores acceder a las funciones de un programa o
sistema, y las API de red, que permiten a los dispositivos y programas interactuar a
través de una red. Las API de software suelen estar documentadas, esto es
importante ya que esta documentación proporciona detalles sobre cómo utilizar la
API, incluyendo información sobre los parámetros de entrada y salida, y cómo
manejar errores y excepciones.

Con el seguimiento de estas especificaciones, los desarrolladores pueden


crear programas que se integren fácilmente con otros programas, sin tener que
preocuparse por las diferencias en la forma en que cada programa maneja la
información. Algunos ejemplos de API populares son las API de Google Maps, que
permiten a los desarrolladores mostrar mapas y obtener información sobre
direcciones en sus propias aplicaciones, o las API de Twitter, que permiten a los
desarrolladores acceder a los tweets y otra información de Twitter en sus propios
programas.

Las API permiten controlar y compartir recursos a través de la web con


métodos seguros de autentificación. Esto permite contar con sistemas altamente
escalables, flexibles y proactivos. En la [Ilustración 4] se puede apreciar el proceso
que deben realizas las aplicaciones o dispositivos al momento de requerir los
servicios de una API.

35
Ilustración 4 – Esquema de funcionamiento básico de una API.

Nota. (RedHat, 2022). En la ilustración se muestra un esquema básico del comportamiento interno de una API.
Comenzando con la aplicación, dispositivo IoT o dispositivos móviles pasando por el sistema de control de la
API, la cual se comunica con el núcleo de la API, pasa la solicitud de servicio y esta responde la solicitud con
la información proporcionada por los sistemas de Backend.

7. FACTIBILIDAD.
La factibilidad es un proceso crucial en la planificación inicial y de proyectos, ya
que ayuda a determinar si un proyecto es viable o no. Este proceso implica un
análisis exhaustivo y sistemático de todos los factores que pueden afectar el éxito
o fracaso del proyecto. Es importante identificar y evaluar estos factores lo antes
posible, ya que puede evitar el desperdicio de tiempo, recursos y dinero en un
proyecto que no tiene posibilidades de tener éxito. Estos ámbitos incluyen:

 La factibilidad técnica.
 La factibilidad operativa.
 La factibilidad legal.
 La factibilidad económica.

36
7.1. Factibilidad técnica.
El desarrollo de un plugin para la plataforma de E-Learning Moodle es un proceso
complejo que requiere de una serie de herramientas y recursos para poder llevarse
a cabo de manera efectiva. Una de las herramientas esenciales para el desarrollo
del plugin es un editor de código para escribir, depurar y modificar el código fuente
del plugin, también es esencial un gestor de servidores y bases de datos para
poder alojar y gestionar el plugin. Además, es necesario contar con un equipo de
desarrolladores con conocimiento en los lenguajes de programación utilizados
para el desarrollo del plugin.

Las herramientas de la [Tabla 3] son herramientas de bajo consumo de


recursos, pero un equipo de cómputo sigue siendo necesario para su uso, en la
[Tabla 4] se puede apreciar el listado de equipos de cómputo con sus
especificaciones para el desarrollo. En la [Tabla 5] se especifica el recurso
humano necesario y que características debe cumplir.

Tabla 3 – Herramientas necesarias para el desarrollo del plugin para Moodle.

37
Tabla 4 – Recurso físico necesario para el desarrollo del plugin para Moodle.

Tabla 5 – Recurso humano necesario para el desarrollo del plugin para Moodle.

38
7.2. Factibilidad operativa.
La factibilidad operativa es un aspecto crucial en la evaluación de un proyecto ya
que se refiere a la capacidad del proyecto de ser implementado de manera
eficiente y efectiva. En el caso del plugin a desarrollar, es importante considerar si
cuenta con los módulos necesarios para fomentar el desarrollo del conocimiento
de los estudiantes en primer y segundo semestres que tienen problemas para
avanzar en sus materias de programación básica. Además, es importante
considerar si el plugin proporciona las herramientas necesarias para que los
maestros puedan realizar de manera eficaz sus labores de calificación.

Esto también implica considerar si el plugin se puede integrar de manera


eficiente con la plataforma de e-learning Moodle y si cuenta con un plan de
operación viable, verificar si cuenta con una interfaz de usuario amigable y fácil de
usar, y si proporciona la capacidad de almacenar y gestionar la información
necesaria para su correcto funcionamiento. Además, es importante tener en
cuenta si el plugin cuenta con un plan de mantenimiento y actualización adecuado.

7.3. Factibilidad legal.


La factibilidad legal se refiere a la evaluación de si un proyecto se encuentra en
regulado bajo las leyes y regulaciones aplicables. En el caso del desarrollo en
cuestión, es importante determinar si el uso de la herramienta de software Visual
Studio Code, así como las extensiones y paquetes de desarrollo, cumplen con las
normativas legales. Es importante mencionar que Visual Studio Code es un
software de código abierto, lo que permite su libre uso, distribución y modificación,
bajo los términos de su licencia, pero es importante también cumplir con las
regulaciones legales relacionadas a su uso.

39
7.4. Factibilidad económica.
La factibilidad económica es esencial en el desarrollo de cualquier proyecto, ya
que asegura que el mismo sea rentable y generará suficientes ingresos para cubrir
los costos. En el caso del desarrollo actual, es importante determinar si el mismo
tiene una rentabilidad adecuada. Es importante también considerar los costos a
largo plazo ya que los costos de mantenimiento suelen a no tenerse en cuenta.

7.4.1. Presupuesto y
financiación. Nivel legal.

El software que se usará para el desarrollo del proyecto es de tipo libre y


está bajo el licenciamiento de uso público. Al usar software libre, el
proyecto se beneficia de una mayor flexibilidad en cuanto a la
modificación y personalización del mismo, ya que se puede acceder al
código fuente y realizar los cambios necesarios. También se evita
depender de un solo proveedor y se reduce el riesgo de interrupciones
en el servicio debido a problemas con el proveedor. Además, al usar
software libre se evitan los costos relacionados con licenciamiento.

Nivel económico.

Es importante tener en cuenta la inversión en recursos físicos, humanos


y lógicos para poder realizar un análisis del impacto económico que
estos significan. Con un estimado de estos recursos se puede llegar a
determinar si el proyecto es viable o no.

En la [Tabla 6] se aprecia el recurso humano que incluye a los


miembros del equipo de trabajo, incluyendo los costos de contratación,
salarios y beneficios. Es importante considerar el impacto económico de
la inversión en los recursos humanos en el presupuesto del proyecto.

40
Tabla 6 – Costos del recurso humano estimado para el desarrollo del
plugin para Moodle.

En la [Tabla 7] se aprecian los recursos físicos que incluyen cualquier


activo tangible necesario para el desarrollo del proyecto, como equipos
de cómputo, herramientas específicas, maquinaria, etc. Estos recursos
tienen un costo económico asociado y deben ser considerados en el
presupuesto del proyecto.

Tabla 7 – Costos del recurso físico estimado para el desarrollo del plugin
para Moodle.

41
En la [Tabla 8] se aprecian los recursos que lógicos incluyen software,
licencias y servicios en línea que son necesarios para el desarrollo del
proyecto. Al igual que los recursos físicos y humanos, los recursos
lógicos tienen un costo económico asociado y deben ser considerados
en el presupuesto del proyecto.

Tabla 8 – Costos del recurso lógico estimado para el desarrollo del plugin
para Moodle.

Tabla 9 – Costo total del proyecto de desarrollo.

42
8. METODOLOGIA.
Tener un plan en cualquier proyecto es fundamental, ya que ayuda a garantizar
que se cumplan los objetivos y se utilicen adecuadamente los recursos
disponibles. A lo largo de la historia, se han desarrollado distintas metodologías
para la planificación y gestión de proyectos, cada una con sus propias ventajas y
desventajas. En el diseño de un plan, es esencial tener en cuenta aspectos como
el número de personas involucradas, el tiempo disponible y la complejidad del
proyecto. Por ejemplo, un proyecto con un gran número de personas y un corto
plazo de tiempo requeriría una metodología diferente a un proyecto con solo unas
pocas personas y un plazo de tiempo más amplio.

Una metodología de desarrollo es esencial para asignar las tareas y


responsabilidades necesarias en el proyecto. Esto permite establecer mecanismos
de trabajo claros y eficientes, de tal manera que cada miembro del equipo entienda
su rol y lo que se espera de él o ella. Las metodologías de desarrollo de proyectos
más populares son Scrum, Kanban, Agile y Waterfall. Cada una tiene sus propios
enfoques y procesos para planificar, ejecutar y monitorear el progreso del
proyecto. Es importante investigar y elegir la metodología que mejor se adapte a
las necesidades y recursos del proyecto en cuestión.

Para el desarrollo del plugin para Moodle se ha elegido la metodología


Scrum, ya que es una de las más populares en el desarrollo de software, y es
ampliamente utilizada en proyectos de desarrollo de aplicaciones y sistemas. Se
basa en un enfoque ágil y colaborativo, que se centra en la entrega continua de
valor al cliente y en la adaptación al cambio. Scrum se divide en tres roles
principales: el Scrum Master, el Product Owner y el equipo de desarrollo, con lo
que se tiene un enfoque claro, establecido para la planificación y seguimiento del
proyecto permitiendo un mejor uso de los recursos y una mejor comunicación entre
los miembros del equipo.

43
Scrum se divide en ciclos cortos llamados Sprints, que típicamente duran
entre 2 y 4 semanas. Durante cada Sprint, el equipo se reúne para planificar el
trabajo a realizar, realizar un seguimiento del progreso y realizar una revisión y
demo del trabajo completado. De esta forma, el equipo puede adaptarse
rápidamente a cambios en las necesidades del cliente y garantizar que se estén
entregando continuamente versiones funcionales del software.

La primera referencia conocida de Scrum se encuentra en un documento


publicado en 1986 por Takeuchi y Nonaka, este documento llamado “The New
Product Development Game” dio a conocer una nueva manera donde la
incertidumbre, la flexibilidad y la agilidad se convierten en componentes esenciales
de una nueva forma de manejar los proyectos.11

Nonaka y Takeuchi en su estudio se basaron en empresas como Honda,


Epson, Canon, etc. Las cuales desarrollaban sus productos con un equipo
multidisciplinar en lugar de tener un equipo especializado para cada una de las
etapas en el desarrollo de sus productos. Al identificar este nuevo enfoque en el en
equipo, realizaron una comparación de este con lo que se conoce como avance de
formación scrum en los jugadores de rugby, de donde surge el nombre de Scrum.

En 1993 fue la primera vez donde Jeff Sutherland y Ken Schwaber


emplearon los principios básicos de Scrum en el desarrollo de Delphi y en la
empresa Easel Corporation, los cuales enmarcarían una serie de reglas que se
debían seguirse para el desarrollo de software. Finalmente, en 1996 Jeff
Sutherland y Ken Schwaber presentaron el “Scrum Development Process”, el cual
establecía formalmente una serie de prácticas para el desarrollo de software. Estas
prácticas se componen de diversas fases, comenzando con la definición de roles y
terminando con el lanzamiento del producto final.

11
OPENWEBINARS. ¿Qué es Scrum?: Origen y características. https://openwebinars.net/blog/que-es-scrum/ [Consulta:
viernes, 11 de marzo de 2022]

44
8.1. Definición de roles.
Scrum es una metodología ágil para el desarrollo de software que se basa en la
colaboración y la flexibilidad en el equipo. Establece una serie de roles,
actividades y responsabilidades específicas en cada una de las fases del
desarrollo, con el objetivo de garantizar que el proyecto se entregue a tiempo y
dentro del presupuesto. Los roles principales en Scrum son el Scrum Master, el
Product Owner y el equipo de desarrollo o Scrum Team.

8.1.1. Product Owner.


El Product Owner es una única persona que es responsable de representar
a todos los interesados en el proyecto, esta persona se encarga de decidir
sobre las características y funcionalidades que debe tener el producto. Se
encarga de maximizar el valor del producto y el trabajo de los
desarrolladores, y es responsable de la gestión de las listas de
funcionalidades requeridas (Product Backlog). 12

Responsabilidades.
 Orientar y transmitir todas las necesidades expuestas por las partes
interesadas al equipo de desarrollo (Scrum team), con el objetivo de
darle valor al producto.
 Realizar la revisión a lo largo del desarrollo del producto con el fin de
ir adaptando las funcionalidades y necesidades requeridas por las
partes interesadas.
 Dirigir y maximizar el Return of Investment (ROI) del proyecto.
 Cooperar con el equipo para revisar, planificar y detallar la finalidad
de cada una de las iteraciones.

12 VISUALPARADIGM. What is Scrum Team? https://www.visual-paradigm.com/scrum/what-is-scrum-team/ [Consulta:


viernes, 11 de marzo de 2022]

44
8.1.2. Scrum Master.
El Scrum Master es un rol de gestión, tiene como finalidad el comprobar que
el proyecto está siendo ejecutado acorde los valores, reglas y prácticas que
son establecidas por Scrum. El Scrum Master debe estar en constante
interacción con los actores en el proceso de desarrollo del proyecto
(Product Owner, Scrum Team, etc.). Por último, El Scrum Master es el
encargado de eliminar todos los problemas e inconvenientes que puedan
interrumpir el desarrollo del proyecto (Abrahamsson, Salo, Ronkainen, &
Warsta, 2017).

Responsabilidades.
 Verificar la correcta implementación de la metodología SCRUM.
 Verificar que cada uno de los integrantes del equipo cumplan los
principios y valores, los procesos y reglas planteadas en la
metodología SCRUM, con el objetivo de que el equipo sea productivo
y consigan los objetivos planteados.
 Preparar cada una de las reuniones que se dan a lo largo de la
metodología.
 Fomentar la autogestión en el equipo e impide que terceros
intervengan con los procesos y metodologías del equipo.

8.1.3. Scrum Team.


El Scrum Team es un pequeño grupo entre 5 a 9 personas
aproximadamente, tienen como objetivo convertir el Product Backlog, en
una serie de iteraciones funcionales del producto. Es importante recalcar
que el Scrum team es un grupo de desarrolladores multidisciplinarios que
tienen el mismo nivel y cargo dentro del proyecto de desarrollo, el cargo de
13
“desarrollador”.

13
VISUALPARADIGM. What is Scrum Team? https://www.visual-paradigm.com/scrum/what-is-scrum-team/ [Consulta:
viernes, 11 de marzo de 2022]

45
Responsabilidades.
 Seleccionar los requerimientos que se comprometen a entregar en
cada Sprint.
 Estimar la dificultad de cada uno de los requisitos para poder
priorizarlos en el Sprint backlog.

8.2. Backlogs o listas de requerimientos.


El Product backlog, también conocido como pila de producto, es una
herramienta clave en Scrum que se utiliza para llevar un registro de todas
las tareas que se pretenden realizar durante el desarrollo de un proyecto. 14.
Esta lista es creada y mantenida por el Product Owner y contiene todas las
tareas necesarias para completar el proyecto, desde las tareas pequeñas
hasta las más grandes. El objetivo del Product backlog es proporcionar una
visión panorámica de todo lo que se espera realizar en el proyecto y ayudar
a tomar decisiones sobre qué tareas deben ser priorizadas para lograr los
objetivos del proyecto.

8.2.1. Planeación y estimación


La fase de planeación en Scrum se enfoca en establecer metas y
objetivos claros para el proyecto y en asegurar que se cumplan los
plazos establecidos. En esta fase, el Scrum Master juega un papel
clave en la delegación de tareas y en la asignación de
responsabilidades a cada miembro del equipo, con el objetivo de
asegurar que el trabajo se distribuye de manera eficiente y que cada
miembro del equipo entiende lo que se espera de él.

14
PROYECTOSAGILES. Introducción a la estimación y planificación ágil.
https://proyectosagiles.org/2009/06/08/introduccion-estimacion-planificacion-agil/ [Consulta: viernes, 11 de marzo de
2022]

46
8.2.2. Crear el sprint backlog o iteración de tareas.
En esta actividad, el equipo se reúne para planificar el trabajo que se
espera realizar en la siguiente iteración o "sprint". El objetivo de esta
planificación es asegurar que el equipo tenga una comprensión clara
de los objetivos y requisitos del proyecto, y que se asignen las tareas
necesarias para completar el trabajo en el plazo establecido.

Esta lista a medida que se actualiza con el desarrollo del


proyecto, arroja donde el equipo está teniendo problemas o
dificultades y no logra avanzar, lo que permite tomar decisiones al
respecto. Por ejemplo, si se encuentra que una tarea especifica está
causando problemas, se puede decidir reestimar el tiempo necesario
para completarla, o redistribuir las tareas entre los miembros del
equipo.

8.2.3. Implementación
La fase de implementación en Scrum es la etapa en la cual se lleva a
cabo el trabajo para la creación del producto. Durante esta fase, el
equipo de desarrollo se enfoca en la compleción de las tareas y
actividades necesarias para alcanzar los objetivos del proyecto.
Estas actividades comprenden varias entregas intermedias del
producto, con el objetivo de asegurar que el proyecto está avanzando
según lo previsto.

Una de las principales actividades en esta fase es la


realización de Daily standup, que son breves reuniones diarias en las
que el equipo de desarrollo se reúne para discutir el progreso del
proyecto y para planificar el trabajo del día. Estas reuniones ayudan a
asegurar que el equipo está enfocado en las tareas importantes y
urgentes y que se están resolviendo los problemas que surgen.
Además de la realización de las entregas y las reuniones diarias, se
lleva a cabo el mantenimiento del Product Backlog en intervalos
regulares.
47
8.2.4. Creación de entregables.
La fase de creación de entregables en Scrum se refiere al proceso de
completar un incremento de producto o entregable al finalizar un
sprint. El entregable debe incluir todas las características y
funcionalidades definidas en las historias de usuario que se han
incluido en el sprint, lo que significa que debe ser una versión
mejorada o ampliada del producto, con respecto al estado anterior.
Esto incluye el diseño, la programación, la prueba y el despliegue de
las funcionalidades especificadas en las historias de usuario. El
objetivo es asegurar que el entregable está completamente
desarrollado, testeado y listo para ser entregado al cliente.

Al final de esta fase, se realiza una reunión de revisión donde


se presenta el entregable al equipo y al cliente, se discuten los
resultados, se recolectan comentarios y se realizan ajustes si es
necesario. Si el entregable cumple con los objetivos del proyecto y
con las expectativas del cliente, se considera como un sprint exitoso,
y se procede a planificar el siguiente sprint.

8.3. Refinamiento del backlog priorizado del producto.


Este proceso se enfoca en asegurar que los elementos del producto
backlog estén listos para su planificación y desarrollo en próximos Sprints.
Debe de llevase a cabo durante toda la duración del proyecto, tiene como
objetivo asegurar que el backlog está siempre actualizado y que los
elementos incluidos en él son claros y detallados. El proceso de
refinamiento comienza con la revisión y actualización del backlog por parte
del Product Owner. En esta etapa, se revisan las historias de usuario
existentes, las prioriza de acuerdo a la importancia y la urgencia, y se
asegura de que están bien definidas y detalladas.

48
8.4. Revisión y retrospectiva
La revisión es un paso crítico para evaluar y mejorar el desempeño del
equipo y del proyecto en general. Durante este proceso, el equipo se reúne
para revisar los entregables y el trabajo realizado en el último sprint, y para
reflexionar sobre cómo el proyecto está progresando. La revisión se enfoca
en evaluar los entregables completados en el último sprint, para determinar
si cumplen con los objetivos y las expectativas del proyecto y si están listos
para ser entregados al cliente. Por otro lado, la retrospectiva es una
oportunidad para reflexionar sobre el proceso y el desempeño del equipo
durante el último sprint. Se discuten las mejores prácticas y métodos
utilizados para realizar el trabajo, se identifican problemas y obstáculos, y
se plantean soluciones para mejorar el proceso en el futuro.

8.5. Lanzamiento
La fase de lanzamiento en Scrum se refiere al desenlace del proyecto y a la
entrega final del producto. En esta fase, el equipo se enfoca en cumplir con
dos tareas principales:

 Enviar entregables: En esta fase, el equipo se asegura de que todos


los entregables finalizados se han entregado al cliente. Esto puede
incluir la entrega física del producto, la entrega de una versión en
línea o la entrega de una versión para ser probada. El objetivo es
asegurar que el cliente recibe un producto completo y de alta calidad.
 Enviar retrospectiva del proyecto: La retrospectiva del proyecto es un
documento que se entrega al cliente y que resume el proceso y los
resultados del proyecto. Se incluye información sobre las mejores
prácticas utilizadas, los desafíos y obstáculos enfrentados, los
resultados y las lecciones aprendidas. El objetivo es proporcionar al
cliente una visión general del proyecto y ayudarlo a comprender
cómo el proyecto se desarrolló y qué se aprendió durante el proceso.

49
9. CRONOGRAMA DE ACTIVIDADES.

Ilustración 5 – Cronograma de actividades del desarrollo del plugin para Moodle.

50
10. IMPLEMENTACIÓN DEL PROYECTO
10.1. Identificación de roles.
Tabla 10 – Definición de roles para el desarrollo del plugin.

10.2. Lista de actividades por rol.


Tabla 11 – Definición de actividades según el rol definido.

51
10.3. Sprints.
Tabla 12 – Sprints totales del desarrollo del plugin.

10.4. Requerimientos.
Tabla 13 – Requerimiento de navegación del plugin.

52
Tabla 14 – Requerimiento de disponibilidad del plugin.

10.5. Desarrollo.
Para alcanzar el éxito en el desarrollo de software complementario, es esencial
cumplir con los requerimientos previamente establecidos. Esto se logra con el
seguimiento de un enfoque de trabajo basado en la metodología Scrum. En esta
línea de trabajo se han establecido cinco Sprints, cada uno con sus objetivos
específicos, descripción detallada y criterios de aceptación. Cada Sprint tiene una
duración determinada y al final de cada Sprint se lleva a cabo una revisión para
evaluar el progreso y hacer los ajustes necesarios antes de continuar con el
siguiente Sprint.

53
10.5.1. Primer Sprint
El primer Sprint de desarrollo es esencial para el éxito del proyecto en general.
Durante este Sprint se llevan a cabo las tareas iniciales necesarias para establecer
las bases del proyecto y asegurar que todo esté configurado correctamente antes
de comenzar el desarrollo en sí.

Una de las tareas más importantes en este primer Sprint es la instalación del
software necesario para el proyecto. Esto incluye el software de desarrollo, las
herramientas de seguimiento de tareas y las herramientas de colaboración del
equipo, entre otras. Es importante asegurar que todo el software esté instalado
correctamente y que todo el equipo tenga acceso a las herramientas necesarias.

Definición del primer Sprint


Tabla 15 – Definición del Sprint #1: Configuración de entorno

54
Fase de Análisis y requerimientos
Moodle es una aplicación web de aprendizaje en línea de código abierto que
se basa en la plataforma LAMP (Linux, Apache, MySQL y PHP). Esta
plataforma se basa en el uso de un servidor web, escrito en PHP, y una
base de datos SQL para almacenar la información de la aplicación. Para
tener un desarrollo efectivo de Moodle, es esencial contar con un entorno
de desarrollo en los equipos de cómputo locales, esto permitirá a los
desarrolladores trabajar en el código y realizar pruebas sin afectar al
sistema en producción.

Para configurar el entorno de desarrollo en el primer Sprint se deben tener


en cuenta los siguientes requerimientos:

 Un servidor web compatible con Moodle, tales como Apache o Nginx,


con soporte para PHP.
 Un servidor de base de datos SQL compatible con Moodle, como
MySQL, MariaDB o PostgreSQL.
 Dependencias necesarias, tales como PHP, y las extensiones y
librerías que Moodle requiera para su correcto funcionamiento.

En términos de Hardware, Moodle tiene ciertos requisitos predefinidos para


funcionar de manera local15, estos varían dependiendo de la cantidad de
usuarios que se piensa alojar, pero al ser una instalación básica para
desarrollo los requerimientos mínimos son:

 Espacio en el Disco: 200MB mínimo, 5GB recomendado.


 Procesador: 1GHz mínimo, 2GHz recomendado
 Memoria RAM: 512 mínimo, 1GB recomendado y +8GB para un
servidor con mayor aforo.

15
(Moodle, n.d.). Requisitos de instalación de Moodle.
https://docs.moodle.org/400/en/Installing_Moodle#Requirements.

55
Es importante tener en cuenta que los requisitos para que Moodle funcione
de manera adecuada no son fijos y pueden variar según el propósito del
sistema y la combinación de hardware y software disponible para su
desarrollo. Esto se debe a que los sistemas con altas tasas de tráfico deben
ser capaces de manejar una gran cantidad de peticiones al mismo tiempo,
lo que requiere un mayor poder de procesamiento, memoria y
almacenamiento.

Además, se requiere una mayor capacidad de red para garantizar que el


sitio web sea accesible para los usuarios en todo momento. Por lo tanto, es
importante tener en cuenta el propósito del sistema y el nivel de tráfico
esperado al momento de planificar los requisitos de hardware y software
para una instalación de Moodle.

Teniendo en cuenta los requisitos anteriores, se define el entorno de


desarrollo con las siguientes características:

 Servidor web: Apache


 Servidor SQL: MySQL
 Versión de PHP: 7.4.X
 Versión de Moodle: LTS (4.0.4)

56
Fase de asignación de tareas
- Instalación de Moodle
El objetivo principal del primer Sprint es realizar la instalación y la
configuración de un entorno óptimo para el desarrollo. Cada tarea general
de este Sprint se ha divido en subtareas como se puede ver en la
[Ilustración 6]. Comenzando con la elección de la versión de Moodle, su
instalación y su primer lanzamiento al servidor local.

Ilustración 6 – Sprint #1: Configuración de Entorno – Instalación de Moodle.

57
- Configuración de modo desarrollador
Una vez se tiene Moodle instalado correctamente y funcionando sobre el
servidor, es necesario realizar la configuración del modo desarrollador. En
la [Ilustración 7], se pueden apreciar las subtareas necesarias para esta
configuración, comenzando con activar el modo diseñador, desactivando los
distintos cachés disponibles y finalizando con la instalación de los plugins
Code-Checker y Moodle PHPdoc Check.

Ilustración 7 – Sprint #1: Configuración de Entorno – Configuración de modo


desarrollador.

58
- Configuración del IDE
Al momento de tener Moodle completamente instalado y configurado, un
paso necesario es realizar la configuración del IDE o editor de código que
se va a usar en desarrollo. En la [Ilustración 8] se pueden ver las dos
subtareas necesarias para esta configuración, siendo la primera tener el
editor instalado, en este caso Visual Studio Code e instalar los
complementos necesarios para desarrollar en PHP.

Ilustración 8 – Sprint #1: Configuración de Entorno – Configuración del IDE.

59
Fase de implementación
- Desarrollo: Instalación de Moodle
Al momento de tener Moodle completamente instalado y configurado, un
paso necesario es realizar la configuración del IDE o editor de código que
se va a usar en desarrollo. En la [Figura 3] se pueden ver las dos subtareas
necesarias para esta configuración, siendo la primera tener el editor
instalado, en este caso Visual Studio Code e instalar los complementos
necesarios para desarrollar en PHP.

La primera tarea a solucionar es elegir la versión de Moodle donde se


centrará el desarrollo del software complementario. Siguiendo el proceso
recomendado se elige la versión más reciente con soporte general, pues
para las versiones 3.X este soporte termina en el mes de noviembre de
2022. Teniendo esto en cuenta se elige la versión 4.0 de Moodle.

Tabla 16 – Versiones de Moodle.

Nota. (Moodle, n.d.). Esta tabla presenta las versiones recomendadas de Moodle. Muestra el nombre
de la versión, su estado actual, fecha de salida y las fechas de la finalización de soporte.

Dentro de la versión 4.0, se tienen distintas versiones como se puede


apreciar en la [Tabla 17], se opta por elegir la más reciente, la 4.0.5 con
fecha de salida del 14 de noviembre de 2022.

60
Tabla 17 – Versiones de Moodle 4.0.

Una vez elegida la versión de Moodle, es importante llevar a cabo la


instalación de los servidores web y de bases de datos necesarios para el
desarrollo. Existen varias opciones disponibles en cuanto a stacks de
servidores:
 LAMP: Linux, Apache, MySQL y PHP.
 MAMP: Mac, Apache, MySQL y PHP.
 WAMP: Windows, Apache, MySQL y PHP.
 XAMPP: Cross-Platform, Apache, MySQL, PHP y Perl.

Para fines prácticos de desarrollo, el stack XAMPP es una excelente opción


debido a su facilidad de uso y su funcionalidad multiplataforma. La
instalación de XAMPP es muy sencilla y se puede realizar siguiendo los
pasos detallados en la documentación proporcionada. La documentación
incluye instrucciones detalladas para la descarga e instalación en diferentes
sistemas operativos como Windows, MacOS y Linux. También se
proporcionan instrucciones para la configuración y personalización del
entorno de desarrollo, lo que permite adaptarlo a las necesidades
específicas del proyecto. (Ver anexos)

61
- Desarrollo: Configuración de modo desarrollador
Una vez Moodle se encuentra instalado en nuestro servidor, realizamos la
configuración para desarrolladores. Comenzando con la activación de los
mensajes de Debugging y del diseñador de temas como se puede apreciar
en las [Ilustraciones 9 y 10].

Ilustración 9 – Activación de los mensajes de Debugging de Moodle.

Ilustración 10 – Activación del diseñador de temas de Moodle.

La [Ilustración 11] muestra los cachés que se deben desactivar para evitar
problemas con el desarrollo del software complementario, esto se realiza
para evitar limpiarlos manualmente a la hora de comprobar algún problema
con el código.

62
Ilustración 11 – Desactivar el chaché de JavaScript, las plantillas y las
cadenas de lenguaje.

Las configuraciones anteriores se pueden realizar mediante la pestaña de


desarrollo en el apartado de ajustes de Moodle, pero también se pueden
realizar mediante el archivo config.php ubicado en el directorio de
instalación como se muestra la [Ilustración 12].

Ilustración 12 – Configuración del modo desarrollador por medio del archivo


config.php.

63
Con gran parte del entorno de Moodle configurado, lo que resta es instalar
los plugins necesarios para garantizar un desarrollo adecuado según las
reglas de código16 establecidas. En las [Ilustraciones 13, 14 y 15] se pueden
observar los detalles de los plugins, sus versiones y su correspondiente
descarga.

Ilustración 13 – Plugin Code-Checker.

Ilustración 14 – Plugin Moodle PHPdoc Check.

Ilustración 15 – Plugin skeleton generator.

16
(Moodle, n.d.). Coding Style. https://docs.moodle.org/dev/Coding_style.

64
- Desarrollo: Configuración del IDE
El código de Moodle se escribe generalmente utilizando lenguajes como
PHP, JavaScript, HTML y CSS. Cualquier editor puede ser utilizado para
escribir este código, pero se recomienda altamente contar con un
entorno de desarrollo integrado (IDE) configurado para optimizar el
desarrollo. Las funcionalidades principales que se buscan al configurar
un IDE son: autocompletado de código, corrección de sintaxis,
depuración, entre otras.
Existen innumerables entornos de desarrollo integrado (IDE) para el
desarrollo en PHP, pero se ha seleccionado el editor de código Visual
Studio Code debido a la comodidad del entorno que ofrece para trabajar
con varios plugins que añaden funcionalidad para el lenguaje PHP. Los
plugins utilizados para el desarrollo se muestran la [Ilustración 16].

Ilustración 16 – Extensiones de Visual Studio Code utilizadas para el


desarrollo.

65
Fase de pruebas
Con el desarrollo del Sprint en su totalidad, el último paso es la realización
de pruebas unitarias, las cuales para el Sprint #1 son:

 Verificación de la instalación completa de Moodle.


 Verificación de creación de cursos.

Cómo se puede apreciar en la [Ilustración 17] el Moodle queda


completamente instalado y funcionan incluyendo el Modo de edición del
usuario administrador.

Ilustración 17 – Prueba Sprint #1: Moodle instalado

66
En la [Ilustración 18] se encuentra la prueba sobre la creación de cursos, se
creó el curso ProgramLab – Introducción a Algoritmos con su
correspondiente descripción y profesor.

Ilustración 18 – Prueba Sprint #1: Creación de curso y curso creado

67
10.5.2. Segundo Sprint.
El segundo Sprint de desarrollo tiene como objetivo crear el entorno principal del
plugin, siendo este el Módulo de Exploración Virtual el cual permitirá que el
estudiante pueda ingresar código en el lenguaje de programación Python y
visualizar su ejecución.

Definición del Segundo Sprint


Tabla 18 – Definición del Sprint #2: Modulo: Interacción y
experimentación virtual

68
Fase de análisis y requerimientos
Los editores de código y las consolas de ejecución son las herramientas
esenciales para cualquier programador pues ofrecen una forma fácil de
escribir código y ver sus resultados. Estas permiten a los programadores
escribir, editar y formatear su código para que sea más organizado y legible,
además se ofrecen funcionalidades que resaltado de sintaxis que permiten
identificar rápidamente el lenguaje en el que se está trabajando e identificar
las palabras reservadas de su sintaxis.

Teniendo lo anterior en cuenta, se realizan los requerimientos necesarios


para el segundo Sprint. Para obtener un resultado satisfactorio el Módulo de
Interacción y experimentación virtual debe contar con las siguientes
funcionalidades:

 Resaltado de sintaxis:
o Facilita la lectura y la comprensión del código para identificar
la sintaxis y las palabras clave de la sintaxis de Python.
 Personalización básica:
o Cambiar el tamaño de la fuente para adaptarse a las
preferencias del usuario es una funcionalidad necesaria para
garantizar que incluso en pantallas pequeñas se pueda
visualizar el código sin problemas.
 Terminal de ejecución:
o Botón de ejecución de código y una terminal que permita
visualizar el resultado de la ejecución.

69
Fase de asignación de tareas
- Módulo de interacción y experimentación virtual
El segundo Sprint tiene como objetivo crear una vista interactiva donde
el usuario pueda escribir código en lenguaje Python y pueda visualizar
los resultados de la ejecución en una sola ventana. Como se puede
apreciar en la [Ilustración 19], esta tarea general se divide en las
subtareas de crear la base del plugin con el plugin skeleton generator,
crear las vistas necesarias e integrar el editor de código y la consola de
ejecución.

Ilustración 19 – Sprint #2: Modulo de Interacción y experimentación virtual

70
Fase de implementación
- Desarrollo: Base del plugin con Plugin Skeleton Generator.
Antes de comenzar con la programación para el primer módulo se debe
tener la base del plugin montado en Moodle para poder visualizar los
cambios en tiempo real y facilitar la producción de código. Esto se
realiza con el Plugin Skeleton Generator instalado previamente, el cual
permite crear las bases de desarrollo para cualquier tipo de plugin para
Moodle, en este caso se va a usar el tipo de Plugin Mod, que integrar el
plugin como una actividad o recurso a cualquier curso creado dentro de
Moodle.

Al ejecutar el Plugin Skeleton Generator, se genera la siguiente vista:

Ilustración 20 – Vista del Plugin Skeleton Generator

Al continuar con la generación manual, se despliega la vista general de


la [Ilustración 20], dentro de la cual se pueden realizar las
configuraciones de derechos de autor, el nombre del componente, la
versión de desarrollo, la versión de Moodle requerida para la ejecución y
los archivos seleccionados para la generación.

71
Ilustración 21 – Configuraciones del Plugin Skeleton Generator

Nota. En la ilustración se muestran las configuraciones de generación que da el Plugin Skeleton


Generator. Las casillas de selección con las etiquetas de: Instalar, Desinstalar, Ajustes, Léame,
Licencia, Mejora y Actualizar biblioteca son archivos opcionales los cuales pueden ser
generados automáticamente para facilitar el trabajo al desarrollador y no tener que agregarlos
manualmente al plugin en cuestión.

72
Realizando este proceso se obtiene un archivo en formato .zip el cual es
un plugin de tipo mod instalable. Este archivo se instala en el apartado
de Complementos >> Instalar Complementos y de esa forma se
genera una nueva actividad o recurso como se aprecia en la [Ilustración
21].

Ilustración 22 – Plugin [ProgramLab] instalado como actividad o recurso

Una vez instalado el plugin, sus archivos se alojan dentro del directorio
moodle/mod/programlab, este directorio es el que se debe abrir con el
editor de código para comenzar a programar las vistas del plugin.

73
- Desarrollo: Vista e integración del editor y la consola
Una vez se tiene lista la base del plugin se puede comenzar a
programar. El primer paso es crear una carpeta llamada event dentro de
la cual se creará el archivo course_module_viewed.php el cual permite
que la redirección de la actividad funcione con la función init() como se
aprecia en el [Código 2].

Código 2 – Función init del evento course_module_viewed.php

Con el archivo anterior completamente creado se puede comenzar a


realizar las vistas del plugin. Para esto se crea una carpeta llamada
templates, dentro de ella se crearán las vistas de acuerdo a los
objetivos de desarrollo:
 Información: Dentro de este módulo se creará la vista donde se
reproduce el objeto virtual de aprendizaje (OVA).
 Interacción: Dentro de este módulo se creará la vista para
implementar el editor de código y la consola de ejecución de
Python para la experimentación.
 Producción: Dentro en este módulo se creará la vista para
implementar el editor de texto para la creación de informes como
ítem calificable.

74
Los archivos principales para el segundo Sprint son view_editor.php
[Código 3] en la carpeta principal del plugin para realizar las conexiones
y dentro de la carpeta templates el archivo editor.mustache el cual
cumple la función de dar la estructura a la página.

Código 3 – Output de la vista del editor en php.

Este código permite asignar las redirecciones dentro del plugin para
cambiar las vistas y mostrar el contenido correspondiente, este output se
integra dentro de todas las vistas del plugin. Una vez creada la vista se
procede con la integración del editor dentro del archivo .mustache el cual
permite cargar la etiqueta con el trinket del editor de código y compilador
de Python3.

75
Fase de pruebas
Con el desarrollo del Sprint en su totalidad, el último paso es la realización
de pruebas unitarias, las cuales para el Sprint #2 son:

 Verificación de las librerías gráficas.


 Verificación de la ejecución por consola.

En la [Ilustración 23] se puede observar la ejecución de código dentro del


plugin y el módulo de Interacción y exploración. Se ejecuta código con la
librería pygal la cual permite realizar gráficas. Y en la [Ilustración 24] se
puede ver el resultado de una ejecución de código Python por consola.

Ilustración 23 – Prueba Sprint #2: Librerías gráficas

Ilustración 24 – Prueba Sprint #2: Ejecución por consola

76
10.5.3. Tercer Sprint.
El tercer Sprint de desarrollo tiene como objetivo crear el entorno de creación de
informes, siendo este el Módulo de Exploración Producción el cual permitirá que el
estudiante pueda realizar el informe correspondiendo de la práctica de laboratorio.

Definición del Tercer Sprint.


El segundo Sprint de desarrollo tiene como objetivo crear el entorno
principal del plugin, siendo este el Módulo de Exploración Virtual el cual
permitirá que el estudiante pueda ingresar código en el lenguaje de
programación Python y visualizar su ejecución.

Tabla 19 - Definición del Sprint #2: Modulo de Producción

77
Fase de análisis y requerimientos.
Los editores de texto ofrecen una forma sencilla de escribir y editar textos
de manera organizada y coherente lo que permite a los usuarios escribir,
editar y agregar formatos a los textos para que sean más legibles y
estéticamente atractivos.

Teniendo lo anterior en cuenta, se realizan los requerimientos necesarios


para el tercer Sprint. Para obtener un resultado satisfactorio el Módulo de
Producción debe contar con las siguientes funcionalidades:

 Personalización básica:
o Cambiar el tamaño de la fuente, formato de títulos y subtítulos,
integración de imágenes y formato de código.
 Exportación:
o Botón que permita realizar la descarga del informe en formato
PDF.

Fase de asignación de tareas


- Módulo de Producción
El objetivo del tercer Sprint es la implementación de un editor de texto que
permita la producción de un informe completo con respecto a una práctica
de laboratorio completa. Como se puede apreciar en la [Ilustración 25], esta
tarea general se divide en las subtareas de crear las vistas necesarias e
integrar el editor de texto.

78
Ilustración 25 – Sprint #3: Módulo de producción

Fase de implementación
- Desarrollo: Vista e integración del editor de texto
Paras las vistas de este módulo se crean los archivos view_texto.php cuyo
contenido es similar al del módulo de interacción y experimentación, sin
embargo, para realizar la integración del editor se debe crear dentro de la
carpeta templates el archivo texto.mustache y dentro de la carpeta js el
archivo text.js, dentro del cual se hará la creación del objeto Quill, el cual es
el editor que se integrará como se puede apreciar en el [Código 4].

79
Código 4 – Creación del objeto del editor Quill

- Desarrollo: Creación del botón de descarga


Para el desarrollo del botón de descarga en formato PDF se integra la
librería jspdf.min.js la cual permite el acceso a las funciones de conversión
a PDF, dentro del archivo text.js se agregan los listeners al botón y se
agregan las funciones como se puede ver en el [Código 5].

Código 5 – Funciones del botón de descarga en PDF.

80
Fase de pruebas
Con el desarrollo del Sprint en su totalidad, el último paso es la realización
de pruebas unitarias, las cuales para el Sprint #3 son:

 Verificación del funcionamiento del editor de texto.


 Verificación de la descarga en PDF del informe.

En la [Ilustración 26] se puede observar la ejecución del editor de texto y en


la [Ilustración 27] se puede ver como se realiza la descarga del contenido
en formato PDF.

Ilustración 26 – Prueba Sprint #3: Funcionamiento del editor de texto

81
Ilustración 27 – Prueba Sprint #3: Descarga en PDF del informe

82
10.5.4. Cuarto Sprint.
El cuarto Sprint de desarrollo tiene como objetivo crear la creación y visualización
del Objeto Virtual de Aprendizaje (OVA) sobre la materia de Introducción a
Algoritmos, siendo este el Módulo de Apoyo al Estudiante, el cual permitirá que el
alumno pueda reforzar conceptos a medida que avanza dentro de la materia.

Definición del Cuarto Sprint.


Tabla 20 – Definición del Sprint #4: Módulo de Material de Aprendizaje

83
Fase de análisis y requerimientos.
Los Objetos Virtuales de Aprendizaje (OVA) son recursos educativos que se
pueden utilizar para facilitar la enseñanza y el aprendizaje en diferentes
disciplinas. Estos OVA pueden ser especialmente útiles para los
estudiantes de Sistematización de Datos de primero semestre ya que les
permiten comprender mejor los conceptos fundamentales de la
programación y la algoritmia para la resolución de problemas.

Teniendo lo anterior en cuenta, se realizan los requerimientos necesarios


para el cuarto Sprint. Para obtener un resultado satisfactorio el Módulo de
Material de Aprendizaje debe contar con las siguientes funcionalidades:

 Diseño claro:
o El OVA debe estar diseñado de forma concisa, ordenada y
lógica, de forma que los estudiantes puedan comprender los
conceptos de forma fácil y rápida.
 Facilidad de uso:
o El OVA debe ser fácil de usar y tener un acceso en línea (En
este caso, dentro del Plugin).

Fase de asignación de tareas


- Módulo de Material de Aprendizaje
El objetivo del cuarto Sprint es la creación de un Objeto Virtual de
Aprendizaje (OVA) el cual debe tener todo el contenido correspondiente a la
Materia de Introducción a Algoritmos. Como se puede apreciar en la
[Ilustración 28], esta tarea general se divide en las subtareas de crear las
vistas necesarias e integrar el editor de texto.

84
Ilustración 28 – Sprint #4: Módulo de Material de Aprendizaje

Fase de implementación
- Desarrollo: Vista del OVA
Para el desarrollo de la vista donde se podrá apreciar el OVA, se debe crear
el archivo view_info.php el cual contendrá las redirecciones a los otros
módulos del OVA como junto con la carga de su template, siendo este el
archivo info.mustache como se puede apreciar en el [Código 6].

85
Código 6 – Output de la vista del OVA

- Desarrollo: OVA en eXeLearning


El OVA será desarrollado en el Software eXeLearning, el cual permite
realizar la exportación del contenido creado al formato SCORM1.2 aceptado
por Moodle para realizar una visualización, cómo se puede apreciar en la
[Ilustración 29], el OVA contará con las unidades de: Conceptos básicos,
Lógica de Programación, Estructuras de Control, Arreglos, Funciones y
Laboratorios.

Ilustración 29 – Vista general del OVA de Introducción a Algoritmos

86
- Desarrollo: Montaje del OVA
Para el montaje del OVA, dentro del template que carga la vista del mismo,
el archivo info.mustache debe extraer las funcionalidades de visualización
de paquetes SCORM1.2 mediante código HTML, no se muestra captura del
código debido a su extensión, sin embargo, puede ser visto dentro del
repositorio del plugin en GitLab.

Fase de pruebas
Con el desarrollo del Sprint en su totalidad, el último paso es la realización
de pruebas unitarias, las cuales para el Sprint #4 son:

 Verificar el acceso al OVA desde el Plugin [ProgramLab].

En la [Ilustración 30] se puede observar la información completa del OVA


montado dentro del Plugin y en la [Ilustración 31] se observa la vista que se
tiene del OVA.

Ilustración 30 – Prueba Sprint #4: Información del OVA dentro del Plugin

87
Ilustración 31 – OVA vista desde el plugin [ProgramLab]

88
10.5.5. Quinto Sprint.
El quinto Sprint de desarrollo tiene como objetivo realizar la creación de los
laboratorios sobre la materia de Introducción a Algoritmos, los cuales se integrarán
dentro del OVA permitiendo al estudiante poner en práctica lo aprendido de la
misma.

Definición del Quinto Sprint


Tabla 21 – Definición del Sprint #5: Creación de laboratorios

Fase de análisis y requerimientos


Un laboratorio es un espacio de aprendizaje donde se llevan a cabo
prácticas y experimentos para poner en práctica los conocimientos teóricos
adquiridos en el aula. Los laboratorios pueden ser utilizados en una amplia
gama de disciplinas, desde la biología y la química hasta la informática y la
ingeniería.

89
En un laboratorio tradicional, los estudiantes trabajan con equipos y
materiales específicos, aprenden a seguir instrucciones y procedimientos, y
desarrollan habilidades prácticas, tales como la capacidad de realizar
mediciones precisas, el uso de instrumentos y herramientas, y la
observación de resultados (Garcia, Gutiérrez, & Sánchez, 2018). También
pueden trabajar en equipo, lo que les ayuda a desarrollar sus habilidades
sociales y de liderazgo.

En los laboratorios virtuales las cualidades anteriores pasan a ser algo más
complejo de controlar, ya que no hay una interacción física con la
experimentación y el resultado, por ello es necesario que los estudiantes
tengan los módulos planteados dentro del plugin, para que de esta forma al
llegar a los laboratorios puedan acudir a ellos y realizar el correspondiente
estudio del OVA, la experimentación en el editor de código, la ejecución en
consola y finalmente realizar el informe del laboratorio correspondiente
dentro del editor de texto.

Teniendo lo anterior en cuenta, se realizan los requerimientos necesarios


para el quinto Sprint. Para obtener un resultado satisfactorio los laboratorios
deben contar con los siguientes apartados:

 Elementos clave de un laboratorio:


o Objetivo.
o Introducción.
o Práctica.
o Preguntas análisis.

90
Fase de asignación de tareas
Ilustración 32 – Sprint #5: Creación de laboratorios virtuales

91
Fase de pruebas
Con el desarrollo del Sprint en su totalidad, el último paso es la realización
de pruebas unitarias, las cuales para el Sprint #5 son:

 Verificar la integración de los laboratorios virtuales dentro del Plugin


[ProgramLab]. Estos se alojarán dentro del OVA de Introducción a
Algoritmos.

En la [Ilustración 33] se puede observar cómo se realiza la integración


dentro de la unidad llamada “Laboratorios”, se realiza la prueba ingresando
a la unidad y visualizando el contenido.

Ilustración 33 – Prueba Sprint #5: Visualización de los laboratorios al interior


del OVA

92
11. RESULTADOS
La obtención de resultado para el plugin [ProgramLab] se realizó mediante la
aplicación de pruebas con estudiantes de primer semestre. El plugin se instaló en
una instancia de Moodle dentro de un servidor bajo dominio de la Universidad
Distrital Francisco José de Caldas, al cual los estudiantes accedieron y realizaron
las pruebas de funcionamiento correspondiente, haciendo múltiples ejecuciones de
código para comprobar la capacidad de solicitudes simultaneas que se pueden
realizar a la consola de Python. A los estudiantes presentes se les realizó una
encuesta de satisfacción la cual da como resultado el siguiente análisis.

11.1. Análisis de resultados


Los resultados de las pruebas realizadas con los estudiantes de primer semestre
en la materia de Introducción a Algoritmos dejaron en evidencia la utilidad del
plugin [ProgramLab] para realizar el refuerzo de sus conocimientos y las practicas
con un nuevo lenguaje de programación, en este caso Python, gracias al Objeto
Virtual de Aprendizaje (OVA) creado específicamente para el Plugin, esto sumado
a la generación de informes que permite el editor de texto les da a los estudiantes
la capacidad de poner a prueba sus conocimientos realizando los laboratorios
virtuales planteados dentro del OVA.

Para la realización de análisis de resultados, se obtienen los datos de las


encuestas anteriormente mencionadas, las dos primeras preguntas son respecto al
OVA, cómo se puede apreciar en la [Gráfica 4], el 53% de los estudiantes
considera el OVA como Bueno, un 37% lo calificó como Excelente y un 10%
como Regular. Seguido a la gráfica se encuentran las mejoras que encontraron
los estudiantes.

93
Gráfica 4 – Análisis #1: Satisfacción sobre el OVA presentado

En la segunda parte se pregunta con respecto al editor de código y la consola de


ejecución. En la [Gráfica 5] se puede apreciar que: El 53% de los estudiantes
considera el OVA como Bueno, un 37% lo calificó como Excelente y un 10%
como Regular. Seguido a la gráfica se encuentran las mejoras que encontraron
los estudiantes.

94
Gráfica 5 – Análisis #2: Utilidad del editor de código y consola de ejecución en
Python.

En la tercera parte se pregunta con respecto al editor de texto. En la [Gráfica 6] se


puede apreciar que: El 50% de los estudiantes considera que es fácil, un 23% lo
calificó como muy fácil y un 27% como ni fácil ni difícil. Seguido a la gráfica se
encuentran las mejoras que encontraron los estudiantes.

95
Gráfica 6 – Análisis #3: Facilidad para generar informes dentro del Plugin
[ProgramLab]

96
Para finalizar, en la cuarta parte se pregunta al desempeño del Plugin
[ProgramLab] en general. En la [Gráfica 7] se puede apreciar que: El 53% de los
estudiantes quedaron satisfechos, un 27% muy satisfechos y un 20% como
satisfecho ni insatisfecho. Seguido de la satisfacción de los estudiantes se
encuentra la última pregunta: “¿Recomendarías el plugin a otros estudiantes de
primer semestre?”, dando como resultado que el 100% de los estudiantes
recomiendan el plugin a otros alumnos de primer semestre.

Gráfica 7 – Análisis #4: Satisfacción del plugin y recomendación del Plugin


[ProgramLab]

97
12. CONCLUSIONES
El uso de laboratorios tiene un impacto positivo en el aprendizaje de los
estudiantes pues proporcionan una oportunidad para que los estudiantes aprendan
mediante la experiencia directa, lo que suele ser más efectivo que simplemente
leer o escuchar información. Esto permite a los estudiantes aprender a través de la
resolución de problemas y el descubrimiento, lo que les permite desarrollar
habilidades críticas de pensamiento y creatividad fortaleciendo sus habilidades
más esenciales.

Los laboratorios también ayudan a los estudiantes a desarrollar habilidades


técnicas y prácticas relevantes para su futura carrera. Los estudiantes que trabajan
en laboratorios tienen la oportunidad de adquirir práctica y experiencia en el
manejo de equipos y herramientas, lo que es valioso en el mercado laboral
competitivo que existe hoy en día. Esto aplica de igual forma para los laboratorios
virtuales, sin embargo, al ser un laboratorio sin instrumentos físicos se debe
realizar un análisis que permita establecer las prácticas recomendadas para ser
usadas en entornos virtuales.

El desarrollo del software complementario (plugin) para la plataforma de


Moodle se vio enriquecido y bien calificado por los estudiantes que realizaron las
pruebas de ejecución, es inequívoco asegurar que el plugin [ProgramLab]
realmente ayuda a los estudiantes de primer semestre a realizar una mejor
comprensión de conceptos básicos de programación y algoritmia dado que el
material dentro del Objeto Virtual de Aprendizaje (OVA) cubre todo el contenido
planeado para la materia de Introducción a Algoritmos, contando con el apoyo
teórico y práctico de la misma, ya que cuenta con la base teórica de los conceptos,
pseudocódigo, diagramas de flujo y posterior conversión al lenguaje de
programación Python.

98
Las cualidades mencionadas anteriormente se logran llevar a cabo gracias
a los módulos de Información (OVA), interacción y exploración virtual (Editor de
código y consola de ejecución Python) y el módulo de producción (Editor de texto).
Estos módulos trabajando en conjunto logran realizar un entorno completo para los
estudiantes teniendo como base la caracterización de los laboratorios virtuales
para brindar apoyo a los estudiantes de nuevo ingreso a superar las dificultades de
enfrentarse a los nuevos conceptos abstractos como lo son la lógica de
programación, dando además conocimiento adicional de un lenguaje que no se ve
dentro de la carrera.

Gracias al análisis de resultados, se logra determinar que el plugin tiene


margen de mejora futura, como la posibilidad de agregar nuevos lenguajes de
programación con su entorno de ejecución un nuevo Objeto Virtual de Aprendizaje
que contenga la teoría de este nuevo lenguaje. De igual forma se evidencia que
hay margen de mejora en la interfaz del plugin, pues este se ve limitada por la
forma en la que funciona la plataforma de aprendizaje Moodle, sin embargo, hay
alternativas que se pueden tomar en cuenta en futuras versiones del plugin, estos
comentarios son similares a las posibles mejoras del editor de texto, ya que se
optó por mantenerlo de la forma más sencilla posible.

También se evidenció la portabilidad del plugin, pues durante el periodo de


desarrollo se llevó a cabo en el sistema operativo Windows, sin embargo, para las
pruebas de configuración, instalación y ejecución se usó una instancia de un
servidor dentro de la Universidad Francisco José de Caldas funcionando bajo un
sistema operativo Linux, para ser más exactos Ubuntu Server. La instalación,
configuración y ejecución se realizó sin problemas, dando como resultado un
plugin portable multiplataforma que puede funcionar independientemente del
sistema operativo del sistema, siempre y cuando Moodle esté correctamente
instalado.

Luego de desarrollar y documentar el desarrollo del Software


Complementario para Moodle, se concluye que se cumplieron los objetivos
planteados en el cuarto numeral [4] del presente documento.
99
13. REFERENCIAS
Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2017). Agile Software
Development Methods.
Aggarwal, J., & Singh, R. (2011). Virtual laboratories in computer science education.
Journal of Computer Science, 284-289.
Aiello, L. C. (2016). The multifaceted impact of Ada Lovelace in the digital age.
Artificial Intelligence, 58-62.
Allue, X. Q. (2022, 03 11). ProyectosAgiles.org. Retrieved from
https://proyectosagiles.org/2009/06/08/introduccion-estimacion-
planificacion-agil/
Alvarez Martinez, C. E. (2012). Laboratorio virtual para la enseñanza de
fundamentos de programación de computadores. Bucaramanga.
Asăvoae, M. (2014). K Semantics for Assembly Languages: A Case Study.
Electronic Notes in Theoretical Computer Science, 111-125.
Baque Jiménez, O. X., Solís Ferrer, H. E., & Arcos Coba, Á. P. (2016, Septiembre
09). Eumed. Retrieved Marzo 1, 2022, from
https://www.eumed.net/rev/cccss/2016/03/tecnodependencia.html
da Silva Ribeiro, R., Machado Faria, T. V., de Oliveira Brandao, L., & Franco
Brandao, A. A. (2014). Programming web-cpurse analysis: How to introduce
computer programmig? Sao Paulo: Frontier in Education.
Fuentes, J. I., & Medina, M. (2017). Dificultades de aprender a programar.
Yucatán: ACOFI.
Gaete, V. (2015). Desarrollo psicosocial del adolescente. Revista Chilena de
Pediatría, 436-443.
Garcia, S., Gutiérrez, M. J., & Sánchez, L. (2018). Impact of laboratory work on the
learning process of undergraduate engineering concepts. IEEE Transactions
on Education, 241-247.
Gomes, A., & Gomes, A. J. (2007). Learning to program - Difficulties and solutions.
Coímbra: International Conference on Engineering Education.
Hamodi, C., Lopez Pastor, V. M., & Lopez Pastor, A. T. (2015). Medios, tecnicas e
instrumentos de evaluacion formativa y compartida del aprendizaje en
educación superior. Perfiles Educativos, 146-161.
Kinchin , I., & Tate, R. (2014). Practical work in science education: A review.
Studies in Science Education. Studies in Science Education, pp. 1-56.

100
Li, Z., Qi, X., & Yang, C. (2022). Exploring multi-programming-language commits
and their impacts on software quality: An empirical study on Apache
projects. Journal of Systems and Software.
Lizardo, M. E. (2018, Enero 2). Scrum Fase III: Implementación.
Manylizu, M. C. (2022). Effectiveness of virtual laboratory vs. paper-based
experiences to the hands-on chemistry practical in Tanzanian secondary
schools. Educ Inf Technol.
Marquina, R., Alvarado , A., & Benitez, E. (2021). E-learning en tiempos de COVID.
La experiencia del CLUSTER de Enseñanza - Aprendizaje AULACIETE
20202021. Trayectorias Universitarias.
Mayer, R., & Moreno, R. (2003). Nine Ways to Reduce Cognitive Load in
Multimedia Learning. Educational Psycologist, pp. 43-52.
Moodle. (2022, Marzo 11). Moodle.org. Retrieved from Acerca de Moodle:
https://docs.moodle.org/all/es/Acerca_de_Moodle
Moodle. (n.d.). Moodle.org. Retrieved November 20, 2022, from dev/Historia de las
versiones: https://docs.moodle.org/all/es/dev/Historia_de_las_versiones
Moodle. (n.d.). Moodle.org. Retrieved November 19, 2022, from Plugin types:
https://docs.moodle.org/dev/Plugin_types
Moodle. (n.d.). Moodle.org. Retrieved Diciembre 3, 2022, from Coding Style:
https://docs.moodle.org/dev/Coding_style
Moodle. (n.d.). Moodle.org. Retrieved Diciembre 1, 2022, from Installing Moodle:
https://docs.moodle.org/400/en/Installing_Moodle#Requirements
Orenga, M. A., & Manonellas, G. E. (2011). Programación en ensamblador (x86-64).
Universitat Oberta de Catalunya.
Raymond, E. (1991). The New Hacker's Dictionary. MIT Press.
RedHat. (2022, Junio 2). RedHat. Retrieved from ¿Qué es la API?:
https://www.redhat.com/es/topics/api/what-are-application-programming-
interfaces
Rodriguez del Pino, J. C., Rubio Royo, E., & Hernandez Figueroa , Z. J. (2010). VPL:
Laboratorio Virtual de Programación para Moodle. Las palmas.
Slivnik, B. (2022). Context-sensitive parsing for programming languages. Journal of
Computer Languages.

101
Sonmez, J. (2014). Soft Skills: The software developer's life manual. Manning
Publications.
The Organization for Economic Co-operation and Development (OECD). (2009).
Higher Education to 2030, Volume 2: Globalisation. Centre for Educational
Research and Innovation.
Universidad de los Andes. (2014). Informe Determinantes de la deserción. Bogotá
D.C.
William, D., & Thompson , M. (2006). The impact of formative assessment on
learning and achievement: An overview. In D. William, & M. Thompson,
Assessment for Learning: Putting it into Practice (pp. 1-12). Maidenhead:
Open University Press.
Yager, R. E., Linn, M. A., & Bell, M. E. (2016). The effectiveness of virtual labs in
comparison to traditional labs in a science course for pre-service teachers.
Computers & Education.

102
ANEXOS

Anexo 1 – Documentación de Instalación de XAMPP.


El primer paso para instalar el gestor XAMPP es descargar la versión adecuada
del software. En este caso, se ha elegido la versión 7.4 de PHP, específicamente
la versión 7.4.30 con un peso de 141Mb.

Una vez descargado e instalado el instalador de XAMPP, es necesario seguir el


proceso normal de instalación para configurar el entorno de desarrollo. El proceso
consta de los siguientes pasos:

 Selección de los componentes que se desean instalar: Durante la


instalación, se presenta una lista de componentes disponibles, como
Apache, MySQL, PHP y Perl. Es importante seleccionar solo los
componentes necesarios para el proyecto y desmarcar los que no se vayan
a utilizar, con el fin de ahorrar espacio en disco y recursos del sistema.

103
 Selección de la ruta de instalación: Es necesario seleccionar la ruta en la
que se desea instalar el software. Se recomienda elegir una ruta fácil de
recordar y acceder, como la carpeta principal del sistema o una carpeta
específica para el proyecto.

104
 Selección del lenguaje de instalación: Es posible seleccionar el idioma de la
interfaz de usuario durante el proceso de instalación. Esto permite una
mejor comprensión y uso del software.

 Esperar el proceso de instalación: Una vez seleccionados los componentes,


la ruta de instalación y el idioma, el proceso de instalación comenzará
automáticamente. Es necesario esperar a que finalice para continuar con el
siguiente paso.

105
 Ejecutar el panel de control XAMPP: Una vez finalizada la instalación, se
puede acceder al panel de control de XAMPP desde el menú de inicio o
desde la carpeta de instalación. Desde el panel de control se pueden iniciar
y detener los servicios necesarios para el desarrollo, y acceder a
herramientas de administración de bases de datos como phpMyAdmin.

106
Una vez completada la instalación, el siguiente paso es verificar que los servidores
estén funcionando correctamente. Para hacer esto, se debe dar clic en el botón
"start" en el panel de control de los módulos de Apache y MySQL. Si ambos
módulos se inician correctamente y los puertos asignados son correctos, se
mostrará la interfaz correspondiente.

107
Anexo 2 – Documentación de Instalación de Moodle.
Una vez el XAMPP esté funcionando correctamente, el siguiente paso es
descargar la versión deseada de Moodle, en este caso la versión “Moodle 4.0.5”
con un peso total de 78.1Mb en su formato .zip.

Examinando el archivo descargado de Moodle, se debe encontrar una carpeta


llamada "moodle" que debe ser ubicada dentro de la carpeta del servidor. En el
caso de usar XAMPP, esta carpeta debe ser colocada dentro de la ruta:
XAMPP/htdocs.

Con la carpeta Moodle dentro del directorio htdocs, se puede comenzar con la
instalación local de la plataforma Moodle. Para ello, se inicia el servidor
accediendo en un navegador a la URL “localhost/moodle” con los servidores de
XAMPP activos, lo que activará el archivo install.php.

108
109
110
111
112
113
114

También podría gustarte