CRITERIO

Fundamentos

Construido con el mismo criterio que enseña.

Domain Driven Design para que el código hable el idioma del aprendizaje. Test Driven Development para que la evidencia sea una prueba que falla si alguien la contradice.

Contextos delimitados en src/criterio/

pruebas en Python y TypeScript

tiempo/

Núcleo compartido

Instante, Fase, LineaDeTiempo y Protagonista. Todos hablan el mismo idioma sobre t<0, t=0 y t>0.

ejecucion/

Motor

Ejecuta Python real con sys.settrace: pila de marcos, objetos con dirección, orden de evaluación y explicación de cada paso. El mismo archivo corre en el navegador con Pyodide.

ruta/

Contexto principal

16 lecciones de Hola mundo a un agregado con TDD. Una prueba verifica que cada predicción coincida con lo que Python imprime de verdad.

metodologias/

Cómo se aprende

El conocimiento como protagonista. 19 metodologías como planes en el tiempo y combinar() para tu mezcla.

decisiones/

Propuesta A

Una decisión técnica: fuerzas y opciones en t<0, elección justificada en t=0, consecuencias en t>0.

aprendiz · codigo/

Propuestas B y C

Quien aprende (acertar sin saber por qué suma poco) y un módulo cuyo costo de cambio crece con la deuda.

web/

Presentación

Exporta lecciones, trazas y trayectorias a JSON y copia motor.py para el navegador. La app no recalcula: muestra.

El protagonista

El estado en cualquier t es la proyección de los hechos hasta t

Event sourcing: nadie guarda «cómo estabas». Se guarda lo que te pasó, y cualquier instante del pasado o del futuro planificado se puede consultar sin copias desincronizadas.

tiempo/protagonista.py

1class Protagonista(ABC, Generic[S]):
2    """No guarda su estado: guarda lo que le pasó."""
3
4    def estado_en(self, t: Instante) -> S:
5        return reduce(self._aplicar, self._linea.hasta(t), self._estado_inicial())
6
7    def donde_esta(self, t) -> Ubicacion[S]:
8        return Ubicacion(instante=t, fase=t.fase, estado=self.estado_en(t))

TDD con evidencia

Cada hallazgo de la investigación es una prueba

Los parámetros del modelo pueden cambiar; las comparaciones que la ciencia sostiene, no. Si un cambio contradice el efecto de prueba o el espaciado, CI falla.

tests/test_metodologias.py

1def test_efecto_de_prueba_recuperar_retiene_mas_que_releer():
2    # Roediger y Karpicke (2006)
3    assert medir("recuperacion", 7).retencion > medir("relectura", 7).retencion
4
5def test_ilusion_de_fluidez_releer_da_la_mayor_confianza_sin_respaldo():
6    brechas = {m.id: m.vivir().medir(7).brecha for m in METODOLOGIAS}
7    assert max(brechas, key=brechas.get) == "relectura"
8
9def test_espaciar_vence_a_concentrar_a_largo_plazo():
10    # Cepeda et al. (2006)
11    assert medir("espaciada", 30).retencion > medir("recuperacion", 30).retencion

Supuestos del modelo, a la vista

Qué le hace cada actividad a tu conocimiento

Retención: curva del olvido exponencial; cada actividad multiplica la estabilidad (más si ya olvidaste un poco: dificultad deseable), y lo que se comprende se olvida más lento. Las demás dimensiones van de 0 a 100 con rendimientos decrecientes. Es un modelo ilustrativo para comparar, no una medición.

ActividadFaseMinEstab. ×Comp.Transf.Crit.Conf.Por qué
Pregunta previat<05prep +0.2··+4·Preguntarse antes activa lo que ya sabes y orienta la atención (efecto de pretest).
Predicciónt<05prep +0.25···-2Comprometerse con una predicción crea una expectativa que el resultado confirma o rompe.
Intento sin instrucciónt<020prep +0.35·+8·-10Fallar antes de la explicación revela qué partes del problema importan (fracaso productivo).
Pre-mortemt<010prep +0.15··+10·Imaginar que ya fracasó obliga a nombrar riesgos que el optimismo oculta.
Explicaciónt=030—+35+8+8+25El primer encuentro: alguien (o un texto) explica el concepto.
Ejemplo resueltot=030—+45+8+6+25Ver un problema resuelto paso a paso reduce la carga cognitiva del principiante.
Relecturat>0101.1+2··+12Releer da familiaridad, no recuerdo: se siente como aprender (ilusión de fluidez).
Recuperaciónt>0101.6 +1.8·olvido+4··+4Sacar de memoria sin mirar fortalece el recuerdo más que volver a ver (efecto de prueba).
Autoexplicaciónt>0151.4+12+4+10+3Explicar con tus palabras obliga a conectar ideas y expone huecos.
Aplicaciónt>0301.5+6+12+6+5Usar el concepto en un problema nuevo construye transferencia.
Práctica intercaladat>0151.4 +1.4·olvido·+12+8-2Mezclar tipos de problemas enseña a elegir qué técnica aplica; se siente más difícil.
Análisis de errorest>0151.3+8+4+10·Encontrar y explicar un error enseña los límites de una regla.
Ordenar códigot>0101.25+6··+3Reordenar líneas dadas enfoca en la estructura sin el costo de escribir todo.
Práctica deliberadat>0251.45+4+10+4+4Repetir un ejercicio acotado con meta y retroalimentación, al borde de tu capacidad.
Enseñart>0251.5+10+4+8+4Preparar y dar una explicación a otro organiza el conocimiento (efecto protegido).
Contrafactualt>0151.2·+8+14·Preguntar qué habría pasado con la otra opción hace visible el porqué.
Reflexión escritat>0101.15+4·+12·Escribir qué esperabas y qué pasó convierte experiencia en criterio.

Las tres primeras propuestas

Otros protagonistas posibles

  1. A · La Decisión

    Sin dos opciones no hay decisión; toda elección cita las fuerzas que la justifican. Alimenta la demo de pre-mortem.

  2. B · El Aprendiz

    Acertar y justificar suma 10; acertar sin saber por qué, 2; equivocarse razonando, 4. Inspira la valoración de cada metodología.

  3. C · El Módulo de código

    Refactorizar sin cobertura está prohibido por el dominio. Su simulación muestra el costo de cambio a la derecha.

terminal

1pip install -e ".[dev]"
2pytest
3criterio metodos
4criterio metodo espaciada --t 7
5criterio combinar espaciada feynman premortem
6criterio exportar

Propuesta C en simulación

El costo de cambiar un módulo

1.0 es tocar código limpio y probado. Mueve t.

012345678-3-2-10+1+2+3+4+5+6+7+8

TDD

costo 1.00 · deuda 0 · riesgo bajo

Pruebas después

costo 3.05 · deuda 4 · riesgo alto

Sin pruebas

costo 7.60 · deuda 8 · riesgo alto