CARDENASLUIS-CARDONAJULIAN (1) - Removed
CARDENASLUIS-CARDONAJULIAN (1) - Removed
CARDENASLUIS-CARDONAJULIAN (1) - Removed
PROYECTO DE GRADO
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
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
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.
7
RESUMEN
ABSTRACT
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.
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)
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ó.
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).
3.2. Delimitaciones.
El desarrollo de la aplicación se ve limitado por los siguientes aspectos:
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.
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)
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.
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:
20
Tabla 1 – Lenguajes de programación soportados por el VPL de la Universidad de
Extremadura.
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.
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 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.
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.
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).
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).
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.
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
Funcionamiento.
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.
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.
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.
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
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.
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.
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.
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.
Nivel económico.
40
Tabla 6 – Costos del recurso humano estimado para el desarrollo del
plugin para Moodle.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
49
9. CRONOGRAMA DE ACTIVIDADES.
50
10. IMPLEMENTACIÓN DEL PROYECTO
10.1. Identificación de roles.
Tabla 10 – Definición de roles para el desarrollo del plugin.
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.
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.
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.
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.
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.
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.
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.
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.
60
Tabla 17 – Versiones de Moodle 4.0.
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].
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.
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.
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].
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:
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.
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.
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.
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.
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.
71
Ilustración 21 – Configuraciones del Plugin Skeleton Generator
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].
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].
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.
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:
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.
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.
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.
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
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:
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.
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.
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).
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
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:
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.
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.
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:
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.
93
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
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.
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.
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.
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
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.
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.
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