Universidad de la Sociedad del Código Abierto
¡Camino hacia una educación autodidacta y gratuita en Informática!
- Resumen
- Comunidad
- Plan de estudios
- Código de conducta
- Equipo
Resumen
El plan de estudios de la OSSU es una formación completa en informática utilizando materiales online.No es simplemente para la formación de la carrera o el desarrollo profesional.Es para aquellos que quieren una base adecuada y completa en conceptos fundamentales para todas las disciplinas de la informática, y para aquellos que tienen la disciplina, la voluntad y (¡lo más importante!) buenos hábitos para obtener esta educación en gran parte por su cuenta, pero con el apoyo de una comunidad mundial de compañeros de aprendizaje.
Está diseñado de acuerdo con los requisitos de grado de las carreras de ciencias de la computación, menos los requisitos de educación general (no CS), ya que se supone que la mayoría de las personas que siguen este plan de estudios ya están educados fuera del campo de CS.Los cursos en sí están entre los mejores del mundo, a menudo procedentes de Harvard, Princeton, MIT, etc.,pero han sido elegidos específicamente para cumplir con los siguientes criterios.
Los cursos deben:
- Estar abiertos a la inscripción
- Ejecutarse regularmente (idealmente en formato autodidacta, de lo contrario se ejecutan varias veces al año)
- Ser de alta calidad en general en los materiales de enseñanza y los principios pedagógicos
- Cumplir con los estándares curriculares de la CS 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
- Intro CS: para que los estudiantes prueben la CS y vean si es adecuada para ellos
- Core CS: corresponde aproximadamente a los tres primeros años de un plan de estudios de ciencias de la computación, tomando clases que todas las carreras deberían tomar
- Advanced CS: corresponde aproximadamente al último año de un plan de estudios de ciencias de la computación, tomando materias optativas de acuerdo a los intereses del estudiante
- Proyecto Final: un proyecto para que los estudiantes validen, consoliden y muestren sus conocimientos, para ser evaluados por sus pares a nivel mundial
- Recomendamos hacer todos los cursos en Core CS, sólo saltando un curso cuando esté seguro de que ya ha aprendido el material previamente.
- Para simplificar, recomendamos trabajar a través de los cursos (especialmente Core CS) en orden de arriba a abajo, ya que ya han sido ordenados topológicamente por sus prerrequisitos.
- Los cursos en Advanced CS son optativos. Elija un tema (por ejemplo, programación avanzada) en el que quiera convertirse en un experto y tome todos los cursos bajo ese título. También puedes crear tu propia asignatura personalizada, pero te recomendamos que obtengas la validación de la comunidad sobre el tema que elijas.
- ¡Tenemos un servidor de discordia! Esta debería ser tu primera parada para hablar con otros estudiantes de OSSU. Por qué no te presentas ahora mismo? Únete al Discord de OSSU
- También puedes interactuar a través de los issues de GitHub. Si hay un problema con un curso, o hay que hacer un cambio en el plan de estudios, este es el lugar para iniciar la conversación. Lee más aquí.
- Suscríbete a nuestro boletín de noticias.
- ¡Añade la Universidad de la Sociedad de Código Abierto a tu perfil de Linkedin!
- Nota: Hay una aplicación firebase sin mantenimiento y obsoleta que puedes encontrar al buscar OSSU. Puedes ignorarla con seguridad. Lee más en el FAQ.
- Requisitos previos
- Introducción a la CS
- Introducción a la Programación
- Introducción a la Informática. Ciencias de la Computación
- Núcleo de CS
- Núcleo de programación
- Núcleo de matemáticas
- Herramientas de CS
- Núcleo de sistemas
- Núcleo de teoría
- Núcleo de aplicaciones
- Núcleo de seguridad
- CSeguridad avanzada
- Programación avanzada
- Sistemas avanzados
- Teoría avanzada
- Aplicaciones avanzadas aplicaciones
- Proyecto final
- Requisitos previos
- El núcleo de CS asume que el estudiante ya ha cursado matemáticas de secundaria, incluyendo álgebra, geometría y precálculo.
- El CS Avanzado asume que el estudiante ya ha cursado la totalidad del CS Básico y tiene los conocimientos suficientes para decidir qué asignaturas optativas cursar.
- Nótese que los sistemas avanzados asumen que el estudiante ha cursado una asignatura de física básica (p.g. AP Física en la escuela secundaria).
Introducción CS
Introducción a la programación
Si nunca has escrito un bucle for, o no sabes lo que es una cadena en la programación, comienza aquí. Este curso es a ritmo propio, lo que te permite ajustar el número de horas que dedicas a la semana para satisfacer tus necesidades.
Temas tratados:
simple programs
simple data structures
Cursos Duración Esfuerzo Requisitos Discusión Python para todos 10 semanas 10 horas/semana ninguna chat Introducción a la Informática
Este curso te introducirá en el mundo de la informática. Los estudiantes que han sido introducidos a la programación, ya sea desde los cursos anteriores o a través del estudio en otro lugar, deben tomar este curso para un sabor del material que viene. Si terminas el curso con ganas de más, ¡es probable que Ciencias de la Computación sea para ti!
Temas cubiertos:
computation
imperative programming
basic data structures and algorithms
and more
Cursos Duración Esfuerzo Requisitos Discusión Introducción a la informática y a la programación con Python (alt) 9 semanas 15 horas/semana Algebra de álgebra escolar chat Core CS
Todos los cursos bajo Core CS son obligatorios, a menos que se indique lo contrario.
Core de programación
Temas tratados:
functional programming
design for testing
program requirements
common design patterns
unit testing
object-oriented design
static typing
dynamic typing
ML-family languages (via Standard ML)
Lisp-family languages (via Racket)
Ruby
and more
Los cursos How to Code se basan en el libro de texto How to Design Programs. La primera edición está disponible gratuitamente en línea e incluye conjuntos de problemas y soluciones. Se anima a los estudiantes a realizar estas tareas.
Cursos Duración Esfuerzo Requisitos Discusión Cómo codificar – Datos simples 7 semanas 8-10 horas/semana ninguna chat Cómo codificar – Datos complejos 6 semanas 8-10 horas/semana Cómo codificar: Datos Simples Chat Lenguajes de Programación, Parte A 5 semanas 4-8 horas/semana Cómo Programar (Escuchar al instructor) Chat Lenguajes de Programación, Parte B 3 semanas 4-8 horas/semana Lenguajes de programación, Parte A chat Lenguajes de Programación, Parte C 3 semanas 4-8 horas/semana Lenguajes de Programación, Parte B chat Objetivos de Matemáticas
Los estudiantes deben elegir uno de los siguientes temas: cálculo, álgebra lineal, lógica o probabilidad.
Cálculo
Cursos Duración Esfuerzo Requisitos previos Discusión Cálculo 1A: Diferenciación 13 semanas 6-10 horas/semana Matemáticas de bachillerato chat Cálculo 1B: Integración 13 semanas 5-10 horas/semana Cálculo 1A chat Cálculo 1C: Sistemas de coordenadas & Series infinitas 6 semanas 5-10 horas/semana Cálculo 1B chat Álgebra lineal
Cursos Duración Esfuerzo Requisitos Discusión Esencia del Álgebra Lineal -. – Matemáticas de bachillerato Chat Algebra lineal 14 semanas 12 horas/semana .
Esencia del Álgebra Lineal Chat Lógica
Cursos Duración Esfuerzo Requisitos Discusión Introducción a la lógica 10 semanas 4-.8 horas/semana teoría de conjuntos chat Probabilidad
Cursos Duración Esfuerzo Requisitos Discusión Probabilidad 24 semanas 12 horas/semana Diferenciación e Integración chat Matemáticas básicas
Además de su optativa de matemáticas, los estudiantes deben completar el siguiente curso de matemáticas discretas.
Temas tratados:
discrete mathematics
mathematical proofs
basic statistics
O-notation
discrete probability
and more
Cursos Duración Esfuerzo Notas Requisitos Discusión Matemáticas para Informática (alt) 13 semanas 5 horas/semana Una versión alternativa con soluciones a los conjuntos de problemas está aquí. Los estudiantes que tengan dificultades pueden considerar primero la Especialización en Matemáticas Discretas. Es más interactivo pero menos completo, y cuesta dinero para desbloquear la interactividad completa. Cálculo 1C chat Herramientas de CS
Entender la teoría es importante, pero también se espera que crees programas. Hay una serie de herramientas muy utilizadas para facilitar ese proceso. Apréndelas ahora para facilitar tu futuro trabajo escribiendo programas.
Temas tratados:
terminals and shell scripting
vim
command line environments
version control
and more
Cursos Duración Esfuerzo Requisitos Discusión El semestre que le falta a tu formación en CS 2 semanas 12 horas/semana -. chat Sistemas centrales
Temas tratados:
procedural programming
manual memory management
boolean algebra
gate logic
memory
computer architecture
assembly
machine language
virtual machines
high-level languages
compilers
operating systems
network protocols
and more
Cursos Duración Esfuerzo Texto Adicional / Tareas Requisitos previos Discusión Construye un ordenador moderno desde los primeros principios: De Nand a Tetris (alt) 6 semanas 7-13 horas/semana Lenguaje de programación tipo C chat Construye un ordenador moderno desde los primeros principios: De Nand a Tetris Parte II 6 semanas 12-18 horas/semana – uno de estos lenguajes de programación, De Nand a Tetris Parte I charla Sistemas Operativos: Tres piezas fáciles 10-12 semanas 6 horas/semana – algoritmos, es útil la familiaridad con C chat Introducción a las redes de ordenadores 8 semanas 4-12 horas/semana Tarea 1
Tarea 2
Tarea 3
Tarea 4
Problemas interactivosÁlgebra, probabilidad, CS básico chat Teoría básica
Temas tratados:
divide and conquer
sorting and searching
randomized algorithms
graph search
shortest paths
data structures
greedy algorithms
minimum spanning trees
dynamic programming
NP-completeness
and more
Cursos Duración Esfuerzo Requisitos Discusión Dividir y conquistar, Ordenar y Buscar, y Algoritmos Aleatorios 4 semanas 4-8 horas/semana cualquier lenguaje de programación, Matemáticas para la Informática chat Búsqueda de grafos, caminos más cortos, y estructuras de datos 4 semanas 4-8 horas/semana Divide y vencerás, Ordenación y Búsqueda, y Algoritmos Aleatorios chat Algoritmos de Varias Vías, Árboles de Mínima Extensión, y Programación Dinámica 4 semanas 4-8 horas/semana Búsqueda de Grafos, Shortest Paths, and Data Structures chat Shortest Paths Revisited, NP-Complete Problems and What To Do About Them 4 weeks 4-8 hours/week Greedy Algorithms, Árboles de extensión mínima, and Dynamic Programming chat Core Security
Temas tratados
Confidentiality, Integrity, Availability
Secure Design
Defensive Programming
Threats and Attacks
Network Security
Cryptography
and more
Nota: Estos cursos están recomendados provisionalmente. Hay una solicitud de comentarios abierta sobre la selección de cursos de seguridad. Se anima a los colaboradores a que comparen los distintos cursos en la RFC y ofrezcan sus comentarios.
Cursos Duración Esfuerzo Requisitos previos Discusión Seguridad de la información: Contexto e Introducción 5 semanas 3 horas/semana – chat Principios de la Codificación Segura 4 semanas 4 horas/semana -. Chatea Identificación de Vulnerabilidades de Seguridad 4 horas/semana – chat Elige uno de los siguientes:
Cursos Duración Esfuerzo Requisitos Discusión Identificación de vulnerabilidades de seguridad en programación C/C++ 4 semanas 5 horas/semana -. chat Explotación y seguridad de vulnerabilidades en aplicaciones Java 4 semanas 5 horas/semana – chat Aplicaciones básicas
Temas tratados:
Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
raytracing
and more
Cursos Duración Esfuerzo Requisitos Discusión Bases de datos: Modelado y Teoría 2 semanas 10 horas/semana programación de núcleo chat Bases de Datos: Bases de datos relacionales y SQL 2 semanas 10 horas/semana programación básica chat Bases de datos: Datos Semiestructurados 2 semanas 10 horas/semana Programación de núcleo chat Aprendizaje Automático 11 semanas 4-.6 horas/semana Álgebra lineal Chat Informática 6 semanas 12 horas/semana C++ o Java, álgebra lineal chat Ingeniería del software: Introducción 6 semanas 8-10 horas/semana Programación Básica, y un proyecto de tamaño considerable chat Proyecto Capstone de Desarrollo de Software 6-7 semanas 8-10 horas/semana Ingeniería de Software: Introducción chat CS Avanzado
Después de completar cada curso requerido en Core CS, los estudiantes deben elegir un subconjunto de cursos de CS Avanzado basado en el interés.No es necesario tomar todos los cursos de una subcategoría.Pero los estudiantes deben tomar todos los cursos que son relevantes para el campo en el que pretenden entrar.
El estudio de CS Avanzado debe entonces terminar con una de las Especializaciones bajo aplicaciones Avanzadas.El Capstone de una Especialización, si se toma, puede actuar como el proyecto Final, si es permitido por el Código de Honor del curso.Si no, o si un estudiante elige no tomar el Capstone, entonces un proyecto Final separado tendrá que ser hecho para completar este plan de estudios.
Programación avanzada
Temas tratados:
debugging theory and practice
goal-oriented programming
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more
Cursos Duración Esfuerzo Requisitos Programación paralela 4 semanas 6-8 horas/semana Programación Scala Compiladores 9 semanas 6-8 horas/semana ninguna Introducción a Haskell 14 semanas – – Aprende Prolog ¡Ya! (alt)* 12 semanas – – Depuración de software 8 semanas 6 horas/semana Python, programación orientada a objetos Probación de software 4 semanas 6 horas/semana Python, experiencia en programación Arquitectura de software & Diseño 8 semanas 6 horas/semana ingeniería de software en Java (*) libro de Blackburn, Bos, Striegnitz (compilado a partir de la fuente, redistribuido bajo licencia CC)
Sistemas avanzados
Temas tratados:
digital signaling
combinational logic
CMOS technologies
sequential logic
finite state machines
processor instruction sets
caches
pipelining
virtualization
parallel processing
virtual memory
synchronization primitives
system call interface
and more
Cursos Duración Esfuerzo Requisitos previos Estructuras de computación 1: Circuitos digitales 10 semanas 6 horas/semana Nand2Tetris II Estructuras de computación 2: Arquitectura de Computadores 10 semanas 6 horas/semana Estructuras de Computación 1 Estructuras de Computación 3: Organización de ordenadores 10 semanas 6 horas/semana Estructuras de computación 2 Teoría avanzada
Temas tratados:
formal languages
Turing machines
computability
event-driven concurrency
automata
distributed shared memory
consensus algorithms
state machine replication
computational geometry theory
propositional logic
relational logic
Herbrand logic
game trees
and more
Cursos Duración Esfuerzo Requisitos Teoría de la Computación (Conferencias) 8 semanas 10 horas/semana Matemática discreta, lógica, algoritmos Geometría computacional 16 semanas 8 horas/semana algoritmos, C++ Teoría de juegos 8 semanas 3 horas/semana pensamiento matemático, probabilidad, cálculo Aplicaciones avanzadas
Todas estas Especializaciones de Coursera terminan con un proyecto Capstone.Dependiendo del curso, puedes utilizar el Capstone como tu Proyecto Final para este plan de estudios de Informática.Ten en cuenta que hacer una Especialización con el Capstone al final siempre cuesta dinero.Así que si no deseas gastar dinero o utilizar el Capstone como tu Final, puede ser posible tomar los cursos de la Especialización de forma gratuita mediante la búsqueda manual de ellos, pero no todos permiten esto.
Cursos Duración Esfuerzo Requisitos Robótica moderna (Especialización) 26 semanas 2-.5 horas/semana Física a nivel de estudiante de primer año, álgebra lineal, cálculo, ecuaciones diferenciales ordinarias lineales Minería de datos (Especialización) 30 semanas 2-5 horas/semana aprendizaje automático Big Data (Especialización) 30 semanas 3-5 horas/semana ninguna Internet de las Cosas (Especialización) 30 semanas 1-5 horas/semana fuerte programación Cloud Computing (Especialización) 30 semanas 2-6 horas/semana Programación en C++ Fullstack Open 12 semanas 6 horas/semana Programación Ciencia de Datos (Especialización) 43 semanas 1-6 horas/semana ninguna Programación Funcional en Scala (Especialización) 29 semanas 4-5 horas/semana Un año de experiencia en programación Diseño y Desarrollo de Juegos con Unity 2020 (Especialización) 6 meses 5 horas/semana programación, diseño interactivo Proyecto final
La UniversidadOSS está enfocada a proyectos.Se te anima a que realices las tareas y los exámenes de cada curso, pero lo que realmente importa es si puedes utilizar tus conocimientos para resolver un problema del mundo real.
Después de haber superado todo el Core CS y las partes de Advanced CS relevantes para ti, debes pensar en un problema que puedas resolver utilizando los conocimientos que has adquirido.No sólo el trabajo en un proyecto real se ve muy bien en un currículum, sino que el proyecto también validará y consolidará tus conocimientos.Puedes crear algo completamente nuevo, o puedes encontrar un proyecto existente que necesite ayuda a través de sitios web comoCodeTriage oFirst Timers Only.
Otra opción es utilizar el proyecto Capstone de cursar una de las Especializaciones en Aplicaciones Avanzadas; que esto tenga o no sentido depende del curso, del proyecto, y de si el Código de Honor del curso te permite o no mostrar tu trabajo públicamente.En algunos casos, puede no estar permitido; ¡no viole el Código de Honor de su curso!
¡Ponga la insignia OSSU-CS en el README de su repositorio!
- Markdown:
(https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)
- HTML:
<a href="https://github.com/ossu/computer-science"><img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg"></a>
Evaluación
Al terminar tu proyecto final, envía la información de tu proyecto a PROJECTSvia un pull request y utiliza nuestros canales de la comunidad para anunciarlo a tus compañeros.
Tus compañeros y mentores de OSSU evaluarán entonces tu proyecto de manera informal.No serás «calificado» en el sentido tradicional – cada uno tiene sus propias medidas para lo que considera un éxito.El propósito de la evaluación es actuar como tu primer anuncio al mundo de que eres un científico de la computación y obtener experiencia escuchando la retroalimentación – tanto positiva como negativa – y tomándola con calma.
La evaluación final del proyecto tiene un segundo propósito: evaluar si OSSU, a través de su comunidad y plan de estudios, tiene éxito en su misión de guiar a los estudiantes independientes en la obtención de una educación de clase mundial en ciencias de la computación.
Trabajo cooperativo
Puedes crear este proyecto solo o con otros estudiantes¡ Nos encanta el trabajo cooperativo¡ Utiliza nuestros canales para comunicarte con otros compañeros para combinar y crear nuevos proyectos¡
¿Qué lenguajes de programación debo utilizar?
Amigo, aquí está la mejor parte de la libertad¡ Puedes utilizar cualquier lenguaje que quieras para completar el proyecto final.
Lo importante es interiorizar los conceptos centrales y poder utilizarlos con cualquier herramienta (lenguaje de programación) que desees.
Felicidades
Después de completar los requisitos del plan de estudios anterior, habrás completado el equivalente a una licenciatura completa en Informática. Enhorabuena!
¿Qué es lo siguiente para ti? Las posibilidades son ilimitadas y se superponen:
- ¡Busca un trabajo como desarrollador!
- Revisa las lecturas para encontrar libros clásicos que puedas leer y que afinen tus habilidades y amplíen tus conocimientos.
- Únete a un meetup de desarrolladores local (por ejemplo, a través de meetup.com).
- Preste atención a las tecnologías emergentes en el mundo del desarrollo de software:
- Explore el modelo de actor a través de Elixir, un nuevo lenguaje de programación funcional para la web basado en la máquina virtual Erlang, de eficacia probada.
- Explore el préstamo y los tiempos de vida a través de Rust, un lenguaje de sistemas que logra la seguridad de la memoria y los hilos sin un recolector de basura.
- Explore los sistemas de tipos dependientes a través de Idris, un nuevo lenguaje inspirado en Haskell con un soporte sin precedentes para el desarrollo orientado a tipos.
Código de conducta
Código de conducta de la UASD.
Cómo mostrar tu progreso
- Crea una cuenta en Trello.
- Copia este tablero a tu cuenta personal.Consulta cómo copiar un tablero aquí.
Ahora que tienes una copia de nuestro tablero oficial, sólo tienes que pasar las tarjetas a la columna
Doing
o a la columnaDone
según vayas avanzando en tu estudio.También tenemos etiquetas para ayudarte a tener más control a través del proceso.El significado de cada una de estas etiquetas es:
-
Main Curriculum
: las tarjetas con esa etiqueta representan cursos que aparecen en nuestro plan de estudios. -
Extra Resources
: las tarjetas con esa etiqueta representan cursos que fueron agregados por el estudiante. -
Doing
: las tarjetas con esa etiqueta representan cursos que el estudiante está haciendo actualmente. -
Done
: las tarjetas con esa etiqueta representan cursos terminados por el alumno.Esas tarjetas también deben tener el enlace de al menos un proyecto/artículo construido con los conocimientos adquiridos en dicho curso. -
Section
: las tarjetas con esa etiqueta representan la sección que tenemos en nuestro plan de estudios.Esas tarjetas con la etiquetaSection
son sólo para ayudar a la organización de la columna Hecho.Debes poner las tarjetas del Curso debajo de la tarjeta de su respectiva Sección. - Eric Douglas: fundador de OSSU
- hanjiexi: lead technical maintainer
- waciumawanjohi: lead academic maintainer
- Contributors
La intención de este tablero es proporcionar a nuestros alumnos una forma de seguir su progreso, y también la posibilidad de mostrar su progreso a través de una página pública para amigos, familiares, empleadores, etc.Puedes cambiar el estado de tu tablero para que sea público o privado.
Equipo
.
Cuando ningún curso cumple con los criterios anteriores, el trabajo del curso se complementa con un libro.Cuando hay cursos o libros que no encajan en el plan de estudios pero que, por lo demás, son de alta calidad, pertenecen a extras/cursos o a extras/lecturas.
Organización. El plan de estudios está diseñado de la siguiente manera:
Duración. Es posible terminar en unos 2 años si se planifica cuidadosamente y se dedican unas 20 horas/semana a los estudios. Los alumnos pueden utilizar esta hoja de cálculo para estimar su fecha de finalización. Si hace una copia personal puede introducir sus fechas reales de finalización del curso en la hoja Curriculum Data
y obtener estimaciones de finalización actualizadas.
Coste. Todo o casi todo el material del curso está disponible de forma gratuita. Sin embargo, algunos cursos pueden cobrar dinero por las tareas/pruebas/proyectos a calificar.Tenga en cuenta que tanto Coursera como edX ofrecen ayuda financiera.
Decida cuánto o cuán poco gastar en función de su propio tiempo y presupuesto;¡sólo recuerde que no puede comprar el éxito!
Proceso. Los estudiantes pueden trabajar a través del plan de estudios solo o en grupos, en orden o fuera de orden.
Política de contenidos. ¡Si planeas mostrar algunos de tus trabajos del curso públicamente, debes compartir sólo los archivos que te sean permitidos.NO faltes al código de conducta que firmaste al principio de cada curso!
Cómo contribuir
Obteniendo ayuda (Detalles sobre nuestras FAQ y chat)
Comunidad
Currículo
Versión del currículo: 8.0.0
(ver CHANGELOG)