La Plataforma Educativa Personalizada combina tres estructuras de datos distintas para modelar aspectos fundamentalmente diferentes de un sistema de aprendizaje. Cada estructura fue elegida porque su forma natural se ajusta al problema que resuelve: una cola lineal para el flujo ordenado de eventos de progreso, un grafo dirigido y ponderado para las relaciones entre módulos y sus tasas de abandono, y un árbol implícito de dependencias para representar jerarquías de prerrequisitos. Entender cómo interactúan estas tres estructuras es clave para comprender la arquitectura del sistema.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt
Use this file to discover all available pages before exploring further.
Cola Lineal (FIFO)
Caso de uso
LaColaProgreso actúa como un búfer en memoria que captura eventos de progreso estudiantil en tiempo real antes de que sean confirmados y escritos en db_local.json. Esto desacopla la velocidad de la interfaz gráfica (que responde instantáneamente) de la operación de I/O del disco, que puede ser más lenta o bloqueante.
Complejidad temporal
| Operación | Complejidad |
|---|---|
Encolar (encolar) | O(1) |
Desencolar (desencolar) | O(1) |
Implementación
La cola usa una lista de Python coninsert(0, ...) para agregar al frente y pop() para extraer del final, garantizando el orden FIFO (primero en entrar, primero en salir):
items, mientras que el más reciente está al principio. Al llamar a desencolar, se extrae el elemento del final mediante pop(), respetando estrictamente el orden de llegada.
Grafo de Adyacencia (No Lineal)
Caso de uso
GrafoRendimiento modela las transiciones entre módulos del curso y la tasa de abandono asociada a cada transición. Cada módulo es un nodo y cada transición es una arista dirigida y ponderada, donde el peso representa el porcentaje de estudiantes que abandonan antes de llegar al módulo siguiente. Esto permite detectar automáticamente cuellos de botella académicos.
Estructura
El grafo se representa como un diccionario de diccionarios anidados:Módulo 2 a Módulo 3 tiene una tasa de abandono del 65 %, superando el umbral configurable del 50 %, por lo que dispara una alerta.
Tipo
El grafo es dirigido (las aristas tienen dirección, de origen a destino) y ponderado (cada arista lleva el valor numérico de la tasa de abandono).Implementación — clase GrafoRendimiento
Árbol de Dependencias (Implícito)
Caso de uso
El árbol de dependencias representa la jerarquía de prerrequisitos de los módulos completados por un estudiante. No está implementado como una clase de árbol explícita, sino como un diccionario que mapea cada módulo a la lista de sub-módulos que lo componen, recorrido de forma recursiva porrecuperar_historial_recursivo.
Estructura
Implementación — función recuperar_historial_recursivo
historial_completo termina la rama de recursión.
Comparativa de estructuras
| Estructura | Tipo | Complejidad de acceso | Caso de uso |
|---|---|---|---|
Cola (ColaProgreso) | Lineal | O(1) | Progreso en tiempo real |
Grafo (GrafoRendimiento) | No lineal | O(V+E) | Detección de abandono |
| Árbol de dependencias | No lineal | O(n) | Historial de módulos |
- V = número de módulos (vértices), E = número de transiciones (aristas).
- La complejidad O(n) del árbol refleja un recorrido completo de todos los nodos en el peor caso.