¿Cómo estudio por completo la informática? [cerrado]

45

Siendo un programador completamente autodidacta, me gustaría si pudiera mejorar yo mismo aprendiendo el curso de ciencias de la computación que se imparte a un graduado de CS típico.

Ha sido fácil encontrar diferentes recursos en Internet, por supuesto hay software de curso abierto MIT , y hay cursos de Coursera de Stanford y otras universidades. Hay 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 estuviera en algún lugar, podría encontrar un camino que debería seguir y una pila a la que debería limitarme, de modo que pueda estar seguro de lo que essential partes de la informática He estudiado y luego me acerco sistemáticamente a los que no.

El problema con Wikipedia es que no le dice lo que es esencial, pero insiste en ser una referencia completa.

MIT de curso abierto MIT para Informática y Ingeniería Eléctrica. tiene una gran lista de cursos que no le dicen qué cursos son esenciales y qué opcionales según el interés / requisito de cada persona. No encontré ninguna mención de un orden en el cual uno debería estudiar diferentes materias.

Lo que me encantaría es crear una lista que pueda seguir, como este dummy

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é materias específicas se compone la ciencia de la computación.

Sería de gran ayuda, incluso si alguien señalara cursos esenciales del software del curso MIT (+ materias esenciales no presentes en MIT OCW) en un orden de estudio recomendado.

Enumeraré las publicaciones por las que ya pasé (y no obtuve lo que buscaba allí)

enlace : la respuesta principal dice que no es vale la pena estudiar cse

enlace - apunta a MIT OCW

enlace

enlace

    
pregunta Optimus 10.06.2012 - 13:50

4 respuestas

24

He visto material de curso de MIT, y fue sorprendentemente malo . Tenían materiales didácticos que requerían VC5, un montón de variables globales implícitas, que transmitían colores como "Azul" en lugar de 32 bits ARGB, y mucho menos flotantes 4x [0,1], ese tipo de cosas. No confiaría en un currículum o código simplemente porque proviene de una universidad de renombre.

Mi título de CS (de una universidad que está entre las 10 mejores en el Reino Unido para CS) consistía en:

Primer año:

  1. OOP- lo super básico
  2. Sistemas informáticos: cosas como, representaciones de enteros binarios.
  3. Teoría básica de la base de datos relacional
  4. Matemáticas para CS: geometría 2D y 3D simple.
  5. Un poco de HTML / JS: completa la información para principiantes
  6. Un poco igualmente pequeño de PHP.
  7. Un poco de programación funcional

Segundo año:

  1. Problemas legales en materia de informática, como leyes que giran en torno a protección de datos de usuario
  2. Lenguajes de programación: se cubrió la jerarquía y el lenguaje de Chomsky
  3. Sistemas operativos, redes e Internet, en su mayoría cosas como memoria virtual y paginación, pila de IP
  4. Gráficos de computadora en 2D: en su mayoría solo para demostrar los teoremas del subyacente matemáticas
  5. AI- descripciones básicas de redes neuronales, sistemas de creencias bayesianos, etc.
  6. Análisis de requisitos: breve descripción de UML, Requisitos funcionales / no funcionales.
  7. Proyecto de equipo

Tercer año:

  1. teoría de la complejidad del análisis de algoritmos, en su mayoría
  2. Implementación de lenguajes de programación- Técnicas de análisis de LL / LR, CFGs, y esas cosas.
  3. Gestión de proyectos de software: una mirada a los modelos Waterfall / Agile
  4. Computación internacional: Unicode y otra diversión de localización
  5. AI avanzado, no sé, honestamente, y tengo un examen pronto
  6. Gráficos de computadora en 3D: en su mayoría, de nuevo, solo demuestran teoremas para matrices de rotación y tal
  7. Sistemas basados en agentes: principalmente sobre la comunicación de agentes asíncronos, llegar a decisiones grupales, etc.
  8. Aplicaciones de microprocesador: procesamiento digital de señales
  9. Robótica: cubre aspectos como la visión por ordenador y la decisión del robot. haciendo a un alto nivel

Como se dará cuenta, casi todo es "lo básico" de algo y casi nada está cubierto a una profundidad útil.

Lo que realmente vale la pena hacer, esencial:

  1. OOP- y luego algo más, y luego algo más
  2. Programación funcional, también algo más. Intente elegir un lenguaje como C ++ o C # donde no tenga que volver a aprender la sintaxis y las herramientas, etc., para cubrir ambos estilos.
  3. Es bueno conocer la parte virtual del sistema operativo, al igual que el modo kernel vs modo de usuario. Omitir segmentación y la pila de IP.
  4. Análisis de requisitos: debe ser útil para cualquier proyecto
  5. Análisis de algoritmos: es importante saber qué es la complejidad algorítmica, cómo reducirla y cuál es la complejidad de las operaciones comunes.
  6. Modelos de gestión de proyectos de software: muchas tiendas hacen Agile y muchas más antiguas todavía hacen modelos estilo cascada.
  7. Computación internacional: Unicode es esencial

Lo que valía la pena hacer, opcionalmente:

  1. Lenguajes de programación: jerarquía de Chomsky, herramientas de análisis y análisis. Omita la teoría detrás de los analizadores LL o LR: un analizador LR puede aceptar virtualmente cualquier CFG realista e inequívoco, y cuando no pueda, la documentación de su generador de analizador le informará al respecto.
  2. Gráficos 3D. No me refiero a "demostrar que esto es una fórmula de matriz de rotación" desperdicio de tiempo, me refiero a cosas reales "Esto es un sombreador de vértice", o GPGPU. Eso es divertido, interesante y diferente.
  3. Algunas de las cosas relacionadas con la inteligencia artificial son campos potenciales y rutas de búsqueda divertidas.

Cosas que son esenciales, pero no lo cubrí de todos modos:

  1. Concurrencia: algo que debe conocer, al menos lo básico, para cualquier persona en 2012.

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 otro lugar. Si lees sobre cosas como el problema de FizzBuzz , rápidamente se hace evidente que en realidad no necesitas saber mucho para estar en la parte superior del paquete, lo que es afortunado, ya que mi título y muchos de los materiales que he visto en línea para otros títulos realmente no enseñan mucho.

    
respondido por el DeadMG 10.06.2012 - 14:23
5

Open Course ware es solo una lista de los cursos que han puesto a disposición. Si desea saber qué habría tomado un estudiante, visite el sitio web de MIT (no OCW) y mire el programa real. Tienen una lista de lo que se requiere y lo que se considera un prerrequisito para qué. Aquí está su página.

    
respondido por el stonemetal 10.06.2012 - 14:16
5

Pruebe las recomendaciones del plan de estudios de informática de 2001 de ACM / IEEE, vinculadas aquí: enlace

junto con las actualizaciones de CS de 2008

La página 17 del informe de 2001 tiene un gráfico útil que subraya todos los conocimientos "básicos" y aún enumera las optativas.

Un programa de pregrado no tendría tiempo de cubrir ni siquiera los cursos considerados básicos por estas recomendaciones, por lo que agruparán algunas de las categorías y dejarán que los estudiantes escojan entre ellos (por ejemplo, sistemas operativos, lenguajes de programación e ingeniería de software). se agrupan en Software, y los estudiantes escogen una pista).

Puede encontrar los cursos requeridos en el sitio web del departamento de CS para casi cualquier escuela, y deberían ser una versión de esto.

    
respondido por el Ruan Caiman 11.06.2012 - 18:41
-4

Si me lo permiten, me gustaría sugerir que se una a github.com como parte de su proceso de aprendizaje.

Luego puede buscar un código que tenga alguna aplicación del mundo real que le interese, clonarlo por sí mismo, trabajar con él, codificarlo y conocerlo, y eventualmente comenzar a enviar parches de nuevo a El proyecto de origen, y en el futuro, estará trabajando en un proyecto de código abierto en el que tenga un interés creado.

Y, por supuesto, te familiarizarás con git, que es mucho mejor.

    
respondido por el Kzqai 10.06.2012 - 23:57

Lea otras preguntas en las etiquetas