Siendo un programador completamente autodidacta, me gustaría que pudiera mejorar aprendiendo por mí mismo el curso de informática que se imparte a un típico graduado de CS.
Encontrar diferentes recursos en Internet ha sido fácil, por supuesto , hay cursos de cursos abiertos del MIT , y hay cursos de Coursera de Stanford y otras universidades. Existen muchos otros recursos abiertos repartidos por Internet y algunos buenos libros que se recomiendan repetidamente.
He estado aprendiendo mucho, pero mi estudio está muy fragmentado, lo que realmente me molesta. Me encantaría si en algún lugar, pudiera encontrar un camino que debería seguir y una pila a la que debería limitarme, para poder estar seguro de qué partes esenciales de la informática he estudiado, y luego acercarme sistemáticamente a las que no tengo.
El problema con Wikipedia es que no te dice lo que es esencial, sino que insiste en ser una referencia completa.
Curso abierto del MIT para Informática e Ingeniería Eléctrica. tiene una gran lista de cursos que tampoco le dicen qué cursos son esenciales y qué opcionales según el interés / requisito de la persona. No encontré ninguna mención de un orden en el que uno debería estudiar diferentes temas.
Lo que me encantaría es crear una lista que pueda seguir, como esta ficticia
SUBJECTS DONE
Introduction to Computer Science *
Introduction to Algorithms *
Discrete Mathematics
Adv. Discrete Mathematics
Data structures *
Adv. Algorithms
...
Como puede ver claramente, tengo poca idea de en qué consisten las materias específicas de informática.
Sería de gran ayuda, incluso si alguien señalara cursos esenciales de MIT Course ware (+ materias esenciales no presentes en MIT OCW) en un orden de estudio recomendado.
Enumeraré las publicaciones que ya pasé (y no obtuve lo que estaba buscando allí)
https://softwareengineering.stackexchange.com/questions/49557/computer-science-curriculum-for-non-cs-major - la respuesta principal dice que no vale la pena estudiar cse
https://softwareengineering.stackexchange.com/questions/110345/how-can-a-self-taught-programmer-learn-more-about-computer-science - apunta a MIT OCW
fuente
Respuestas:
He visto material del curso del MIT, y fue sorprendentemente malo . Tenían materiales didácticos que requerían VC5, grupos de variables globales implícitas, pasando colores como "Azul" en lugar de ARGB de 32 bits, y mucho menos 4x [0,1] flotadores, ese tipo de cosas. No confiaría en un plan de estudios o código solo porque proviene de una universidad de renombre.
Mi título de CS (de una universidad que está entre los 10 mejores en el Reino Unido para CS) consistió en:
Primer año:
Segundo año:
Tercer año:
Como notará, casi todo es "lo básico" de algo y casi nada está cubierto a una profundidad útil.
Lo que realmente valía la pena hacer, esencial:
Las cosas que valía la pena hacer, opcionalmente:
Cosas que son esenciales pero no las cubrí de todos modos:
El resto fue una completa pérdida de tiempo. Desafortunadamente, la mayoría de estos nueve puntos ya los conocía o recogí las partes útiles en otra parte. Si lees sobre cosas como el problema de FizzBuzz , rápidamente se hace evidente que no necesitas saber tanto para estar en la cima del paquete, lo cual es una suerte, ya que mi título y muchos de los materiales que he visto en línea para otros grados realmente no enseñan mucho en absoluto.
fuente
Open Course ware es solo una lista de cursos que han puesto a disposición. Si desea saber qué hubiera tomado un estudiante, visite el sitio web del MIT (no OCW) y mire el programa real. Tienen una lista de lo que se requiere y lo que se considera un requisito previo para qué. Aquí está su página.
fuente
Pruebe las recomendaciones del plan de estudios de Ciencias de la Computación de 2001 de ACM / IEEE, vinculadas aquí: http://www.acm.org/education/curricula-recommendations
junto con las actualizaciones de CS 2008.
La página 17 del informe de 2001 tiene un gráfico útil que subraya todo el conocimiento "básico" y aún enumera las asignaturas optativas.
Un programa de pregrado no tendría tiempo para cubrir incluso los cursos considerados esenciales por estas recomendaciones, por lo que agruparán algunas de las categorías y dejarán que los estudiantes elijan entre ellas (por ejemplo, sistemas operativos, lenguajes de programación e ingeniería de software). Software, y los estudiantes eligen una pista).
Puede encontrar los cursos requeridos en el sitio web del departamento de CS para casi cualquier escuela, y deberían ser alguna versión de esto.
fuente
Si puedo, me gustaría sugerirle que se una a github.com como parte de su proceso de aprendizaje.
Luego, puede buscar el código que tenga alguna aplicación del mundo real que le interese, clonarlo usted mismo, trabajar con él, codificarlo y conocerlo, y eventualmente comenzar a enviar parches al proyecto fuente y, más adelante, trabajará en un proyecto de código abierto en el que tenga un interés personal.
Y, por supuesto, te familiarizarás con git, que es mucho mejor.
fuente