Open Source Society University: hoja de ruta gratuita de autoaprendizaje en ciencias de la computación
(github.com/ossu)- El currículum de OSSU ofrece gratis una formación completa en ciencias de la computación mediante materiales en línea de universidades líderes de todo el mundo
- Reproduce la estructura de un plan de estudios universitario de nivel licenciatura en ciencias de la computación con introducción, núcleo, nivel avanzado y proyecto final
- Todas las clases y tareas son gratuitas o mayormente gratuitas, aunque algunas evaluaciones pueden tener costo
- Se mantiene de forma continua una activa red global de apoyo para estudiantes, incluyendo la comunidad de Discord y actualizaciones de materiales
- Cada persona puede ajustar el ritmo y elegir con flexibilidad según su situación, ya sea estudiando de forma independiente o en grupo
Qué es OSSU y por qué importa
OSSU (Open Source Society University) es un currículo de código abierto diseñado para que cualquier persona pueda formarse por su cuenta, sin costo, con un nivel equivalente al de una licenciatura formal en ciencias de la computación. Utiliza clases y materiales abiertos de universidades de primer nivel como Harvard, MIT y Princeton, y su objetivo no es solo transmitir conocimientos aislados, sino ofrecer una experiencia de aprendizaje equilibrada basada en teoría, práctica y aplicación.
- Todos los materiales de estudio se seleccionan entre recursos gratuitos de alta calidad disponibles en línea
- Refleja rigurosamente los estándares internacionales de formación base en ingeniería y ciencias de la computación, como CS2013
- Está dirigido principalmente a personas capaces de automotivarse, mantener hábitos de estudio constantes y apoyarse en una comunidad global de aprendizaje
Estructura y características del currículo
- Introducción (Introduction to CS): permite conocer los conceptos básicos y el atractivo de las ciencias de la computación y la programación. Incluye programación en Python, teoría de la computación, estructuras de datos básicas y algoritmos
- Núcleo (Core CS): corresponde a un currículo universitario hasta el tercer año, e incluye programación (funcional, orientada a objetos, diseño de software), matemáticas (matemática discreta, estadística, probabilidad, cálculo), sistemas (arquitectura de computadoras, SO, redes), teoría (algoritmos, problemas NP, etc.), seguridad, aplicaciones y ética
- Avanzado (Advanced CS): corresponde al último año. Se pueden elegir áreas de interés entre programación avanzada, sistemas, teoría, ciberseguridad y matemáticas avanzadas
- Proyecto final: permite realizar un proyecto real aplicando lo aprendido, además de compartir y validar resultados con colegas de aprendizaje de todo el mundo. Puede servir como evidencia de habilidades prácticas y como portafolio para empleo
Modalidad de estudio y costos
- El currículo puede estudiarse de forma independiente o en grupo
- Se recomienda cursar cada etapa en orden, pero si ya dominas algún contenido también puedes omitirlo
- Todas las clases se ofrecen gratis en línea. En algunas plataformas (Coursera, edX, etc.), la evaluación de tareas, exámenes o proyectos puede tener costo, pero en la mayoría de los casos el aprendizaje en sí es gratuito. También se orienta sobre apoyo financiero (becas/Financial Aid) para reducir la carga económica
- Se ofrece una plantilla de Google Sheets para ayudar a gestionar el progreso de estudio y la fecha estimada de finalización
Comunidad y apoyo
- Hay un servidor de Discord para participantes, donde se dan activamente discusiones de cursos, preguntas y conexiones entre pares
- Existen canales de retroalimentación activos, como GitHub Issues y propuestas de mejora del currículo
- Es posible agregar el avance o finalización de OSSU al perfil de LinkedIn
Se recomienda revisar el currículo más reciente en el sitio oficial y el repositorio de GitHub
Lista detallada del currículo
Requisitos previos
- El núcleo de CS requiere matemáticas de nivel preparatoria/secundaria superior (álgebra, geometría y etapa previa al cálculo)
- El nivel avanzado de CS solo puede elegirse después de completar todo el núcleo
- Las materias de Advanced systems requieren conocimientos básicos de física de nivel preparatoria/secundaria superior
Introducción a CS (Introduction to CS)
- Primer acercamiento a las ciencias de la computación. Presenta operaciones básicas, programación imperativa, estructuras de datos, algoritmos, etc.
- Curso obligatorio: 'Introduction to Computer Science and Programming using Python' (14 semanas)
Núcleo de CS (Core CS)
Programación
- Práctica amplia en programación funcional/orientada a objetos, testing, patrones, tipado y diversidad de lenguajes
- Systematic Program Design, Programming Languages (A–C), Object-Oriented Design, Software Architecture, etc.
Matemáticas
- Incluye matemática discreta, demostración matemática, estadística básica, notación O, probabilidad y cálculo
Herramientas y entorno de desarrollo
- Herramientas esenciales para el trabajo real: terminal, shell scripting, vim, línea de comandos y control de versiones (
git)
Sistemas
- Comprensión integral de cómo funciona una computadora, desde hardware hasta sistema operativo y redes
- Ejemplos: proyecto Nand to Tetris, OS Three Easy Pieces, Networking, etc.
Teoría
- Incluye análisis de algoritmos, divide y vencerás, grafos, programación dinámica, problemas NP, etc.
Seguridad
- Fundamentos de seguridad informática, programación segura, análisis de vulnerabilidades y materias optativas sobre redes/criptografía
Aplicaciones
- Abarca áreas prácticas como bases de datos, machine learning, gráficos por computadora e ingeniería de software
Ética
- Enfatiza la ética indispensable para profesionales de tecnología: contexto social de la tecnología, profesionalismo, propiedad intelectual y privacidad de datos
CS avanzado (Advanced CS)
- Optativas según carrera o intereses: programación paralela, compiladores, lenguajes como Haskell/Prolog, debugging/testing de software
- Amplio abanico de opciones como arquitectura de computadoras, análisis numérico/lógica/probabilidad, teoría de la computación, seguridad informática y construcción de sistemas
Proyecto final (Final Project)
- Selección, diseño, implementación y publicación de un proyecto práctico
- Ejemplos de opciones: servicios full-stack, robótica, data mining, big data, IoT, cloud computing, data science y desarrollo de videojuegos
- Puede realizarse de forma autodirigida o usando cursos recomendados
Después de completar el aprendizaje
- Certificación de adquisición de conocimientos equivalentes a una licenciatura en el área de CS
- Recomendaciones vinculadas a preparación para empleo, lecturas avanzadas (se proporciona una lista) y encuentros presenciales de desarrolladores
- Se fomenta explorar nuevas tecnologías (lenguajes como Elixir/Rust/Idris, etc.)
Reglas de operación y equipo
- Cumplir el código de conducta de OSSU
- Se explica cómo mostrar y gestionar el progreso personal en GitHub (usando kanban)
Principales responsables de OSSU
- Eric Douglas (fundador de OSSU), Josh Hanson (maintainer técnico), Waciuma Wanjohi (maintainer académico), además de otros colaboradores de todo el mundo
Cierre
OSSU abre el camino para que cualquier persona en el mundo desarrolle gratis capacidades de nivel licenciatura en ciencias de la computación y pueda entrar con amplitud al trabajo práctico y a distintas trayectorias del sector IT moderno.
La combinación de avance flexible, estándares rigurosos, comunidad global y materiales gratuitos de alta calidad es una gran fortaleza frente a otros currículos abiertos.
4 comentarios
> Creo que ese tipo de artículos que dicen “no estudies compu” están perdiendo el verdadero punto.
La traducción quedó bien buena, qué curioso jajaja
OSSU Open Source Society University - estudiar Computer Science por cuenta propia
Parece que lo presentaron en los inicios de GeekNews. Desde entonces se han agregado bastantes cosas.
Opiniones de Hacker News
Como ingeniero con experiencia, creo que OSSU es realmente un gran lugar si quieres ayudar a quienes están aprendiendo
Dirijo un programa educativo que ayuda a estudiantes a estudiar ingeniería en computación por su cuenta. A veces también usamos el currículo de OSSU como material de referencia
El aprendizaje autodirigido tiene muchas ventajas, pero es importante que los estudiantes también sepan que hay cosas a las que deben poner atención
Tienes que trabajar mucho más por tu cuenta el “señalamiento” y el networking, y suele faltarte parte de los beneficios sociales que tendrías al pertenecer a una universidad
No tener título puede considerarse un estado de “marked”; para una explicación, ver aquí
Cuando cometes errores o surgen dificultades, es fácil atribuir la causa a no tener título
A algunos reclutadores les parece políticamente riesgoso contratar a alguien sin título, así que incluso entrar puede ser difícil
No es algo imposible de superar, pero por eso nosotros lo preparamos y trabajamos desde el inicio
La ventaja del autoaprendizaje es que permite aprender más rápido y entender todo con contexto, sin repetir procesos inútiles
Si te das cuenta de que te faltan bases, puedes volver y aprenderlas en ese momento
Creo que este método es una forma de aprendizaje inevitable para trabajos técnicos, pero no sirve para todos los estudiantes
En la práctica, es una pena que muchas veces el autoaprendizaje sea algo “impuesto” porque la situación financiera no permite ir a la universidad
Si no conoces bien los trade-offs, puede ser todavía más difícil
Referencia: Divepod
He tenido experiencia guiando el proceso de autoaprendizaje de varias personas
Cuando salí de la preparatoria, por inmadurez no pude terminar bien una carrera de CS y desperdicié buenas oportunidades
Personalmente, creo que Teach Yourself CS es una mejor alternativa
Yo soy un caso que demuestra que sí se puede construir una carrera solo con autoaprendizaje
Ya llevo más de 20 años trabajando en la industria
Pero, si eliges este camino, definitivamente hay empresas y roles a los que “nunca” podrás llegar
Por lo general, esas empresas son las mejores, las que pagan más y las que ofrecen mejores condiciones
Más que el título en sí, lo importante es la red de exalumnos. Existe un “gran club” donde contratan sí o sí a gente de su misma escuela
Si aprendes por tu cuenta, nunca tendrás esa red
¿La realidad? Terminas con los trabajos que todos los demás rechazan. Lugares absurdos, estafas, startups sin dinero y empresas ya en crisis
Incluso si muy de vez en cuando consigues un buen puesto, es difícil quedarse mucho tiempo
El sueldo es más bajo y el riesgo de que se aprovechen de ti es mucho mayor
También es difícil recibir múltiples ofertas, así que tu posición en el mercado se reduce
Por eso, toda tu carrera puede sentirse como si estuviera en una trayectoria financiera completamente distinta
Buscar trabajo es mucho más difícil, tienes que esforzarte el doble
Tú mismo y tus colegas suelen dudar de si “de verdad estás a la altura”
Un solo error puede tener consecuencias enormes
Aun así, es mejor que no hacer nada, pero si tienes la oportunidad, creo que es mejor ir a la escuela
No quiero menospreciar tu experiencia, pero yo tengo experiencia trabajando de forma 100% autodidacta en distintos tipos de empresas (grandes corporativos, unicornios, startups, etc.)
Trabajé varios años como desarrollador de software y luego volví a la escuela para sacar un título en CS
Esto es cierto hasta cierto punto, pero sobre todo al principio y cuando tu nivel está por debajo del promedio de tu grupo de colegas
Tengo rasgos cercanos al ADHD y también estoy en cierta medida dentro del espectro autista
Algo que se olvida mucho en esta conversación es que la razón principal para estudiar ciencias de la computación no tiene por qué ser necesariamente conseguir trabajo o mejorar habilidades laborales
Me pregunto si el hecho de que el currículo esté compuesto solo por cursos “gratuitos y open source” no termina siendo una limitación
Creo que, si realmente quieres estudiar bien, no deberías dudar en invertir dinero en materiales de calidad
Coincido con esto
Creo que el título compensa la mayoría de las desventajas sociales
En muchos comentarios se mezclan dos ideas: que la escuela te crea una red de contactos, o que solo contratan gente de ciertas universidades
Es verdad que tener contactos de la universidad o de tu trayectoria profesional aumenta las oportunidades laborales
Pero a medida que avanza tu carrera, la fuerza de los contactos construidos después de la universidad se vuelve mayor
Los puestos que exigen un título de cierta universidad o un doctorado tienen más valor como “señal” que como red
Es decir, son una señal confiable para el contratante sin necesidad de preguntar más
Quien aprende por su cuenta tiene que rodear eso o hacer un esfuerzo adicional
Tiene que orientarse a llamar la atención por sus relaciones o su trabajo, o a conseguir recomendaciones para saltarse el proceso normal de contratación y así obtener oportunidades
Cuando escucho eso de “las oportunidades desaparecen por completo”, me acuerdo de la idea de que “la suerte no es una estrategia, pero aumentar el número de intentos sí aumenta la probabilidad de tener suerte”
Me pregunto cuál es exactamente la meta
En este tipo de debates me da un poco de pena ver que ambos lados adoptan posturas demasiado defensivas
Está realmente genial.