Una cosa que me sorprende de la informática es la multitud de capas de abstracciones y la libertad de operar en cualquier nivel de nuestra elección. CS es, en un nivel fundamental, una ciencia de abstracciones.
Digamos que hay un problema del mundo real que podemos resolver (o intentar resolver) utilizando el conocimiento de este campo. Estos son algunos de los diferentes “departamentos” en los que podemos participar:
- Crear modelos matemáticos apropiados
- Analizando algoritmos que tienen el potencial de resolver nuestro problema, verificando la factibilidad / complejidad de las soluciones.
- Desglosando la formulación de la solución en una forma que pueda ser enseñada y entendida por una máquina. Esto implica implementar y simular nuestros sistemas usando un lenguaje de programación de nuestra elección.
- Ampliar la implementación para que pueda ejecutarse más rápido o en una escala mucho mayor de datos de entrada. O, en caso de que la solución tenga que llegar a las masas, haciendo que el sistema sea en tiempo real, fácil de usar, etc.
- Optimizar cómo se comporta el código cuando lo procesan nuestras máquinas, lo que implica comprender la programación a nivel del sistema. Aquí, también podemos preocuparnos por problemas de seguridad en sistemas sensibles a la privacidad.
- Comprender qué características del hardware (arquitectura de la computadora) afectan qué aspectos de la ejecución de nuestro programa.
- Interpretar los sistemas informáticos como bits de información que fluyen entre diferentes unidades de procesamiento – electrónica digital
Observe cómo esta jerarquía comienza con ideas abstractas relacionadas con la representación de un problema del mundo real utilizando el lenguaje de las matemáticas y, en última instancia, se reduce a los detalles de los bits y bytes que fluyen dentro de los cables. Cada uno de estos “niveles” es un área de investigación bien reconocida y, en algunos casos, próspera en CS. Lo que es aún mejor es que la popularidad y la ubicuidad del campo ha hecho que sea bastante fácil para (a) un principiante saltar a cualquiera de estos dominios o (b) un experto en un dominio para obtener conocimiento de cualquier otro dominio. Esta jerarquía de abstracciones es la razón por la cual un desarrollador experto de aplicaciones basadas en la web puede incorporar formas básicas de sistemas de aprendizaje que pueden hacer predicciones inteligentes utilizando sus datos. O bien, un investigador de ML puede armar rápidamente un front-end web para facilitar su trabajo de investigación.
- Estoy interesado en informática. ¿Qué materias debo tomar?
- ¿Es buena la ingeniería informática para las niñas? ¿Brindará oportunidades para las niñas?
- Cómo descubrir la mejor carrera para mí. Estoy interesado en el diseño de moda, pero soy un duodécimo estudiante de informática, ¿qué debería preferir?
- ¿Qué se necesita para obtener un trabajo de TI en Japón?
- ¿Cuáles son algunos buenos consejos para un estudiante universitario de ciencias de la computación?