- El curso "Mathematics for Computer Science" de MIT OpenCourseWare ofrece los fundamentos matemáticos esenciales para ciencias de la computación e ingeniería de software
- Cubre temas como combinatoria, teoría de grafos y matemáticas discretas, con énfasis en fortalecer la capacidad de resolver problemas de ciencias de la computación
- Los materiales del curso incluyen notas de clase, ejercicios y soluciones, lo que resulta de gran ayuda para un aprendizaje práctico
- Este curso puede aplicarse tanto en la práctica profesional como en investigación, en áreas como diseño de algoritmos, teoría de la computación y verificación de errores
- Es de acceso gratuito para cualquier persona y está basado en el currículo estándar del MIT
Descripción general del curso
- "Mathematics for Computer Science" de MIT OpenCourseWare es un curso matemático fundamental para estudiantes de ciencias de la computación e ingeniería eléctrica
- Entre sus temas principales se incluyen combinatoria, teoría de grafos, estructuras discretas y probabilidad, y brinda la base para el fundamento lógico de los programas y el análisis de algoritmos
Principales áreas de aprendizaje
- Matemáticas discretas: enfatiza las estructuras matemáticas básicas de los programas, como números, funciones, conjuntos y lógica
- Combinatoria y probabilidad: ayuda a comprender la eficiencia, aleatoriedad y distribución de datos en los algoritmos
- Teoría de grafos: cumple un papel importante en la visualización de estructuras de datos y redes, así como en problemas de búsqueda de rutas y optimización
- Demostración de corrección de algoritmos: usa razonamiento lógico e inducción matemática para garantizar la estabilidad de los programas
Materiales de estudio
- Notas de clase: organizadas de forma sistemática con enfoque en la explicación teórica y los ejemplos
- Ejercicios: incluyen problemas de distintos niveles de dificultad para fortalecer la capacidad de aplicar conceptos en cada unidad
- Soluciones: ofrecen explicaciones para verificar los resultados después de resolver los problemas por cuenta propia
Aplicación y valor
- Sienta una base fundamental para áreas como ciencias de la computación, diseño de sistemas, inteligencia artificial e ingeniería de software
- Su acceso gratuito ofrece amplias oportunidades de aprendizaje para futuros desarrolladores, ingenieros en activo e investigadores
- Al estar estructurado según el currículo estándar del MIT, brinda una experiencia de aprendizaje alineada con estándares globales
Referencias adicionales
- Al usar sitios externos, sus términos de uso y licencias pueden diferir de los de MIT OCW
- MIT OCW no se hace responsable del contenido de sitios externos
1 comentarios
Comentarios en Hacker News
Es increíble que cualquiera pueda tomar gratis clases universitarias de primer nivel, especialmente una serie profunda de matemáticas de 31 horas. Pero siempre me ha costado terminar series largas de clases. Termino buscando videos cortos que expliquen solo los conceptos, pero entonces falta profundidad y al final muchas veces lo dejo a medias. Creo que la motivación de estar realmente inscrito en una universidad sí importa. Me pregunto si alguien ha logrado terminar este tipo de cursos por su cuenta y cómo mantiene la constancia y la autodisciplina. En plataformas como Coursera o KhanAcademy, los plazos imponen cierta presión y eso motiva más. Creo que estoy acostumbrado a estudiar en función de deadlines. Si alguien busca clases cortas porque le cuesta concentrarse, recomiendo revisar la playlist de YouTube de Professor Dave Explains, aunque quizá le falte algo de profundidad
Me gustan las matemáticas, terminé un doctorado y en general tengo buena autodisciplina, pero al principio estudiar solo con clases en video no fue fácil. Siento que hay que llegar a cierto umbral de conocimientos básicos antes de poder aprender de forma autodirigida con videos. Creo que lo importante es participar en un programa junto con compañeros y, sobre todo, contar con un mentor con experiencia. Me parece difícil llegar al punto de estudiar matemáticas por cuenta propia sin mentor. Hace falta alguien que corrija errores y te oriente. Es como un profesor de piano. Otra cosa importante es el tiempo invertido. Si de verdad quieres dominar álgebra lineal, análisis, cálculo, etc., necesitas dedicarle más de 10 horas por semana durante un año. Si solo inviertes 2 horas, te quedas con una comprensión superficial y poco profunda
Sobre la pregunta de si la motivación realmente viene de inscribirse en una universidad, creo que en la mayoría de los casos el factor es la prima salarial que se obtiene después de graduarse. A diferencia de un estudiante real del MIT, tomar solo cursos en línea no te acerca a un diploma del MIT, así que la motivación es menor. Si estás acostumbrado a estudiar con deadlines, una opción es imponerte castigos o comprometerte con alguien para que haya un costo si no terminas. Yo sí he logrado terminar cursos y libros por mi cuenta, y mi motivación es la curiosidad pura, además de que no me gusta admitir que no sé algo ni actuar como si supiera cuando en realidad no es así
En la universidad, el tiempo que pasé aprendiendo cursos avanzados de CS con profesores y compañeros fue de lo más divertido de mi vida. Después de graduarme, entre el trabajo y el hecho de que ya no hay tareas calificadas, exámenes ni sesiones de preguntas con profesores, aprender cosas nuevas se volvió mucho más difícil. He pensado en inscribirme en una universidad en línea por gusto, pero me pregunto si existe algún programa en línea, económico, que ofrezca cursos avanzados de CS/ML y donde realmente se pueda interactuar con profesores. Si alguien tiene sugerencias, se agradecen
Este curso me ayudó muchísimo con mi proyecto actual, un visor de G-code y sistema de modelado 3D para OpenPythonSCAD. Otros recursos que recomiendo son SICP (Structure and Interpretation of Computer Programs), Euclid's Elements en línea, Motion Mountain, así como LibriVox y Project Gutenberg. También me trajo recuerdos de cuando de niño conseguía libros y leía por distintos canales: una pequeña repisa rural, la torre de libros de una prisión y una tienda departamental del pueblo a 26 millas de distancia
Mientras seguía el curso, me costaba terminar una clase de una sola vez porque me faltaba entrenamiento y práctica matemática. Para reforzar las bases, iba buscando explicaciones en otros sitios y escuchaba cada clase dividida en varios días, o incluso semanas. Lo importante es ajustar las expectativas. Hace falta detenerse a pensar cuando uno se atasca, o dejar que pase el tiempo hasta familiarizarse naturalmente con el tema. También ayuda llevar una lista simple, en un archivo de notas o en papel, de lo que entendiste y de lo que no. Si sigues así de forma constante durante unos meses, en algún momento empiezas a ver el camino
La lista de temas del curso puede verse en la página de MIT OCW, y las notas de clase están disponibles aquí. No conozco bien todo el curso, pero la última clase, sobre 'Large Deviations', tiene algo particular. Personalmente me gustó la clase de 'State machines', porque en lugar de ejemplos con variables booleanas presenta casos más intuitivos, como el rompecabezas de 15, e introduce el concepto de invariantes. El libro del curso (PDF) está aquí. Los problemas reales también son bastante prácticos. Por ejemplo, en lugar de álgebra booleana seca, trata temas como formalizar las condiciones en las que ocurre un bloqueo del sistema de archivos
La clase de 'Large Deviations' trata un tema interesante, pero en realidad las notas no definen qué son las grandes desviaciones. Aparece un ejemplo del límite de Chernoff (exponencial) para la suma de variables aleatorias IID, pero no usa directamente el término grandes desviaciones, lo cual decepciona un poco. Este tipo de cotas aparecen con frecuencia en ciencias de la computación, especialmente en teoría del aprendizaje reciente
Parece que cada unidad es independiente de las demás. O sea, me pregunto si da igual en qué orden estudiarlas. Lo pregunto porque cosas como Set theory son base matemática
Me pregunto si alguien ha logrado cambiar de carrera usando OpenCourseware. Creo que, a diferencia de lo que prometía la promoción de la era MOOC, en la práctica era algo más adecuado para personas ya muy formadas, autodidactas por iniciativa propia o gente que lo hacía por hobby. No lo digo como crítica; yo mismo estudio computación cuántica en los ratos libres entre el trabajo y las tareas domésticas, pero así siento que apenas avanzo y que a este ritmo me pondré al día en unas cuantas décadas
El nombre del curso, algo como 'Mathematics for Computer Science', me genera un poco de rechazo. Yo siempre había visto computer science como una subrama de las matemáticas
En teoría estoy de acuerdo, pero en la industria real no se necesitan tantos ingenieros de software como matemáticos, y casi nadie entra a CS por interés matemático. Por eso el currículo de CS también es práctico. Se enfoca en algoritmos principales, estructuras de datos, cómo programar en Python, etc., es decir, en lo necesario para entrar a una big tech
No tendría nada de raro que cada subárea de las matemáticas tuviera un curso llamado 'Mathematics for [subárea específica]'. Nunca me ha tocado ponerle nombre a un curso, pero en contenido esto se parece a otras materias de 'Intro to'
Planeo formalizar este curso en Lean. No sé qué tan difícil será, pero si a alguien le interesa, estaría bueno colaborar en el repositorio de github
Esto encaja muy bien con los objetivos de la iniciativa CSLib. Por ahora solo tengo como referencia este post de LinkedIn
Me pregunto qué se gana con este trabajo
Ojalá también hubiera un solucionario con explicaciones. No sé cómo se supone que debo verificar mis respuestas
Los videos de clase pueden verse en MIT OCW y en la playlist de YouTube
Me pregunto dónde se pueden encontrar explicaciones o soluciones a los problemas de este curso
Los temas del curso son interesantes, pero no creo que mucho de esto sea realmente indispensable para un ingeniero de software promedio. Cuando empecé a programar, me sorprendió lo poco que aparecía contenido matemático en el trabajo real. Claro, estas clases del MIT están pensadas para científicos de la computación, no para ingenieros de software. En las universidades de EE. UU. suelen distinguir bastante entre ambos
Si trabajas aunque sea un poco en física o robótica, eso ya no aplica. Sin matemáticas no entiendes nada
He trabajado como ingeniero de software tanto teniendo conocimientos de matemáticas como sin tenerlos, y la diferencia en el tipo de aporte y en la efectividad es total
El primer tema es 'Predicates, Sets, and Proofs', y yo sí uso predicados y conjuntos con frecuencia en la programación cotidiana
Que yo no lo use no significa que los demás tampoco. La ingeniería de software no puede existir sin ciencias de la computación
Aunque no haga falta dominar todo en profundidad, creo que la comprensión conceptual sí es indispensable para escribir programas correctos de acuerdo con una especificación. Los humanos podemos resolver problemas algorítmicos de forma intuitiva y ad-hoc, pero las matemáticas le dan estructura y rigor a la manera de pensar, y permiten sistematizar los problemas para volver más mecánico el proceso de solución. Con solo conocer teoría de conjuntos, lógica y álgebra relacional ya se entiende mucho mejor la conexión entre programación y matemáticas. Recomiendo los libros Introductory Logic and Sets for Computer Scientists de Nimal Nissanke y Understanding Formal Methods de Jean-Francois Monin
Espera un momento... CS originalmente es un título de matemáticas. Este título suena como matemáticas para matemáticas