Para que cualquiera pueda captar los conceptos de la informática, la única forma es hacerlo y me mantengo firme en esta afirmación. “Hacerlo” a menudo involucra programación, y no hay forma de evitarlo. El problema se convierte entonces en lo que usted programa para minimizar el tiempo de aprendizaje.
Los tres conceptos más importantes de la informática son:
- Abstracción. Esto significa: “Tengo un problema que resolver. ¿Cómo puedo reformular el problema para que pueda escribirse como un programa de computadora?”
- Estructuras de datos y algoritmos. Esto significa: “¿Cómo puedo resolver este problema de manera más eficiente dadas las restricciones de velocidad, espacio de almacenamiento, etc.?”
- Estructura de la máquina. Esto significa: “Tengo un programa para ejecutar, pero ¿cómo interactúa la computadora con el hardware para ejecutar este programa?”
Esto generalmente se asigna a los cursos de introducción en la mayoría de los currículos de CS. Por ejemplo, en la UC Berkeley, los primeros tres cursos que tomaría un comandante de CS son 61A (sobre abstracción), 61B (sobre estructuras de datos y algoritmos) y 61C (sobre estructura de máquina). En Carnegie Mellon, cuando asistí (cambió ligeramente ahora), los tres cursos esenciales fueron 15-211 (sobre estructuras de datos y algoritmos), 15-212 (sobre abstracción) y 15-213 (sobre estructura de máquinas).
Sin embargo, aunque muchos cursos de CS están disponibles como transmisiones en línea (por ejemplo, Youtube, iTunes U), no los recomiendo porque no recibirá mucha ayuda. La mayoría de los estudiantes de CS necesitan la ayuda de TA o de sus compañeros para sobrevivir a estas clases, y no los obtendrás si estás estudiando por tu cuenta. Los recursos en línea son todavía muy limitados para temas muy técnicos.
- ¿Es Strings And Branes by Peter West la mejor introducción para este tema hoy?
- ¿Hablar con uno mismo mientras aprenden temas difíciles ayuda al proceso de aprendizaje? ¿Por qué?
- ¿Cuál es la similitud y la diferencia entre aprender un idioma y aprender matemáticas?
- ¿Qué ideas tiene para los temas que se incluirán en los programas de desarrollo de la facultad para manejar a los estudiantes de ingeniería en el aula y garantizar el aprendizaje?
- ¿Qué podemos aprender de Sir Richard Branson?
En su lugar, recomiendo comenzar con los libros de programación que cubren los tres temas anteriores. Muchos libros para principiantes están diseñados para que requieran poca o ninguna ayuda externa.
- Para aprender sobre las abstracciones , y como primer libro , recomiendo: Programación de Python: Una Introducción a la Informática 2ª Edición. http://www.amazon.com/Python-Pro…
- Para aprender sobre estructuras de datos y algoritmos , actualmente no conozco ningún buen libro para recomendar. Los algoritmos de autoaprendizaje requieren una sólida base matemática. El Manual de diseño de algoritmos es un gran libro, pero es muy difícil y deberás conocer C. http://www.amazon.com/Algorithm-…
- Para aprender sobre la estructura de la máquina, recomiendo : C Primer Plus (debe saber sobre programación antes de leer este libro): http://www.amazon.com/Primer-Plu…
Nota: los conceptos de ciencias de la computación son diferentes de los de la ingeniería de software, y si usted es un gerente de producto, podría interesarle eso:
- La informática es el estudio de la computación .
- La ingeniería de software es una profesión de diseñar un software .
- El gran software se basa en los fundamentos de la informática y la ingeniería de software.
- Los ingenieros de software conocen tanto la informática como la ingeniería de software; algunos pueden saber más de informática, y otros pueden saber más sobre ingeniería de software. Algunos trabajos de ingeniería de software pueden ser más relevantes para la informática (por ejemplo, trabajos de aprendizaje automático) y otros pueden ser más relevantes para la ingeniería de software (por ejemplo, trabajos de arquitecto).
- Los conceptos de ingeniería de software pueden ser más fáciles de entender que los conceptos de informática para personas no técnicas.
- El “desarrollo de aplicaciones” moderno (por ejemplo, aplicaciones web, aplicaciones móviles), especialmente aquellas con un alcance menor, tiende a ocuparse más de la ingeniería de software que de la informática.
- La ingeniería de software, especialmente el desarrollo de aplicaciones, es mucho más fácil de autoaprendizaje. El enfoque más efectivo sería aprender el desarrollo de Android o iPhone porque hay toneladas de libros para principiantes disponibles para ellos.