Programa secuencial de 176 clases en 12 partes. La numeración es global (001→…) y el orden importa: cada clase asume la anterior.
Estado: 176 de 176 clases construidas · núcleo de 10 lenguajes. Programa completo ✅.
Este índice es el mapa: cada parte con su gancho y sus bloques temáticos. La explicación de qué se aprende en cada clase está en el README de cada parte, que es donde conviene entrar antes de abrir la primera clase.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 0 | Pensamiento computacional y el método políglota | 14 | 001–014 | método | ~21 h |
| 1 | Atlas y genealogía de los lenguajes | 14 | 015–028 | método | ~21 h |
| 2 | Herramientas, toolchains y anatomía de comandos | 12 | 029–040 | método | ~18 h |
| 3 | Valores, tipos y variables | 16 | 041–056 | código | ~40 h |
| 4 | Control del programa | 16 | 057–072 | código | ~40 h |
| 5 | Funciones y modularidad | 16 | 073–088 | código | ~40 h |
| 6 | Datos y estructuras | 18 | 089–106 | código | ~45 h |
| 7 | Paradigmas | 16 | 107–122 | código | ~40 h |
| 8 | Cómo funcionan los lenguajes | 16 | 123–138 | código | ~40 h |
| 9 | Ingeniería de software políglota | 16 | 139–154 | código | ~40 h |
| 10 | Interoperabilidad y fronteras entre lenguajes | 10 | 155–164 | código | ~25 h |
| 11 | Proyecto integrador políglota | 12 | 165–176 | proyecto | ~36 h |
🧭 Aprender a pensar el problema antes de elegir con qué escribirlo.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
La tesis y la brújula · 001–002
| # | Clase |
|---|---|
| ✅ 001 | Qué es programar y por qué comparar lenguajes: la tesis políglota |
| ✅ 002 | Las tres clases de diferencia: sintáctica, semántica y paradigmática |
Modelar el problema · 003–006
Del papel al algoritmo · 007–010
| # | Clase |
|---|---|
| ✅ 007 | Pseudocódigo neutral: escribir sin lenguaje |
| ✅ 008 | Trazado manual y ejecución simbólica |
| ✅ 009 | Complejidad y eficiencia: intuición de coste |
| ✅ 010 | Legibilidad, estilo e idiomática |
El método del curso en la práctica · 011–014
🧭 El árbol genealógico completo: por qué diez lenguajes bastan para leer decenas.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Cómo se lee el árbol · 015–016
| # | Clase |
|---|---|
| ✅ 015 | El árbol genealógico de los lenguajes: mapa general |
| ✅ 016 | Cómo nace y evoluciona un lenguaje: estándares, versiones y ecosistemas |
Las familias con representante en el núcleo · 017–021
Las familias que aportan ideas · 022–025
Sistemas, cálculo y legado · 026–028
| # | Clase |
|---|---|
| ✅ 026 | Familia de sistemas: C, C++, Rust, Zig |
| ✅ 027 | Familia array y científica: APL, R, Julia, Fortran, MATLAB |
| ✅ 028 | Lenguajes históricos y de nicho: COBOL, Fortran, Pascal, BASIC, Bash |
🧭 Del archivo de texto al proceso que corre: el toolchain de cada lenguaje.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Qué hay entre tu texto y un proceso · 029–031
Instalar y ejecutar · 032–033
| # | Clase |
|---|---|
| ✅ 032 | Instalación y gestión de versiones (pyenv, nvm, rustup, SDKMAN, phpenv) |
| ✅ 033 | Ejecutar: python, node, tsx, java, dotnet, go run, rustc, cc, php, sqlite3 |
Construir, depender y explorar · 034–036
Calidad, empaquetado y entorno · 037–040
🧭 La materia prima de todo programa: cómo cada lenguaje nombra, tipa, convierte y muta un valor.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Nombres y valores · 041–042
| # | Clase |
|---|---|
| ✅ 041 | Literales, valores, variables y constantes |
| ✅ 042 | Declaración, asignación e inicialización |
Los tipos primitivos, uno por uno · 043–048
Los dos ejes del sistema de tipos · 049–052
| # | Clase |
|---|---|
| ✅ 049 | Conversión de tipos: casting explícito vs. coerción implícita |
| ✅ 050 | Tipado estático vs. dinámico |
| ✅ 051 | Tipado fuerte vs. débil |
| ✅ 052 | Inferencia de tipos |
Ausencia, mutación y expresión · 053–056
🧭 Decidir, repetir y fallar: el flujo del programa y sus formas en diez lenguajes.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Decidir · 057–062
Repetir · 063–067
Repetir sin bucles · 068–069
| # | Clase |
|---|---|
| ✅ 068 | Funciones de orden superior: map, filter, reduce |
| ✅ 069 | Recursión y recursión de cola |
Salir del flujo y fallar bien · 070–072
| # | Clase |
|---|---|
| ✅ 070 | Control de flujo: break, continue, return, goto |
| ✅ 071 | Manejo de errores I: excepciones (try/catch/finally) |
| ✅ 072 | Manejo de errores II: resultados y valores (Result/Either/error de Go) |
🧭 La función como contrato: firma, paso de parámetros, cierres y fronteras de módulo.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
La firma como contrato · 073–078
Qué recibe realmente la función · 079–081
| # | Clase |
|---|---|
| ✅ 079 | Paso por valor |
| ✅ 080 | Paso por referencia |
| ✅ 081 | Semántica de movimiento y préstamo (Rust) |
Dónde viven los nombres · 082–085
| # | Clase |
|---|---|
| ✅ 082 | Alcance (scope) y sombreado (shadowing) |
| ✅ 083 | Cierres (closures) y captura de variables |
| ✅ 084 | Funciones puras y efectos secundarios |
| ✅ 085 | Funciones de primera clase y como valores |
De la función al proyecto · 086–088
| # | Clase |
|---|---|
| ✅ 086 | Módulos, paquetes y espacios de nombres |
| ✅ 087 | Visibilidad, encapsulación y contratos (public/private) |
| ✅ 088 | Importar, exportar y organizar un proyecto |
🧭 Dónde se guardan los datos, qué cuesta cada operación y qué significa realmente copiar.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Secuencias · 089–093
| # | Clase |
|---|---|
| ✅ 089 | Arreglos de tamaño fijo |
| ✅ 090 | Listas, vectores y arreglos dinámicos |
| ✅ 091 | Tuplas y registros posicionales |
| ✅ 092 | Rangos y secuencias |
| ✅ 093 | Cadenas como estructura de datos |
Colecciones por clave y por disciplina · 094–096
| # | Clase |
|---|---|
| ✅ 094 | Conjuntos (sets) y unicidad |
| ✅ 095 | Mapas / diccionarios / tablas hash |
| ✅ 096 | Pilas y colas |
Estructuras enlazadas · 097–098
| # | Clase |
|---|---|
| ✅ 097 | Árboles |
| ✅ 098 | Grafos |
Modelar un dato propio · 099–100
| # | Clase |
|---|---|
| ✅ 099 | Registros, structs y clases |
| ✅ 100 | Enumeraciones y tipos algebraicos (ADT / sum types) |
Qué significa copiar · 101–103
| # | Clase |
|---|---|
| ✅ 101 | Igualdad vs. identidad |
| ✅ 102 | Copia superficial vs. profunda; referencia vs. valor |
| ✅ 103 | Propiedad y ciclo de vida de los datos |
Sacar los datos del proceso · 104–106
| # | Clase |
|---|---|
| ✅ 104 | Archivos: leer y escribir texto y binario |
| ✅ 105 | JSON: serialización y deserialización |
| ✅ 106 | Otros formatos y persistencia: CSV, YAML, binarios, bases de datos |
🧭 Los ocho estilos de resolver: qué considera cada paradigma una pieza legítima de solución.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Qué es un paradigma · 107
| # | Clase |
|---|---|
| ✅ 107 | Qué es un paradigma y por qué importa |
Imperativo y sus herederos · 108–109
| # | Clase |
|---|---|
| ✅ 108 | Imperativo y estructurado |
| ✅ 109 | Procedimental y modular |
Orientación a objetos · 110–113
| # | Clase |
|---|---|
| ✅ 110 | Orientado a objetos: clases, objetos y estado |
| ✅ 111 | Herencia, composición y polimorfismo |
| ✅ 112 | Interfaces, traits y clases abstractas |
| ✅ 113 | OO basado en prototipos (JavaScript) |
Funcional · 114–116
| # | Clase |
|---|---|
| ✅ 114 | Funcional I: inmutabilidad y funciones puras |
| ✅ 115 | Funcional II: composición, currying y aplicación parcial |
| ✅ 116 | Funcional III: functores, mónadas y efectos (visión práctica) |
Declarativo y lógico · 117–118
| # | Clase |
|---|---|
| ✅ 117 | Declarativo: consultas y transformación (SQL) |
| ✅ 118 | Lógico: reglas, hechos y unificación (Prolog) |
Eventos, flujos y concurrencia · 119–122
| # | Clase |
|---|---|
| ✅ 119 | Orientado a eventos y callbacks |
| ✅ 120 | Reactivo y flujos de datos (streams) |
| ✅ 121 | Concurrente: hilos, tareas y canales |
| ✅ 122 | Asíncrono: async/await y promesas |
🧭 Lo que ocurre bajo el código: compilación, memoria, concurrencia y por qué falla lo que falla.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Del texto a la acción · 123–126
| # | Clase |
|---|---|
| ✅ 123 | Del código a la ejecución: fases de compilación |
| ✅ 124 | Compilador, intérprete y JIT |
| ✅ 125 | Bytecode y máquinas virtuales (JVM, CLR, V8) |
| ✅ 126 | AOT vs. JIT: costos y beneficios |
Dónde viven los datos · 127–129
| # | Clase |
|---|---|
| ✅ 127 | La pila (stack) y el marco de llamada |
| ✅ 128 | El heap y la asignación dinámica |
| ✅ 129 | Referencias, apuntadores y direcciones |
Las tres respuestas a «quién libera» · 130–132
| # | Clase |
|---|---|
| ✅ 130 | Gestión manual de memoria (C): malloc/free |
| ✅ 131 | Recolección de basura (GC) |
| ✅ 132 | RAII, propiedad y préstamos (Rust/C++) |
Hacer varias cosas a la vez · 133–136
Cuando algo falla · 137–138
| # | Clase |
|---|---|
| ✅ 137 | Errores: de sintaxis, de tipos, de enlace y de ejecución |
| ✅ 138 | Depuración: cómo se diagnostica en cada runtime |
🧭 Que funcione, que se construya igual siempre, que llegue a producción y que se pueda cambiar.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Comprobar que funciona · 139–142
| # | Clase |
|---|---|
| ✅ 139 | Pruebas unitarias por lenguaje |
| ✅ 140 | Pruebas de integración y el verificador de equivalencia |
| ✅ 141 | Depuradores: gdb, lldb, pdb y los de IDE |
| ✅ 142 | Registro (logging) y observabilidad |
Que se construya igual siempre · 143–145
| # | Clase |
|---|---|
| ✅ 143 | Dependencias, versiones y lockfiles |
| ✅ 144 | Compilación reproducible y empaquetado |
| ✅ 145 | Git y control de versiones para proyectos políglotas |
Que llegue a producción · 146–148
| # | Clase |
|---|---|
| ✅ 146 | Revisión de código y estándares |
| ✅ 147 | Integración continua (CI) multi-lenguaje |
| ✅ 148 | Entrega y despliegue |
Que se pueda cambiar · 149–151
| # | Clase |
|---|---|
| ✅ 149 | Diseño y arquitectura comparada |
| ✅ 150 | Refactorización segura |
| ✅ 151 | Patrones de diseño comparados entre lenguajes |
Que aguante · 152–154
| # | Clase |
|---|---|
| ✅ 152 | Rendimiento y perfilado (profiling) |
| ✅ 153 | Seguridad: entradas, memoria y dependencias |
| ✅ 154 | Mantenibilidad, documentación y deuda técnica |
🧭 Las fronteras entre lenguajes: FFI, ABI, serialización, contratos, Wasm e incrustación.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
La frontera íntima: mismo proceso · 155–158
La frontera por datos · 159–161
| # | Clase |
|---|---|
| ✅ 159 | Serialización entre lenguajes: JSON, Protobuf, MessagePack |
| ✅ 160 | Contratos de API: REST, gRPC y esquemas |
| ✅ 161 | Procesos y comunicación: stdin/stdout, sockets, colas |
Terrenos comunes · 162–163
| # | Clase |
|---|---|
| ✅ 162 | WebAssembly como objetivo común |
| ✅ 163 | Incrustar un lenguaje en otro (Lua, Python embebido) |
La decisión · 164
| # | Clase |
|---|---|
| ✅ 164 | Elegir el lenguaje correcto para cada componente |
🧭 Un sistema real con cinco componentes en cinco lenguajes, construido, probado, desplegado y defendido.
📂 Abrir el README de la parte — de qué trata, qué necesitas traer, qué sabrás hacer al terminar y qué se aprende en cada clase.
Diseño · 165–166
| # | Clase |
|---|---|
| ✅ 165 | El proyecto: un sistema con componentes en varios lenguajes |
| ✅ 166 | Diseño: responsabilidades y contratos entre componentes |
Los cinco componentes · 167–171
Datos, pruebas y despliegue · 172–174
| # | Clase |
|---|---|
| ✅ 172 | Persistencia y almacenamiento |
| ✅ 173 | Pruebas end-to-end del sistema completo |
| ✅ 174 | Empaquetado, contenedores y despliegue |
Defender y transferir · 175–176
| # | Clase |
|---|---|
| ✅ 175 | Documentación y defensa de las decisiones de lenguaje |
| ✅ 176 | Cierre: retrospectiva y transferencia a nuevos lenguajes |