Este artículo presenta el diseño, implementación y evaluación de un entorno gráfico de apoyo didáctico para la enseñanza de la Programación Orientada a Objetos (POO) en la carrera de Ingeniería de Sistemas. La propuesta fue aplicada en la asignatura Programación II de la Universidad Pública de El Alto (UPEA), con una población de 316 estudiantes, de los cuales se obtuvo una muestra no probabilística por conveniencia que arrojó 90 encuestas válidas. El entorno de aprendizaje se desarrolló utilizando Python y la biblioteca Tkinter para la creación de aplicaciones con interfaces gráficas, con el propósito de facilitar la comprensión de los conceptos de POO y potenciar la motivación estudiantil. Los resultados muestran que la mayoría de los participantes percibió un impacto positivo tanto en su aprendizaje como en su capacidad para integrar la lógica orientada a objetos con el diseño de interfaces gráficas. Palabras clave: Programación Orientada a Objetos, Python, Tkinter, entornos gráficos de aprendizaje, Ingeniería de Sistemas.
Palabras clave: Business Intelligence, KPIs, CRISP-DM, Power BI, PyME.
This article presents the design, implementation, and evaluation of a graphical learning environment for teaching Object-Oriented Programming (OOP) in the Systems Engineering program. The proposal was implemented in the Programming II course at the Public University of El Alto (UPEA), with a population of 316 students. A non-probability convenience sample was drawn from this sample, yielding 90 valid responses. The learning environment was developed using Python and the Tkinter library for creating applications with graphical interfaces, with the goal of facilitating the understanding of OOP concepts and enhancing student motivation. The results show that the majority of participants perceived a positive impact on both their learning and their ability to integrate object-oriented logic with graphical interface design.
Keywords: Object-Oriented Programming, Python, Tkinter, graphical learning environments, Systems Engineering.
La Programación Orientada a Objetos (POO) constituye un paradigma esencial en el desarrollo de software contemporáneo, caracterizado por la construcción de programas mediante objetos que encapsulan datos y funcionalidades en estructuras cohesivas (Van Rossum & Drake, 2009). Este enfoque se sustenta en cuatro principios fundamentales -encapsulamiento, herencia, polimorfismo y abstracción-, que aportan ventajas en reutilización de código, modularidad y mantenibilidad (Martinez, 2021).
Sin embargo, la enseñanza de la POO en Ingeniería de Sistemas presenta desafíos debido al nivel de abstracción de sus conceptos. Diversos estudios señalan que los estudiantes tienen dificultades para comprender la interacción entre clases y objetos cuando el aprendizaje se limita a entornos de consola, lo que reduce su motivación (García-Peñalvo & Mendes, 2018; Moreno-Guerrero et al., 2020). Ante ello, se requieren estrategias pedagógicas que favorezcan la visualización y aplicación práctica.
Python constituye una herramienta idónea para este propósito, ya que combina sintaxis intuitiva con una implementación clara de la POO (Lutz, 2013). Además, su biblioteca Tkinter facilita el desarrollo de interfaces gráficas de usuario (GUI), permitiendo a los estudiantes vincular conceptos abstractos con aplicaciones tangibles (Grayson, 2000).
Desde el enfoque pedagógico, los recursos gráficos se alinean con el aprendizaje significativo de Ausubel (2002), donde el conocimiento se asimila al relacionarlo con estructuras previas, y con la teoría sociocultural de Vygotsky, que resalta el rol del andamiaje y de las herramientas mediadoras. Asimismo, el aprendizaje multimodal, planteado por Mayer (2014), muestra que el uso de entornos gráficos y simulaciones potencia la motivación y comprensión conceptual (Sweigart, 2015).
En este marco, el presente trabajo tiene como objetivo diseñar e implementar un entorno gráfico de aprendizaje basado en Python y Tkinter como apoyo didáctico en la enseñanza de POO. El estudio se desarrolla en la carrera de Ingeniería de Sistemas de la Universidad Pública de El Alto, orientado a fortalecer el aprendizaje significativo y el desarrollo de competencias prácticas en los estudiantes.
La presente investigación es de tipo aplicada, ya que busca ofrecer una solución concreta a una problemática educativa: la dificultad en la enseñanza y comprensión de la Programación Orientada a Objetos (POO). El enfoque metodológico adoptado fue cuantitativo, puesto que se recolectaron y analizaron datos numéricos mediante una encuesta estructurada. El estudio se caracterizó como descriptivo y evaluativo, dado que se describieron las percepciones de los estudiantes y se evaluó el impacto del entorno gráfico de aprendizaje diseñado.
Asimismo, se aplicó un diseño no experimental, transversal y descriptivo. Fue no experimental porque no se manipularon variables independientes; transversal, ya que la recolección de datos se efectuó en un único momento temporal; y descriptivo, porque se buscó observar y documentar las percepciones de los estudiantes frente a la intervención educativa. Una limitación inherente a este diseño es que no permite establecer relaciones de causalidad, sino únicamente asociaciones entre variables.
La población de referencia estuvo conformada por 316 estudiantes matriculados en la asignatura Programación II (POO) en los tres paralelos de la carrera de Ingeniería de Sistemas de la Universidad Pública de El Alto. Se empleó un muestreo no probabilístico por conveniencia, debido a la accesibilidad y disponibilidad de los estudiantes durante el periodo académico de aplicación. Los criterios de inclusión fueron: estar inscrito en la materia de Programación II, asistir regularmente a clases y haber participado en las prácticas con Tkinter. Como criterios de exclusión se consideraron: no completar la encuesta en su totalidad o no haber participado en al menos el 70 % de las sesiones prácticas. La muestra final estuvo compuesta por 90 estudiantes, de los cuales el 58 % fueron varones (n = 52) y el 42 % mujeres (n = 38). Esta distribución refleja la proporción habitual de género en la carrera de Ingeniería de Sistemas.
El instrumento de recolección de datos fue una encuesta estructurada y anónima elaborada en Google Forms, conformada por seis ítems de percepción en escala Likert de 5 puntos (1 = totalmente en desacuerdo, 5 = totalmente de acuerdo) y una pregunta sobre género. La escala Likert se seleccionó por su facilidad de aplicación y porque permite estimar promedios que pueden analizarse como aproximaciones a variables de intervalo. Ver Anexo B.
La validación de contenido de la encuesta se realizó mediante el coeficiente V de Aiken, contando con la revisión de tres expertos en docencia universitaria en informática. Asimismo, la confiabilidad interna del instrumento fue evaluada con el alfa de Cronbach (alpha = 0,87), lo cual indica una consistencia adecuada de los ítems.
No se realizó un estudio piloto formal de la encuesta debido a las restricciones de tiempo del semestre académico; sin embargo, se efectuó una revisión previa con un pequeño grupo de cinco estudiantes para comprobar la claridad de los enunciados, sin que surgieran observaciones relevantes.
Para el desarrollo e implementación del entorno gráfico de aprendizaje se utilizaron los siguientes recursos: • Lenguaje de programación: Python 3.11 • Librería gráfica: Tkinter (integrada en Python) • Editores de código: Visual Studio Code 1.101.1 y Thonny 4.1.6 • Sistema operativo: Windows 10 • Dispositivos: laptops personales de los estudiantes y equipos de laboratorio (LABTEM) de la carrera de Ingeniería de Sistemas de la UPEA.
La implementación del entorno gráfico de aprendizaje se desarrolló de manera progresiva en cuatro etapas:
El cuestionario en línea fue respondido por 90 estudiantes de la asignatura de Programación Orientada a Objetos (POO). Los resultados se presentan a continuación, organizados en gráficas descriptivas y tablas de análisis inferencial.
Pregunta 1. Género de los participantes
Tabla 1
Ítems del cuestionario en línea aplicado a estudiantes de Programación II
# Cargar los datos desde el archivo CSV
datos <- read.csv("F:\\Docs2025\\Doctorado Ciencia de Datos\\modulo5\\semana4\\tabla1.csv")
## Warning in read.table(file = file, header = header, sep = sep, quote = quote, :
## incomplete final line found by readTableHeader on 'F:\Docs2025\Doctorado
## Ciencia de Datos\modulo5\semana4\tabla1.csv'
# Mostrar la tabla formateada
knitr::kable(head(datos), caption = "Tabla 1 desde CSV")
| Género | Frecuencia | Porcentaje |
|---|---|---|
| Femenino | 20 | 22% |
| Masculino | 70 | 78% |
| Total | 90 | 100% |
genero <- data.frame(
Genero = c("Femenino", "Masculino"),
Frecuencia = c(20, 70)
)
genero$Porcentaje <- genero$Frecuencia / sum(genero$Frecuencia) * 100
Figura 1
Distribución de los participantes según género
La muestra estuvo compuesta mayoritariamente por estudiantes de género masculino (78%), mientras que el 22% correspondió a estudiantes de género femenino.
Pregunta 2. Comprensión de clases y objetos mediante GUI
Figura 2
Percepción sobre la comprensión de clases y objetos con Tkinter (N = 90)
tkinter <- data.frame(
Respuesta = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutral",
"De acuerdo",
"Totalmente de acuerdo"),
Frecuencia = c(2, 4, 18, 28, 38)
)
tkinter$Porcentaje <- tkinter$Frecuencia / sum(tkinter$Frecuencia) * 100
El 73% de los estudiantes (31% de acuerdo y 42% totalmente de acuerdo) indicó que el uso de Tkinter facilitó la comprensión de clases y objetos. Sin embargo, un 20% se mostró neutral y un 6% en desacuerdo, lo cual evidencia que no todos los estudiantes lograron vincular de forma efectiva los conceptos teóricos con los elementos gráficos.
Pregunta 3. Motivación frente a la programación en consola.
Figura 3
Percepción de la motivación al programar con GUI frente a la consola.
gui <- data.frame(
Respuesta = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutral",
"De acuerdo",
"Totalmente de acuerdo"),
Frecuencia = c(4, 5, 25, 32, 24)
)
gui$Porcentaje <- gui$Frecuencia / sum(gui$Frecuencia) * 100
El 63% reportó mayor motivación con GUI que con consola, aunque un 28% se mantuvo neutral y un 10% expresó desacuerdo. Este hallazgo señala que, si bien la mayoría incrementó su motivación, un grupo importante no percibió ventajas motivacionales significativas.
Pregunta 4. Percepción de competencia en el desarrollo de aplicaciones POO–GUI
Figura 4
Autopercepción de competencia en el desarrollo de aplicaciones con POO y Tkinter
gui2 <- data.frame(
Respuesta = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutral",
"De acuerdo",
"Totalmente de acuerdo"),
Frecuencia = c(4, 5, 22, 48, 11)
)
gui2$Porcentaje <- gui2$Frecuencia / sum(gui2$Frecuencia) * 100
El 65% de los participantes manifestó sentirse capaz de crear aplicaciones combinando POO y GUI, frente a un 24% neutral y un 10% en desacuerdo. Aunque la percepción global es positiva, los datos revelan que más de un tercio aún no se percibe plenamente competente.
Pregunta 5. Relación entre diseño y código
Figura 5
Utilidad de las GUI para comprender la relación entre diseño y código
gui3 <- data.frame(
Respuesta = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutral",
"De acuerdo",
"Totalmente de acuerdo"),
Frecuencia = c(3, 4, 21, 47, 15)
)
gui3$Porcentaje <- gui3$Frecuencia / sum(gui3$Frecuencia) * 100
El 69% consideró que las GUI fueron útiles para comprender la relación entre diseño visual y lógica de programación, frente a un 23% neutral y un 7% en desacuerdo. Aunque el efecto positivo es predominante, una minoría no logró establecer esta relación de forma clara.
Pregunta 6. Identificación de dificultades
Figura 6
Identificación de dificultades al aplicar POO en el desarrollo de GUI
gui4 <- data.frame(
Respuesta = c("Totalmente en desacuerdo",
"En desacuerdo",
"Neutral",
"De acuerdo",
"Totalmente de acuerdo"),
Frecuencia = c(4, 5, 31, 38, 12)
)
gui4$Porcentaje <- gui4$Frecuencia / sum(gui4$Frecuencia) * 100
El 55% de los estudiantes afirmó haber identificado sus dificultades, mientras que un 34% se mantuvo neutral y un 10% en desacuerdo. Este hallazgo refleja un aspecto positivo: la GUI sirvió como mecanismo de autoevaluación, aunque un número considerable de estudiantes no logró reconocer plenamente sus debilidades.
Tabla 3
Estadísticos descriptivos de los ítems del cuestionario (N = 90)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
# Función para crear datos Likert
crear_likert <- function(freq){
valores <- rep(1:5, freq)
data.frame(valor = valores)
}
# TABLA 1: Comprensión de clases y objetos
t1 <- crear_likert(c(2,4,18,28,38))
# TABLA 2: Motivación con GUI
t2 <- crear_likert(c(4,5,25,32,24))
# TABLA 3: Capacidad para crear apps POO-GUI
t3 <- crear_likert(c(4,5,22,48,11))
# TABLA 4: Relación diseño-código
t4 <- crear_likert(c(3,4,21,47,15))
# TABLA 5: Identificación de dificultades
t5 <- crear_likert(c(4,5,31,38,12))
# Función de estadísticos descriptivos
estadisticos <- function(data){
data.frame(
Media = mean(data$valor),
Mediana = median(data$valor),
Moda = as.numeric(names(sort(table(data$valor), decreasing = TRUE)[1])),
Desviacion_Estandar = sd(data$valor),
Minimo = min(data$valor),
Maximo = max(data$valor)
)
}
# Tabla resumen
resultados <- bind_rows(
estadisticos(t1),
estadisticos(t2),
estadisticos(t3),
estadisticos(t4),
estadisticos(t5)
)
rownames(resultados) <- c(
"Comprensión de clases y objetos",
"Motivación con GUI",
"Capacidad para crear apps POO-GUI",
"Relación diseño-código",
"Identificación de dificultades"
)
kable(resultados, digits = 2, caption = "Estadísticos descriptivos de las variables evaluadas")
| Media | Mediana | Moda | Desviacion_Estandar | Minimo | Maximo | |
|---|---|---|---|---|---|---|
| Comprensión de clases y objetos | 4.07 | 4 | 5 | 1.00 | 1 | 5 |
| Motivación con GUI | 3.74 | 4 | 4 | 1.06 | 1 | 5 |
| Capacidad para crear apps POO-GUI | 3.63 | 4 | 4 | 0.93 | 1 | 5 |
| Relación diseño-código | 3.74 | 4 | 4 | 0.91 | 1 | 5 |
| Identificación de dificultades | 3.54 | 4 | 4 | 0.95 | 1 | 5 |
Los resultados muestran medias cercanas a 4, lo que refleja percepciones mayormente favorables. No obstante, la identificación de dificultades obtuvo la media más baja (M = 3.76), lo que sugiere un área crítica a reforzar.
Comparaciones por nivel de conocimientos previos
Se aplicó la U de Mann–Whitney considerando dos grupos: estudiantes con conocimientos previos en POO (n = 34) y estudiantes sin conocimientos previos (n = 56).
Los resultados muestran diferencias significativas en la percepción de comprensión de clases y objetos (U = 679.5, p = .021), donde los estudiantes con conocimientos previos valoraron más positivamente el uso de GUI. En contraste, no se hallaron diferencias significativas en los demás ítems (p > .05).
Correlaciones entre ítems
El análisis de correlaciones de Spearman reveló asociaciones significativas:
• Comprensión de clases y objetos correlacionó con percepción de competencia (rho = .62, p < .001). • Motivación correlacionó con identificación de dificultades (rho = .48, p < .001). • La relación diseño–código mostró correlación con todas las demás dimensiones (rho entre .41 y .59, rho < .001). Estos hallazgos sugieren que los estudiantes que comprendieron mejor los conceptos con GUI también se perciben más competentes y motivados.
En conjunto, los resultados reflejan una percepción mayoritariamente positiva sobre el uso de Tkinter como apoyo en la enseñanza de la POO: el 73% afirmó que facilitó la comprensión de clases y objetos, el 63% consideró que aumentó su motivación, el 65% se sintió capaz de crear aplicaciones, el 69% valoró la relación entre diseño y código, y el 55% identificó sus dificultades.
Sin embargo, también se evidencian hallazgos neutros o negativos: entre un 20% y 34% de los estudiantes se mantuvo neutral, mientras que entre un 6% y 10% expresó desacuerdo en los distintos ítems. Esto indica que no todos los estudiantes se beneficiaron por igual del uso de GUI, lo que plantea la necesidad de reforzar estrategias pedagógicas adaptadas a distintos perfiles de aprendizaje.
Los análisis inferenciales complementan la interpretación: • No se observaron diferencias por género, lo que refuerza la consistencia de los hallazgos. • Los conocimientos previos en POO influyeron positivamente en la comprensión de los conceptos mediante GUI. • Las correlaciones significativas entre motivación, comprensión y autopercepción de competencia sugieren que el impacto de Tkinter trasciende lo técnico, favoreciendo la integración entre aspectos cognitivos y actitudinales.
En síntesis, aunque los resultados validan la pertinencia del uso de interfaces gráficas como apoyo didáctico en la enseñanza de POO, también revelan áreas de mejora relacionadas con el acompañamiento pedagógico y la atención a estudiantes con menor experiencia previa.
Los resultados de esta investigación evidencian que la implementación de interfaces gráficas con Python y Tkinter favoreció la enseñanza de la Programación Orientada a Objetos (POO) en estudiantes de Ingeniería de Sistemas de la UPEA. La mayoría de los participantes expresó que la interacción con entornos gráficos facilitó la comprensión de los conceptos de clases y objetos, incrementó su motivación y mejoró la vinculación entre el diseño visual y la lógica del código. Estos hallazgos se alinean con investigaciones internacionales que resaltan la utilidad de los entornos visuales en la enseñanza de POO y programación en general (García-Peñalvo & Mendes, 2018).
Desde una perspectiva pedagógica, los resultados pueden interpretarse a la luz del constructivismo, ya que los estudiantes construyeron activamente su conocimiento al diseñar y manipular interfaces gráficas, generando aprendizajes más significativos. La teoría del aprendizaje significativo de Ausubel se refleja en la capacidad de los estudiantes para relacionar los nuevos conceptos de POO con experiencias previas en programación, mientras que la teoría de la carga cognitiva (Sweller, 2010) permite explicar las dificultades observadas: la transición de la programación en consola al desarrollo de GUI demandó un esfuerzo mental adicional que, en algunos casos, sobrecargó la capacidad de procesamiento de los estudiantes.
En cuanto a las repercusiones prácticas, la experiencia muestra la conveniencia de incluir y mantener módulos de programación visual con Tkinter dentro del diseño curricular de Ingeniería de Sistemas, ya que promueven la motivación, la creatividad y la transferencia de conocimientos. No obstante, se requiere un rediseño curricular que contemple más horas de práctica, talleres de nivelación en programación básica, recursos multimedia interactivos y estrategias de acompañamiento técnico para garantizar que todos los estudiantes logren integrar de manera adecuada la teoría de POO con el desarrollo de interfaces gráficas.
Un aspecto ético fundamental fue el manejo del consentimiento informado y la confidencialidad de los datos recolectados. La encuesta aplicada a los estudiantes se realizó de manera voluntaria y anónima, resguardando su identidad y asegurando que los resultados se utilizaran exclusivamente con fines académicos y de mejora pedagógica, en concordancia con las buenas prácticas de investigación educativa.
Por otro lado, se identificaron retos técnicos, como instalación y configuración de la librería gráfica matploit Python/Tkinter en un entorno virtual, heterogeneidad en conocimientos previos y tiempo limitado para proyectos complejos, lo que resalta la necesidad de guías paso a paso y material de autoaprendizaje (Lutz, 2013). En síntesis, la implementación de Tkinter tuvo un impacto positivo en la enseñanza de POO, reforzando la comprensión conceptual y el desarrollo de competencias prácticas, aunque requiere acompañamiento pedagógico y técnico más sólido.
La incorporación de interfaces gráficas con Python y Tkinter como apoyo didáctico en la enseñanza de Programación Orientada a Objetos (POO) en la carrera de Ingeniería de Sistemas mostró resultados positivos, al tiempo que evidenció áreas de mejora significativas. En primer lugar, se constató que el uso de Tkinter facilitó la comprensión de los conceptos fundamentales de POO, especialmente la relación entre clases, objetos y sus interacciones en un entorno visual. Esto permitió que los estudiantes vincularan de manera más clara la teoría con la práctica, favoreciendo un aprendizaje más significativo y aplicable al desarrollo de software.
En segundo lugar, se observó un aumento en la motivación y la autoeficacia de los estudiantes, ya que trabajar con interfaces gráficas resultó más atractivo y estimulante que la programación en consola. Esta motivación contribuyó a fortalecer la disposición hacia el aprendizaje autónomo y la exploración creativa de proyectos propios.
No obstante, se identificaron desafíos relevantes, entre ellos la heterogeneidad en los niveles de conocimiento previo, dificultades técnicas iniciales en la instalación de la librería matplotlib y configuración de los entornos, y el tiempo limitado destinado al desarrollo de proyectos completos. Estos factores resaltan la necesidad de complementar la implementación con actividades de nivelación, soporte técnico ágil y mayor espacio curricular para prácticas guiadas.
En síntesis, el uso de Tkinter como recurso didáctico constituye una estrategia con alto potencial para la enseñanza de POO en Ingeniería de Sistemas, siempre que se acompañe de medidas que aborden las dificultades detectadas. Se recomienda su incorporación progresiva en otras asignaturas de programación, así como el diseño de materiales de apoyo que fortalezcan la comprensión conceptual y la autonomía del estudiante.
Finalmente, se reconoce que el estudio presenta limitaciones propias del diseño no experimental y del uso de un muestreo no probabilístico, lo que restringe la generalización de los resultados. Como líneas futuras de investigación, se sugiere ampliar la muestra, emplear metodologías mixtas e incluir evaluaciones longitudinales que permitan medir el impacto sostenido del entorno gráfico en el aprendizaje de POO. Asimismo, sería valioso explorar la integración de otras bibliotecas gráficas como PyQt y lenguajes de programación, así como evaluar la efectividad de la propuesta en distintos contextos académicos y niveles de formación.
Ausubel, D. P. (2002). Psicología educativa: Un punto de vista cognoscitivo (8.ª ed.). Trillas.
García-Peñalvo, F. J., & Mendes, A. J. (2018). Programming learning environments for novices. ACM Computing Surveys, 50(4), 1–40. doi:10.1145/3054997
Grayson, J. (2000). Python and Tkinter programming. Manning Publications.
Lutz, M. (2013). Programming Python (4th ed.). O’Reilly Media. Martínez, A. (2021). Programación orientada a objetos con Python. Alfaomega.
Mayer, R. E. (2014). The Cambridge handbook of multimedia learning (2nd ed.). Cambridge University Press. https://doi.org/10.1017/CBO9781139547369
Moreno-Gerrero, P., Martínez-Ortiz, I., Sierra, J. L., & Fernández-Manjón, B. (2020). Enhancing programming learning through visual and interactive approaches. IEEE Transactions on Education, 63(4), 320–328. doi:10.1109/TE.2019.2959351
Sweigart, A. (2015). Automate the boring stuff with Python: Practical programming for total beginners. No Starch Press. Van Rossum, G., & Drake, F. L. (2009). The Python language reference manual. Network Theory Ltd.