Soy un estudiante de primer año de CS y quiero ser un profesional en el campo de la informática. ¿Cuál debería ser mi lista de tareas para completar mi sueño?

Mis sugerencias:

  • Pase mucho tiempo tratando de comprender las aplicaciones reales de los algoritmos que le están enseñando.
  • Computación paralela / distribuida. La mayoría de los programas de CS ni siquiera incursionan en esto hasta su año Junior o Senior. Aprende más rápido. Aprenda qué es una estructura de datos sincronizada, bloqueos, etc. Todo lo que se hace en estos días tiene más de 1 núcleo.
  • Aprende un poco sobre los sistemas inteligentes. Haga preguntas como ¿cómo funciona Siri? Es algo más que un motor de voz a texto que ingresa en un cuadro de búsqueda Wolfram Alpha.
  • Por último, pero lo más importante (al menos para mí): ser competitivo y ser el mejor. Cuando llegue el momento de hacer proyectos a término, haga todo lo posible para superar a todos los demás. Lo que sea necesario. No tienes que ser mezquino con los demás o incluso decirles a tus compañeros de clase que lo estás viendo como una competencia, solo sé mejor. Le enseñará disciplina para entregar el mejor producto y ese impulso lo llevará a su carrera profesional.

Las respuestas hasta ahora me parecen más sobre ser un buen programador que ser realmente un experto en informática. La informática abarca mucho más que la programación o el desarrollo de software (en mi opinión, ni siquiera es tan importante si no decides concentrarte en escribir código …).

Realmente depende de en qué área quieres enfocarte. Por ejemplo, ¿le interesa el diseño de sistemas grandes? Por ejemplo, ¿desea construir un sistema distribuido que sea tolerante a fallas y altamente disponible? ¿O quieres construir una base de datos o un sistema operativo completo? ¿O estás interesado en la seguridad informática? Y más … Para ser bueno en esto, probablemente tengas que participar en la construcción de grandes sistemas informáticos, y esta área es definitivamente importante para ser bueno en la programación. En realidad, hay algunos de los videos en línea para esta área:

La seguridad informática:

6.858

Sistemas distribuidos:

Sistemas distribuidos

Bases de datos:

6.830 / 6.814: Sistemas de bases de datos [Otoño 2014]

OS:

6.828: Ingeniería del sistema operativo [Otoño 2014]

Sin embargo, hay otras áreas. Si está interesado en la informática teórica, ser bueno en el diseño de algoritmos rápidos y ser bueno en matemáticas es mucho más importante. Para comenzar en esta área, recomendaría ver primero la introducción a las matemáticas para la informática en OCW:

Matemáticas para la informática

y si desea comenzar a aprender sobre algoritmos, puede ver la introducción a la clase de algoritmos (y estructuras de datos):

Introducción a los algoritmos

Sin embargo, si está interesado en la inteligencia artificial, puede leer la sociedad de la mente y la máquina de emociones (y Godel, Escher, Bach). Estos libros son teóricamente pero realmente interesantes. Sin embargo, no hay nada que te impida implementar realmente sus ideas si eso es lo que quieres hacer. El profesor Winston también tiene su curso en línea en línea:

Inteligencia artificial

y su increíble TA:

6.034: Inteligencia artificial – Tutoriales [Otoño 2014]

Sin embargo, si está más interesado en el procesamiento de datos y el aprendizaje automático, puede consultar el curso de Andrew Ng en línea en iTunes:

Stanford CS229 Machine Learning

El aprendizaje automático es realmente hermoso, pero puede ser bastante difícil de implementar y comprender. Las matemáticas pueden ser desafiantes, pero son realmente gratificantes. Además, es muy sutil cómo hacerlo funcionar realmente bien en la práctica … ¡pero es muy divertido! Como dije, puede ser difícil y el curso de Andrew Ng es bastante difícil. Creo que es una clase de posgrado. Para una introducción más suave, consulte la clase de introducción del MIT:

Colección 6.036 (18 videos)

Además, caltech tiene un libro muy bueno y su compañero en curso de posgrado en iTune. Aquí está el enlace de youtube:

Curso de aprendizaje automático – CS 156

Además, echa un vistazo a los cursos en línea del MIT en edx y Stanford en coursera, ¡tienen muchos más cursos y demás! ¡Solo disfruta de ellos y disfruta!

edX

Coursera

De todos modos, estas son solo algunas de mis áreas favoritas. Estoy seguro de que hay mucho más. Es bastante difícil ser un experto en todo, ¡así que elige bien y disfruta! Buena suerte.

Primero, tenga en cuenta que la sintaxis y la programación son solo una pequeña parte, cualquiera puede “programar” con unos pocos cursos y un libro.

  • Aprenda patrones de diseño (consulte el libro “Patrones de diseño de Head First”).
  • Elija algunos proyectos y hágalos de principio a fin. No comience a escribir ningún código hasta que tenga un plan claro sobre cómo desea estructurar ese código.
  • Aprenda a dividir proyectos grandes en componentes pequeños que son independientes entre sí.
  • Dedique mucho tiempo a escribir código, pero recuerde que escribir mucho código solo lo hará experimentado, no un profesional. Cuando escriba el código, asegúrese de estructurar todo correctamente, mantener todo bien documentado y asegurarse de que su código esté increíblemente limpio.
  • Cuando te encuentres en una situación en la que sientas que algo que escribiste se puede hacer mejor o más limpio, regresa y haz el cambio, en serio.
  • Aprenda todas las herramientas complementarias necesarias. Domina tu IDE, control de versiones y conoce SQL.