Si empezaras a aprender Informática desde cero hoy, ¿qué recursos utilizarías?

Si eres un autodidacta para estudiar ciencias de la computación, debes aprender ciencias de la computación. Afortunadamente, puedes darte una educación CS de clase mundial sin invertir años y una pequeña fortuna en un programa de estudios.

Hay muchos recursos disponibles, pero algunos son mejores que otros. No necesitas otra lista de “Más de 200 cursos gratuitos en línea”. Necesita respuestas a estas preguntas:

  • ¿Qué materias deberías aprender, y por qué?
  • ¿Cuál es el mejor libro o serie de conferencias de video para cada materia?

Esta guía es nuestro intento de responder de manera definitiva a estas preguntas.

TL; DR:

Estudie los nueve temas a continuación, aproximadamente en el orden presentado, utilizando el libro de texto sugerido o la serie de conferencias en video, pero idealmente ambos. Apunta a realizar entre 100 y 200 horas de estudio de cada tema, luego revisa los favoritos a lo largo de tu carrera.

Tema

¿Por qué estudiar?

Mejor libro

Mejores videos

Programación

No seas la persona que “nunca entendió” algo como la recursión.

Estructura e interpretación de programas informáticos.

Berkeley CS 61A de Brian Harvey

Arquitectura de Computadores

Si no tiene un modelo mental sólido de cómo funciona realmente una computadora, todas sus abstracciones de alto nivel serán frágiles.

Organización y diseño informático

Berkeley CS 61C

Algoritmos y estructuras de datos

Si no sabe cómo utilizar estructuras de datos ubicuas como pilas, colas, árboles y gráficos, no podrá resolver problemas difíciles.

El manual de diseño de algoritmos

Conferencias de Steven Skiena

Matemáticas para CS

CS es básicamente una rama fuera de control de las matemáticas aplicadas, por lo que aprender matemáticas te dará una ventaja competitiva.

Matemáticas para la informática

MIT 6.042J de Tom Leighton

Sistemas operativos

La mayoría del código que escribes es ejecutado por un sistema operativo, por lo que debes saber cómo interactúan.

Sistemas operativos: Tres piezas fáciles

Berkeley CS 162

Redes de computadoras

Internet resultó ser un gran problema: comprende cómo funciona para desbloquear todo su potencial.

Redes informáticas: un enfoque de arriba hacia abajo

Stanford CS 144

Bases de datos

Los datos están en el corazón de los programas más importantes, pero pocos entienden cómo funcionan realmente los sistemas de bases de datos.

Lecturas en sistemas de bases de datos

Berkeley CS 186 de Joe Hellerstein

Idiomas y compiladores

Si comprende cómo funcionan realmente los idiomas y los compiladores, escribirá un mejor código y aprenderá nuevos idiomas más fácilmente.

Compiladores: Principios, Técnicas y Herramientas.

Curso de Alex Aiken sobre Lagunita.

Sistemas distribuidos

En estos días, la mayoría de los sistemas son sistemas distribuidos.

Sistemas distribuidos, 3ª edición por Maarten van Steen

Screencasts de van Steen

¿Por qué aprender ciencias de la computación?

Hay dos tipos de ingenieros de software: aquellos que entienden la ciencia de la computación lo suficientemente bien como para realizar un trabajo desafiante e innovador, y aquellos que simplemente se las arreglan porque están familiarizados con algunas herramientas de alto nivel.

Ambos se llaman a sí mismos ingenieros de software, y ambos tienden a ganar salarios similares en sus primeras carreras. Pero los ingenieros de Tipo 1 se convierten en trabajo más completo y bien remunerado a lo largo del tiempo, ya sea trabajo comercial valioso o proyectos innovadores de código abierto, liderazgo técnico o contribución individual de alta calidad.

Los ingenieros de Tipo 1 encuentran formas de aprender ciencias de la computación en profundidad, ya sea a través de medios convencionales o aprendiendo sin descanso a lo largo de sus carreras. Los ingenieros de Tipo 2 normalmente permanecen en la superficie, aprendiendo herramientas y tecnologías específicas en lugar de sus fundamentos subyacentes, y solo adquieren nuevas habilidades cuando cambian los vientos de la moda técnica.

Actualmente, el número de personas que ingresan a la industria está aumentando rápidamente, mientras que el número de graduados de CS es esencialmente estático. Este exceso de oferta de ingenieros de Tipo 2 está empezando a reducir sus oportunidades de empleo y mantenerlos fuera del trabajo más satisfactorio de la industria. Ya sea que esté tratando de convertirse en un ingeniero de Tipo 1 o simplemente esté buscando más seguridad en el trabajo, aprender la informática es el único camino confiable.

Redes de computadoras

Dado que gran parte de la ingeniería de software se encuentra en servidores y clientes web, una de las áreas de valor más inmediato de la informática es la red de computadoras. Nuestros estudiantes autodidactas que estudian metódicamente la creación de redes descubren que finalmente comprenden los términos, conceptos y protocolos por los que habían estado rodeados durante años.

Bases de datos

Se necesita más trabajo para aprender sobre los sistemas de bases de datos que con la mayoría de los otros temas. Es un campo de estudio relativamente nuevo (es decir, posterior a la década de 1970) con fuertes incentivos comerciales para que las ideas permanezcan a puerta cerrada. Además, muchos autores de libros de texto potencialmente excelentes han preferido unirse o iniciar empresas en su lugar.

Idiomas y compiladores

La mayoría de los programadores aprenden idiomas, mientras que la mayoría de los informáticos aprenden sobre idiomas. Esto le da al científico informático una clara ventaja sobre el programador, ¡incluso en el dominio de la programación! Su conocimiento generaliza; son capaces de comprender el funcionamiento de un nuevo idioma de manera más profunda y rápida que aquellos que simplemente han aprendido idiomas específicos.

Sistemas distribuidos

Como las computadoras han aumentado en número, también se han extendido . Mientras que las empresas compraban previamente mainframes más y más grandes, ahora es típico que incluso aplicaciones muy pequeñas se ejecuten en múltiples máquinas. Los sistemas distribuidos es el estudio de cómo razonar acerca de las compensaciones involucradas al hacerlo, una habilidad cada vez más importante.

Recursos para estudiar informática hoy en día….

  1. Libros de texto usados
  2. Blogs en línea, sitios, artículos, etc.
  3. Documentos de investigación publicados
  4. Lecciones de audio y video de Internet, por ejemplo, videos de Youtube
  5. MOOC – Cursos en línea
  6. Personas: personas que trabajan en ciencias de la computación, por ejemplo, profesionales de la CS, investigadores, asistentes de investigación, etc.
  7. Prácticas y experiencia laboral
  8. Otras opciones de autoestudio que puedo encontrar

Hay una cantidad de cursos gratuitos disponibles para aprender. Los cursos se ofrecen por Coursera, Udemy, Class-central y otros. Puede consultar mi perfil de quora, si desea buscar detalles del curso. He compartido en perspectiva las respuestas.

Gracias .