Tuviste un buen comienzo, pero sí, ¡hay mucho más! Para tener una idea de la amplitud de CS, puede echar un vistazo a las pautas del plan de estudios de ACM para la educación de pregrado en CS (última actualización en 2013). El Apéndice A describe 18 “áreas de conocimiento”, con una introducción de 1 página a cada área.
● Algoritmos y Complejidad
● Arquitectura y organización
● ciencia computacional
● estructuras discretas
● Gráficos y visualización
● Interacción humano-computadora
● Aseguramiento y seguridad de la información.
● Gestión de la información [por ejemplo, bases de datos]
● Sistemas inteligentes
● Redes y comunicaciones
● Sistemas operativos
● Desarrollo basado en plataformas
● Computación paralela y distribuida
● Lenguajes de programación
● Fundamentos de desarrollo de software
● Ingeniería de software
● Fundamentos de sistemas
● Cuestiones sociales y práctica profesional.
La descripción de cada área continúa durante aproximadamente 7 páginas más, que describen subáreas y enumeran temas específicos de nivel universitario. Eso es porque muchos de estos puntos tienen una riqueza tremenda. Ejemplos:
- ¿La entropía de la web es de solo 22 bits?
- ¿No son los inspectores de modelos y asistentes de pruebas realmente variantes diferentes y limitadas de lo mismo? Si es así, ¿por qué el abismo entre ellos?
- ¿Los científicos informáticos están celosos de los empresarios famosos?
- Tengo interés en la programación de computadoras, algoritmos y estructuras de datos. ¿Puedo publicar algún trabajo de investigación en estas áreas? En caso afirmativo, ¿qué debo hacer?
- Cómo escribir un trabajo de investigación en algoritmos
- Mire el artículo de Wikipedia sobre CS teórica para ver que la frase “Algoritmos y Complejidad” en realidad está ocultando un vasto campo con muchos temas entrelazados que aún no ha visto.
- Del mismo modo, la “ciencia computacional” es en realidad una colección de muchos subcampos, que desarrollan algoritmos especializados para el análisis y la simulación de datos para ayudar al progreso de ciencias particulares. Estos incluyen biología computacional, economía computacional, ciencias sociales computacionales, química computacional, física computacional (por ejemplo, dinámica de fluidos), etc.
- Del mismo modo, “Sistemas inteligentes” tiene muchos subcampos correspondientes a diferentes tipos de comportamiento inteligente (visión, robótica, lenguaje, razonamiento de sentido común, juego, aprendizaje, etc.).
- En “Lenguajes de programación”, su experiencia hasta ahora parece ser el análisis de la sintaxis superficial de un lenguaje. Pero diferentes tipos de lenguaje de programación ofrecen formas muy diferentes de describir un problema a una computadora. Cada enfoque está respaldado por una teoría interesante y compiladores inteligentes que intentan encontrar formas rápidas de ejecutar el código.
Tenga en cuenta que el documento ACM está proyectando una amplia red, pero solo a nivel de temas de pregrado. Cuando miro las descripciones de mis propias áreas de especialización, me faltan muchos temas avanzados. De hecho, puedo pensar fácilmente en temas que obviamente no encajan en ninguna de las 18 áreas anteriores. Esto se debe a que en más de 15 años como profesor de CS, he tenido que aprender muchas técnicas, y he escuchado a cientos de oradores visitantes dar charlas interesantes sobre una amplia variedad de temas (algunos de los cuales todavía sé muy poco sobre ) Sin embargo, incluso ahora, a veces aprendo sobre temas de CS que nunca había escuchado o pensado.