Curso completo de Python y Data Science — desde fundamentos hasta despliegue de modelos en producción
📚 Índice de clases · 📖 Syllabus · 🏗️ Arquitectura · 🎯 Evaluación
Integra currículo modular extenso, laboratorio interactivo local, portal del alumno, app de escritorio nativa para Windows y app Android.
📖 ¿Qué significa "pauta derivada"? Cada parte del temario sigue explícitamente la secuencia y los énfasis de cinco libros referentes:
- 🧠 Géron (Hands-On ML, 3ª ed.) → estructura de las partes 1 (ML clásico) y 2 (Deep Learning)
- 📊 VanderPlas (Python Data Science Handbook) → parte 0 (NumPy, pandas, matplotlib)
- 🏭 Huyen (Designing ML Systems) → parte 4 (MLOps en producción)
- 📈 ISLP (Statistical Learning with Python) → parte 3 (estadística inferencial) + rigor matemático de la parte 1
- ⚖️ Barocas/Hardt/Narayanan (Fairness and ML) → parte 7 (ética, fairness, privacidad)
Detalle completo (qué aporta cada uno, cómo se adapta) en docs/syllabus.md § Fuentes y pauta.
💡 Origen y orientación del proyecto: este repositorio nació como muestra de habilidades técnicas y pedagógicas, y hoy se desarrolla como recurso personal de aprendizaje, enseñanza y mejora continua del propio producto. Es público y abierto a cualquier persona que quiera aprender, enseñar o contribuir.
| 🎯 Aspecto | Estado |
|---|---|
| 🏷️ Versión | v3.11.0 (agosto 2026 — la clase se renderiza en HTML también en la app Windows: mismo conversor que GitHub Pages (app/class_html.py), código con resaltado de sintaxis, cabecera de clase, columna de lectura, zoom de texto, tema oscuro real e icono de producto · 🎓 232/232 clases · 232/232 notebooks ejecutables) |
| 📚 Clases | 232 en 9 partes · numeración secuencial limpia 001-232 |
| 🗂️ Estructura | ✅ las 232 clases con README.md pedagógico + notebook.ipynb ejecutable (cobertura 100%) |
| ✍️ Contenido pedagógico | 🟢 Las 9 partes (232/232 = 100%) — completas y modernizadas con Definiciones · Errores comunes · FAQ en cada clase + 35 clases dedicadas a temas modernos 2024-2026 + stack completo de MLOps (DVC, MLflow, Feast, K8s, FastAPI, drift, shadow/canary, SHAP, Great Expectations, behavioral tests) + data engineering (Airflow, Prefect/Dagster, PySpark, Polars, DuckDB/BQ/Snowflake, Kafka, Parquet/Avro, star schemas) + recomendadores (CF, SVD/ALS, content+FAISS, LightFM, métricas top-N, cold-start) + ética/fairness/privacidad (DP/EO/calibration, DP-SGD, FedAvg, GDPR + AI Act 2024/1689, reproducibilidad) + 4 capstones integradores (tabular E2E con MLflow+FastAPI+Streamlit, NLP o series con backtesting cuantil, visión transfer learning con ONNX, portafolio público en GitHub Pages con MkDocs/Quarto) |
| 🧭 Descubribilidad Pages | ✅ tabla de contenidos automática + badges por clase + banner global de progreso |
| 🧪 Laboratorio de ejecución Python | ✅ Flask shell + kernel Jupyter real (jupyter_client + ipykernel), lee los classes/**/notebook.ipynb reales, outputs ricos (HTML, imágenes, errores con traceback) — herramienta separada del viewer nativo, pensada para ejecutar código sobre los notebooks |
| 🖥️ App Windows | ✅ app Qt nativa (PySide6) — sin web, sin localhost · la clase se renderiza en HTML con resaltado de sintaxis · binario publicado en release v3.11.0 (PythonDSProgram_windows_portable_v3.11.0.zip) · capturas |
| 📱 App Android | ✅ 232 clases embebidas · APK debug publicado en release v3.11.0 (PythonDSProgram_android_v3.11.0_debug.apk, 138 MB, Expo SDK 51, versionCode 42) — rebuildeado: bundle JS regenerado (el commiteado estaba obsoleto y no traía el currículo) + icono del producto |
| 🛡️ Postura | local-first — no internet abierta sin capas adicionales |
Binarios oficiales del programa. Verificación de integridad en SHA256SUMS_v3.11.0.txt.
| Artefacto | Tamaño | Qué es |
|---|---|---|
PythonDSProgram_windows_portable_v3.11.0.zip |
274 MB | App Windows Qt nativa (PySide6) — la clase se renderiza en HTML con el mismo conversor que GitHub Pages, código resaltado, cabecera de clase, zoom y tema oscuro real; bundle slim, sin PDFs/PPTX embebidos (el viewer los abre desde el repo) |
PythonDSProgram_android_v3.11.0_debug.apk |
138 MB | APK Android debug (Expo SDK 51 · versionCode 42 · versionName 3.11.0) — 232 clases embebidas (verificado dentro del APK) · icono del producto · bundle JS regenerado |
ℹ️ El release v3.11.0 no incluye instalador Inno Setup
.exe(no hay Inno Setup en el entorno de build) — el ZIP portable es el artefacto autónomo. El scriptinstaller/setup.issya queda configurado con el icono del producto para cuando se compile. La versión v3.8.1 del instalador sigue disponible en su release histórico.
⚠️ El APK dev3.8.0se publicó con el catálogo vacío (mostraba 0 clases). Desde entonces se verifica el contenido dentro del binario antes de publicar: el de v3.11.0 se abrió y se contaron las 232 clases en suindex.android.bundle.
Desde v3.11.0 la clase se renderiza como HTML dentro de la app, con el mismo conversor
que genera GitHub Pages (app/class_html.py): código con resaltado de
sintaxis, tablas de verdad, columna de lectura acotada, tema claro/oscuro y zoom de texto.
📸 Las 6 capturas (ambos temas, README y notebook) están en
docs/screenshots/y en la página Las apps del portal. Se regeneran conpython scripts/capture_app_screenshots.py.
La app Android es la versión de bolsillo: embebe las 232 clases en el bundle JS, así que el catálogo se consulta sin conexión, y cada clase abre su notebook en Colab con un toque. Muestra la ficha de la clase (objetivo, resultados, temas, materiales, práctica) en pestañas Teoría/Práctica con seguimiento de progreso — no el README completo, que es lo que sí muestran este repositorio, el portal y la app de escritorio.
🎨 En v3.11.0 también recibió el icono del producto: hasta v3.10.0 se instalaba con el robot verde genérico del template de Expo.
Cada parte tiene su propio README con narrativa completa: de qué trata, qué problemas resuelve, resultados de aprendizaje, estructura temática y enlaces a las clases.
| # | Parte | Clases | Foco | README |
|---|---|---|---|---|
| 0️⃣ | Prerrequisitos ✅ | 49 (001-049) | Python aplicado, NumPy, pandas, Polars, Parquet/Arrow/DuckDB, viz, SQL, NoSQL, APIs, async | 📘 leer |
| 1️⃣ | ML clásico ✅ | 50 (050-099) | Regresión, clasificación, ensembles, no supervisado, Optuna, SHAP, calibración, Model Cards | 📘 leer |
| 2️⃣ | Deep Learning ✅ | 75 (100-174) | Keras + PyTorch + Lightning, CNN (SAM/YOLOv11), Transformers + Flash/RoPE/GQA, LLMs (LoRA/DPO/vLLM), multimodal (CLIP/Whisper), MCP/agentes, SDXL+ControlNet, RL, ONNX/JAX, despliegue | 📘 leer |
| 3️⃣ | Estadística inferencial y causal ✅ | 19 (175-193) | Hipótesis + effect size, BCa bootstrap, A/B (CUPED+sequential), DoubleML, Synthetic Controls, Bayes (PyMC v5+NumPyro+ArviZ) | 📘 leer |
| 4️⃣ | MLOps ✅ | 14 (194-207) | DVC, MLflow, Feast, GH Actions+CML, Docker, FastAPI, K8s, serverless, drift (PSI/CBPE), Prefect, shadow/canary, SHAP, Great Expectations, behavioral tests | 📘 leer |
| 5️⃣ | Ingeniería de datos ✅ | 8 (208-215) | Airflow TaskFlow, Prefect/Dagster, PySpark (AQE/skew), Polars (lazy/streaming), DuckDB/BQ/Snowflake, Kafka+Kinesis, Parquet/Avro, star schema SCD2 | 📘 leer |
| 6️⃣ | Recomendadores ✅ | 7 (216-222) | CF user/item-based, SVD+ALS implicit, content (TF-IDF+sentence-transformers+FAISS), hybrid LightFM, métricas top-N (NDCG/MAP/recall), cold-start (Bayes+bandits) | 📘 leer |
| 7️⃣ | Ética, fairness, privacidad ✅ | 6 (223-228) | Sesgos (Suresh-Guttag), métricas DP/EO/calibration + impossibility theorem, privacidad diferencial (Laplace/Gauss/DP-SGD), federated learning (FedAvg + leakage), GDPR + AI Act EU 2024/1689, reproducibilidad (seeds/lock files/model cards) | 📘 leer |
| 8️⃣ | Capstones ✅ | 4 (229-232) | Tabular E2E (EDA+ColumnTransformer+GBM+Optuna+MLflow+FastAPI+Streamlit+SHAP), NLP/series (rama A: DistilBERT/RAG · rama B: forecasting con baselines+SARIMA+ML+backtesting+cuantiles), Visión transfer learning (ConvNeXt/EfficientNetV2/ViT + RandAugment/MixUp + ONNX), Portafolio público (MkDocs Material/Quarto + GitHub Pages + demos hosted + deck + CV técnico) | 📘 leer |
232/232 clases desarrolladas (100%) con patrón pedagógico v3.0 — Definiciones · Resultados · Temas · Dataset · Ejercicios · Homework verificable · Errores comunes · FAQ · Referencias + notebook ejecutable + PDF + PPTX. PDFs y PPTX por clase, por parte y unificados ya están generados (docs/pdfs/, docs/presentaciones/). Siguiente foco del repo: migrar el catálogo del currículo a la UI Android (mobile/src/data/classes.js sigue stub), mejoras al laboratorio de ejecución Python (ver ROADMAP.md).
| 👤 Perfil | 📖 Documento de entrada | 🎯 Qué mirar primero |
|---|---|---|
| 🏛️ Institución / evaluador | docs/GUIA_EVALUACION.md | valor, evidencia y límites reales |
| 🎯 Reclutador técnico | RECRUITER.md | evidencia técnica rápida en 5 minutos |
| 🏗️ Stakeholder técnico | docs/ARQUITECTURA_PRODUCTO.md | capas, flujos y fronteras |
| 📦 Producto / maintainer | docs/CATALOGO_PRODUCTO.md | superficies, artefactos y reglas de comunicación |
| 👩🏫 Docente | docs/herramientas-pedagogicas-de-aula.md | mediación, problemas de aula y ritmo |
| 🎓 Alumno | docs/student-guide.md | uso del curso y expectativas |
| ⚙️ Operación | RUNBOOK.md | arranque, smoke checks y apagado |
| 🔐 Seguridad | SECURITY.md | postura actual y riesgos aceptados |
Si no sabes por dónde entrar, usa docs/INDEX.md.
| ⏰ Tiempo | Secuencia recomendada | 🎯 Resultado esperado |
|---|---|---|
| 5 min | README → RECRUITER.md |
evidencia rápida de qué funciona hoy |
| 15 min | README → docs/GUIA_EVALUACION.md → docs/CATALOGO_PRODUCTO.md |
entender superficies, arquitectura y criterio de operación |
| 30 min | secuencia anterior + docs/syllabus.md + docs/ARQUITECTURA_PRODUCTO.md |
entender el currículo completo, capas y growth path |
📚 La documentación está pensada como sistema, no como inventario de archivos.
| Superficie | Rol | Estado |
|---|---|---|
🧪 Laboratorio de ejecución Python (app/) |
shell Flask + kernel Jupyter real (jupyter_client + ipykernel) que ejecuta los notebooks del currículo |
✅ operativo |
🌐 Portal del alumno (site/) |
punto de entrada oficial para estudiantes | ✅ operativo |
🏛️ Vista institucional (site/product/) |
presentación visual del producto | ✅ operativa |
📚 Currículo modular (classes/) |
232 clases en 9 partes (numeración secuencial 001-232): Prerrequisitos, ML clásico, Deep Learning, Estadística inferencial y causal, MLOps, Ingeniería de datos, Recomendadores, Ética, Capstones | 🟢 Las 9 partes (232/232 = 100%) completas y modernizadas — 35 clases dedicadas a temas 2024-2026 + stack MLOps + data engineering + recomendadores + ética/fairness/privacidad + 4 capstones integradores end-to-end |
🖥️ App de escritorio Windows (launcher.py + app_desktop/ + program.spec + installer/) |
ventana Qt nativa (PySide6) — sin web, sin localhost, sin WebView, sin Python en el PC del alumno; la clase se renderiza en HTML con app/class_html.py |
✅ binario v3.11.0 publicado en release |
📱 App Android (mobile/) |
Expo/React Native con integración Google Colab | ✅ APK debug v3.11.0 publicado en el release · 232 clases embebidas · icono del producto |
📄 PDFs (docs/pdfs/) |
guías por clase + bundles por parte + curso completo | ✅ generados (232 por clase + 9 por parte + 1 unificado) |
📊 Presentaciones (docs/presentaciones/) |
decks .pptx por clase + bundles por parte + curso completo |
✅ generados (232 por clase + 9 por parte + 1 unificado) |
La fuente de verdad de esta taxonomía vive en docs/CATALOGO_PRODUCTO.md.
- 🧭 Índice navegable: classes/README.md
- 📖 Pauta completa: docs/syllabus.md
- 📝 Cada clase incluye
README.md(ficha pedagógica) +notebook.ipynb(ejecutable) +clase-NNN-...-guia-explicativa.pdf+clase-NNN-...-presentacion.pptxpara descarga directa desde la carpeta de la clase.
| 📦 Bundle | PPTX | |
|---|---|---|
| 🎓 Curso completo (232 clases · 9 partes) | curso-completo.pdf (1.9 MB) | curso-completo.pptx (2.0 MB) |
| Parte 0 — Prerrequisitos | parte-0…-completa.pdf | parte-0…-completa.pptx |
| Parte 1 — ML clásico | parte-1…-completa.pdf | parte-1…-completa.pptx |
| Parte 2 — Deep Learning | parte-2…-completa.pdf | parte-2…-completa.pptx |
| Parte 3 — Estadística inferencial | parte-3…-completa.pdf | parte-3…-completa.pptx |
| Parte 4 — MLOps | parte-4…-completa.pdf | parte-4…-completa.pptx |
| Parte 5 — Ingeniería de datos | parte-5…-completa.pdf | parte-5…-completa.pptx |
| Parte 6 — Recomendadores | parte-6…-completa.pdf | parte-6…-completa.pptx |
| Parte 7 — Ética / Fairness / Privacidad | parte-7…-completa.pdf | parte-7…-completa.pptx |
| Parte 8 — Capstones | parte-8…-completa.pdf | parte-8…-completa.pptx |
Generación:
python scripts/generate_class_assets_v3.py(por clase) ypython scripts/generate_part_bundles.py(bundles por parte + unificado).
PDFs listos para imprimir o compartir. Viven en docs/pdfs/ y son independientes del flujo de clases.
| 📑 Documento | Descripción |
|---|---|
| guia-estudio-repositorio.pdf | 🗺️ Ruta de lectura rápida del repo para evaluador o reclutador |
| guia-total-python-data-science.pdf | 📘 Guía ampliada de Python con Data Science investigada con fuentes oficiales |
graph LR
INST["Institución"] --> PRODUCT["site/product/\nVista institucional"]
ALUM["Alumno"] --> PORTAL["site/\nPortal del alumno"]
ALUM --> MOBILE["mobile/\nApp Android"]
DOC["Docente"] --> LAB["app/\nLab ejecución Python\n(Flask + kernel Jupyter)"]
DOC --> WIN["PythonDSProgram.exe\nApp Windows nativa (PySide6 / Qt)"]
PRODUCT --> DOCS["docs/\nDocumentación canónica"]
PORTAL --> DOCS
MOBILE --> CLASSES["classes/\n232 clases · 9 partes"]
MOBILE --> COLAB["Google Colab\n(ejecución de código)"]
LAB --> CLASSES
LAB --> DATA["datasets/\n6 CSV sintéticos"]
LAB --> NOTEBOOKS["app/notebooks/\n6 labs interactivos"]
LAB --> SAVED["app/saved_notebooks/\nTrabajo del alumno"]
WIN --> CLASSES
🖥️ La app Windows nativa (
PythonDSProgram.exe) lee directamenteclasses/con widgets Qt — no levanta Flask ni se conecta al laboratorio. El laboratorio (app/) es una herramienta separada, opcional, para ejecutar código de los notebooks.
La arquitectura completa, con flujos y fronteras, está en docs/ARQUITECTURA_PRODUCTO.md.
🗺️ Mapa del currículo (9 partes · 232 clases · v3.11.0 · 🎓 232/232 README + 232/232 notebooks ejecutables · 100% real)
graph TD
P0["0️⃣ Prerrequisitos<br/>49 clases (001-049)"]:::found
P1["1️⃣ ML clásico<br/>50 clases (050-099)"]:::ml
P2["2️⃣ Deep Learning<br/>75 clases (100-174)"]:::dl
P3["3️⃣ Estadística inferencial y causal<br/>19 clases (175-193)"]:::stats
P4["4️⃣ MLOps<br/>14 clases (194-207)"]:::ops
P5["5️⃣ Ingeniería de datos<br/>8 clases (208-215)"]:::data
P6["6️⃣ Recomendadores<br/>7 clases (216-222)"]:::rec
P7["7️⃣ Ética, fairness, privacidad<br/>6 clases (223-228)"]:::eth
P8["8️⃣ Capstones<br/>4 proyectos (229-232)"]:::cap
P0 --> P1
P0 --> P3
P1 --> P2
P1 --> P4
P3 --> P1
P2 --> P4
P4 --> P5
P1 --> P6
P2 --> P6
P0 --> P7
P1 --> P8
P2 --> P8
P4 --> P8
classDef found fill:#7c5cff,stroke:#5b3fc7,color:#fff
classDef ml fill:#2e8b57,stroke:#1f6f43,color:#fff
classDef dl fill:#0ea5e9,stroke:#0369a1,color:#fff
classDef stats fill:#f59e0b,stroke:#b45309,color:#fff
classDef ops fill:#ef4444,stroke:#b91c1c,color:#fff
classDef data fill:#8b5cf6,stroke:#6d28d9,color:#fff
classDef rec fill:#ec4899,stroke:#be185d,color:#fff
classDef eth fill:#14b8a6,stroke:#0f766e,color:#fff
classDef cap fill:#facc15,stroke:#a16207,color:#000
- Currículo (v3.11.0): 232 clases en 9 partes (numeración secuencial 001-232) — Prerrequisitos (49), ML clásico (50), Deep Learning (75), Estadística inferencial y causal (19), MLOps (14), Ingeniería de datos (8), Recomendadores (7), Ética (6), Capstones (4). Las 9 partes (232/232 = 100%) completas y modernizadas 2024-2026;
- pauta derivada de Hands-On ML (Géron 3ª ed.), Python Data Science Handbook (VanderPlas), Designing ML Systems (Huyen), ISLP (James et al), Fairness and ML (Barocas/Hardt/Narayanan);
- cada clase:
README.mdpedagógico (Definiciones · Errores comunes · FAQ · Referencias) +notebook.ipynbejecutable +clase-NNN-...-guia-explicativa.pdf+clase-NNN-...-presentacion.pptx; - 6 datasets sintéticos: ventas_tienda, retencion_clientes, soporte_tickets, transporte, estudiantes, comentarios_productos;
- guías de instructor, metodología, criterios de evaluación y ética de datos.
- shell Flask + kernel Jupyter real (
jupyter_client+ipykernel) — un kernel por sesión, con interrupt/restart; - descubre y ejecuta los
classes/**/notebook.ipynbreales del currículo (no templates); - outputs ricos: HTML, imágenes PNG/JPEG base64, errores con traceback, streams stdout/stderr;
- atajos estilo Jupyter (Ctrl+Enter ejecutar, Shift+Enter ejecutar y avanzar);
- guardado de notebooks en JSON local (
app/saved_notebooks/); - endpoints
GET /healthyGET /readypara healthchecks.
- ventana Qt nativa con
QTreeViewdel currículo y tabs README / Notebook — sin web, sin localhost, sin WebView, sin Flask de fondo; - READMEs renderizados con
QTextBrowser.setMarkdown(); notebooks renderizados celda por celda con outputs (imágenes base64 →QPixmap); - toolbar con "Abrir PDF/PPTX/Carpeta" — en el bundle frozen abre la URL raw del repo (los PDFs/PPTX no van empaquetados);
- bundle slim distribuido como ZIP portable en el release v3.11.0; el instalador Inno Setup
.exequeda pendiente (no hay Inno Setup en el entorno de build — el ZIP portable es el artefacto autónomo; la versión v3.8.1 del instalador sigue en su release histórico); - sin dependencias Python en el PC del usuario final.
- Expo/React Native (SDK 51, RN 0.74.5, versionCode 42, versionName 3.11.0);
- integración con Google Colab para ejecución de código sin Python local;
- seguimiento de progreso local con AsyncStorage;
- APK debug
v3.11.0(versionCode 42) publicado en el release · catálogo con las 232 clases en 9 partes, generado desdeclasses/**/README.mdconscripts/generate_mobile_curriculum.py(los enlaces a Colab ahora resuelven a notebooks reales); - navegación jerárquica: partes → clases (con buscador) → detalle de clase.
- PDFs y PPTX por clase generados en
docs/pdfs/classes/ydocs/presentaciones/classes/(232 + 232); - bundles por parte (9 PDFs + 9 PPTX) y unificados (
curso-completo.pdf,curso-completo.pptx); - landing pública para alumnos en GitHub Pages (
site/); - vista institucional HTML con narrativa de producto (
site/product/); - PDFs adicionales de estudio en
docs/pdfs/.
Descarga PythonDSProgram_windows_portable_v3.11.0.zip desde el release v3.11.0, descomprime y ejecuta PythonDSProgram.exe. Es una app Qt nativa (PySide6): no abre navegador, no levanta servidor HTTP, no requiere Python ni Edge WebView2 instalados. Para construir el .exe desde fuente ver docs/BUILD_INSTALLER.md.
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -r requirements.txt
python run_program.pyAbre automáticamente http://127.0.0.1:8000 en el navegador.
docker compose up --builddocker compose -f docker-compose.prod.yml up -d --build# Instala dependencias de build (la app Windows es Qt nativa con PySide6)
pip install "PySide6>=6.6" pyinstaller
# Genera bundle + ZIP portable + instalador (requiere Inno Setup 6)
build_windows.batVer docs/BUILD_INSTALLER.md para instrucciones completas.
pytest # suite completa
ruff check . # lint
python -m bandit -r app run_program.py launcher.py app_desktop -x app/saved_notebooks # seguridad estáticaWorkflows activos:
| ⚙️ Workflow | Qué cubre |
|---|---|
| 🧪 ci.yml | tests, lint, build de contenedor |
| 🔒 security.yml | auditoría de dependencias, SAST |
| 🚀 deploy-pages.yml | despliegue de site/ a GitHub Pages |
- ✅ validación de slugs e identificadores (regex, evita path traversal);
- ✅ límite de payload por request (1 MB);
- ✅ límite de longitud de código (20 KB);
- ✅ timeout de ejecución por celda (30 s) + reinicio de sesión;
- ✅ eviction de sesiones antiguas (100 sesiones máx, TTL 1 hora);
- ✅ CSP estricto sin dependencias CDN externas;
- ✅ defaults de arranque a
127.0.0.1; - ✅ nosec justificado para falsos positivos de Bandit en polling loops.
- ❌ no hay autenticación integrada;
- ❌ no hay sandbox fuerte para código no confiable;
- ❌ no hay rate limiting de red;
- ❌ no hay TLS nativo;
- ❌ el runner es para uso local en aula, no para internet abierta.
📖 Ver SECURITY.md para detalle completo.
| 📄 Documento | Rol |
|---|---|
| 🎯 RECRUITER.md | evidencia técnica rápida para evaluadores |
| 📜 CHANGELOG.md | historial de cambios por versión |
| 🤝 CONTRIBUTING.md | cómo contribuir al proyecto |
| 🛣️ ROADMAP.md | dirección futura del producto |
| ⚙️ RUNBOOK.md | operación diaria |
| 🔐 SECURITY.md | postura de seguridad y límites |
| 🧭 docs/INDEX.md | índice completo por audiencia y objetivo |
| 📦 docs/CATALOGO_PRODUCTO.md | fuente de verdad de superficies y artefactos |
| 🏗️ docs/ARQUITECTURA_PRODUCTO.md | arquitectura funcional con diagramas |
| ✅ docs/GUIA_EVALUACION.md | ruta ejecutiva de 10 minutos |
| 🖥️ docs/BUILD_INSTALLER.md | cómo generar el instalador Windows |
| 📱 docs/MOBILE_APP.md | cómo construir y distribuir la app Android |
| 🧪 docs/entorno-interactivo.md | el laboratorio de ejecución Python y su funcionamiento |
| 🧠 docs/metodologia-docente.md | marco pedagógico del producto |
| 👩🏫 docs/instructor-guide.md | playbook de ejecución docente |
| 🎓 docs/student-guide.md | guía de onboarding del alumno |
| 🚢 docs/despliegue-seguro-y-operacion.md | CI/CD, Docker y hardening |
| ☁️ docs/MIGRACION_AWS.md | migración a la nube AWS — arquitectura, costos y paso a paso |
🗂️ Las notas internas del maintainer viven en
docs/maintainer/.
|
|
El valor de este proyecto no depende de competir contra una tecnología puntual. Su valor está en traducir herramientas a aprendizaje real, con secuencia pedagógica, criterio docente, operación responsable y una base documental que permite evaluarlo como producto.


