¿En qué consiste la investigación en informática teórica?


11

Estoy tratando de entender lo que implica la investigación teórica en informática. ¿Qué hacen los informáticos teóricos?

Sé que se dedica un tiempo considerable a la enseñanza, la supervisión de estudiantes graduados, la solicitud de financiación y las tareas departamentales. Dejándolos a un lado, ¿cómo pasas tu tiempo de investigación? ¿Cuáles son las principales actividades que normalmente haces? Supongo que lees periódicos, piensas, tienes reuniones y escribes documentos. ¿Hay otros?


44
"¿Cómo pasas tu tiempo de investigación?" ... enfrentando problemas que probablemente nunca podré resolver :-) :-)
Marzio De Biasi

77
Es como describir la pintura como "mezclar pinturas, montar un lienzo, pintar y limpiar sus instrumentos". En otras palabras, describe cómo se vería alguien mirando, pero no tiene relación con el tema :)
Suresh Venkat

1
Otras actividades: deporte, senderismo, actividades culturales y, en general, tener una vida. Hacer otras cosas ayuda a su pensamiento (y su salud).
babou

77
Creo que la pregunta no es sobre la filosofía de la investigación de TCS o lo que lo convierte en un mejor investigador, sino realmente sobre qué tipo de actividades concretas realiza un investigador de TCS durante las horas de trabajo. Además de lo que ya aparece en la pregunta, agregaría preparar charlas, dar charlas, asistir a conferencias, revisar sus propios documentos, revisar documentos de otros.
Daniel Marx

2
Gracias. Tengo una idea del tipo de preguntas de investigación que estudias. Quiero saber más sobre tus actividades diarias. La investigación en ingeniería de software implica el desarrollo de programas informáticos, la realización de experimentos, la recopilación y el análisis de datos ... Quiero saber qué implica investigar en teoría. ¿Cómo es tu día de trabajo típico?
estudiante de pregrado cs

Respuestas:


12

En cuanto a temas

Hay diferentes tipos de problemas que pueden considerarse ciencias de la computación teóricas . La palabra importante aquí es " teórica " (ya que todos tenemos alguna idea de lo que trata la informática). Comprender la palabra teórico no es tan obvio. Durante mucho tiempo lo entendí como matemático, en oposición, por ejemplo, a "piratería". Aprendí mejor de la gente en lingüística: teóricapara ellos claramente no significa matemático, sino que se basa en una teoría que puede ser algo informal (aunque también puede ser matemática), y es un cuerpo organizado de conocimiento y conceptos que estructuran la comprensión de los fenómenos observables y, con suerte, permiten algún uso deductivo y predictivo del conocimiento adquirido. También reduce la cantidad de aprender y enseñar al reducir el número de conceptos primitivos de los que se puede deducir el resto.

La teoría puede oponerse a la práctica , que es cómo se usa este conocimiento para ejecutar motores informáticos, construir sistemas, etc. También me puedo oponer a la aplicación, que es el uso de este conocimiento para abordar problemas en otros campos de la ciencia y el ser humano. ocupaciones.

Pero dudo que haya límites bien definidos.

Dicho esto, la informática teórica abarca diversos dominios, y trataré de dar algunos, aunque estoy seguro de que olvido otros, y también de que otras personas pueden estar en desacuerdo con esta organización.

  • un dominio es la computabilidad , que estudia lo que se puede calcular y cómo en un sentido bastante abstracto: en gran medida lo que se describe en la respuesta de Suresh Venkat.

  • otro es la algorítmica , que encuentra medios efectivos para calcular respuestas a problemas específicos, con restricciones específicas. La computabilidad es un contexto teórico para la algorítmica.

  • semántica (por falta de un nombre mejor), analiza la organización conceptual de problemas computacionales y de algoritmos, en conceptos de nivel superior, para factorizar técnicas que han demostrado ser útiles y que a menudo se reutilizan, como el concepto de subprograma, datos- estructuras, módulos, ocultación de información. Incluye el desarrollo de herramientas matemáticas que formalizan adecuadamente estos conceptos para permitir el razonamiento de alto nivel (la semántica de Scott, por ejemplo). También toca la forma en que se expresa, por lo tanto, en la separación y relación entre la sintaxis y la semántica. Los conceptos de los lenguajes de programación son parte de esto (aunque el diseño del lenguaje es probablemente la aplicación práctica de ese conocimiento). También puede incluir la relación entre la teoría de prueba y la teoría de la computación, y el papel moderno de los sistemas de tipos.

  • Otro tema, que podría desarrollarse más de lo que lo ha hecho hasta ahora, es la relación entre la computación y la física fundamental. Por ejemplo. ¿Existe una relación entre los límites de la computación y las propiedades del mundo físico, como la densidad de información física o las leyes de la termodinámica? La computación cuántica puede mejorar un poco nuestra destreza computacional; ¿podríamos esperar más? Algunos pueden discutir que esto sigue siendo TCS, aunque hay estudios de TCS sobre hipercomputación .

En cuanto a actividades específicas

Me estoy saltando las actividades obvias requeridas por la vida académica. o la vida científica en la industria: enseñanza, publicación, revisión de trabajos, redacción de solicitudes de subvención, asumir responsabilidades académicas, gestionar personas, asesorar a estudiantes o responsables políticos. Pero incluso entonces, no hay una respuesta simple a su pregunta. Aquí solo estoy esbozando algunos aspectos que me vienen a la mente, pero estoy seguro de que hay mucho más que decir. Y no estoy seguro de responderte. Algunos de los mejores científicos han escrito libros sobre su trabajo, y eso puede dar pistas sobre actividades científicas.

Investigar en teoría puede involucrar una variedad de cosas, dependiendo de sus habilidades e intereses que varían mucho de un científico a otro. Es algo difícil hablar de ello, ya que cada persona percibe más su propia actividad e intereses que la de los demás. La mayoría de las investigaciones requieren un amplio conocimiento, ya que los resultados interesantes y realmente originales a menudo provienen de poner las cosas en relación, o transferir una técnica de un (sub) campo a otro, u obtener diferentes puntos de vista técnicos del mismo problema. Por lo tanto, es importante aprender tanto como sea posible tanto en profundidad como en profundidad. Recuerde que si bien tiene el tiempo y la capacidad para hacerlo como estudiante o como docente / científico junior, ambos se reducirán más tarde, debido a las responsabilidades y la vida en general. Enseñar en lo que no te especializas puede ser una forma de seguir aprendiendo.

El tipo de trabajo que realizan las personas puede variar mucho, porque afortunadamente las personas son muy diferentes, con una gran variedad de intereses y habilidades técnicas, y se complementan entre sí. Algunas personas son solucionadores de problemas. Examinan las preguntas teóricas o prácticas planteadas por otras personas, o por sí mismas, y tratan de resolverlas o acercarse a una solución completa o parcial. Otras personas serán mejores para estructurar el conocimiento existente y poner las cosas en relación, y luego encontrar nuevas preguntas para hacer. Ambos son esenciales.

Encontrar pruebas más simples de resultados técnicos, o presentaciones más simples de teorías, o fusionar conceptos es importante. Generaliza los resultados, reduce la cantidad de cosas que aprender, enfatiza las ideas esenciales y posiblemente trae una nueva comprensión. Como nuestro tiempo de aprendizaje es limitado, el progreso solo es posible cuando condensamos el conocimiento.

Un ejemplo simple es el estudio de familias abstractas de lenguajes formales. Cuando se desarrolló por primera vez la teoría del lenguaje, se probaron una y otra vez las propiedades de cierre bajo varias operaciones para cada familia de idiomas (regular, sin contexto, RE, ...), con técnicas ad hoc dependiendo de la familia. Luego ocurrió que estas propiedades de cierre tenían relaciones intrínsecas independientemente de las familias involucradas, y fueron estudiadas como tales. Hoy en día, solo tenemos que verificar algunas de las propiedades de cierre más simples para una familia determinada, y obtenemos "gratis" un conjunto completo de otras propiedades.

Otro punto importante es que no existe una distinción tan clara entre el trabajo teórico, práctico o experimental.. Una buena teoría puede conducir a la implementación de sistemas que pueden mecanizar la resolución de problemas. Y se necesitará un buen teórico para implementar dicho sistema, con una combinación de trabajo teórico y práctico, incluida la implementación del sistema o el diseño del lenguaje. Se me ocurren muchos ejemplos, como sistemas de prueba y / o síntesis de programas, lenguaje especializado para sistemas paralelos sincrónicos, un lenguaje algorítmico restringido para el cual se puede derivar sistemáticamente la complejidad computacional. No solo es importante poder producir tales sistemas prácticos, que hacen que los resultados teóricos estén más ampliamente disponibles y utilizables, sino que a menudo es muy importante para el teórico usar estos sistemas de manera competente, aunque solo sea para descargar las partes ahora menos creativas de su trabajo, o para contribuir al desarrollo y extensión de estos sistemas.

Otro aspecto es poder comparar enfoques teóricos mediante experimentación práctica. Aquí, el problema es comparar diferentes técnicas para lograr el mismo objetivo. Comparar implementaciones a menudo no tiene sentido ya que su eficiencia a menudo depende del lenguaje de programación o de las habilidades de programación del implementador. Pero si se pueden expresar todos en un marco teórico común, entonces a veces es posible compararlos experimentalmente dentro de ese marco. Aquí, la teoría y la práctica se apoyan mutuamente, como lo hacen a menudo en la ciencia. El análisis teórico puro no siempre es fácil de lograr. Además, el análisis experimental, cuando se realiza bien, puede exhibir un comportamiento inesperado que puede motivar un mejor análisis teórico.

El mundo no es simple ni claro. Por eso puede ser divertido, con espacio para todo tipo de habilidades. Cuestionar su propio conocimiento y responder preguntas de otros, por cualquier medio.

Dos cosas a menudo olvidadas: la ética de la ciencia y explicársela a la gente. Ambos son esenciales y difíciles.


como la referencia a la teoría versus el experimento, pero en realidad parece haber una separación bastante estricta entre el trabajo teórico / experimental en TCS que favorece / enfatiza el primero al menos en este sitio ... el trabajo empírico no es grande en comparación y lentamente se está volviendo más aceptado ....
vzn

8

En cierto sentido, navegar por este sitio le dirá el tipo de preguntas que los científicos teóricos de la computación piensan (en un nivel bajo). A un nivel muy alto, el informático teórico hace preguntas sobre los fundamentos matemáticos de la computación:

  • ¿Qué podemos calcular?
  • ¿Cómo podemos calcularlo?
  • Qué rápido ?
  • ¿Qué sucede cuando tenemos recursos limitados para calcular?
  • ¿Cuáles son los límites de lo que podemos calcular?

A partir de estas preguntas, surgen una gran cantidad de otros temas, tocando áreas de aplicaciones, matemáticas, otras partes de la informática, etc.


Esto me parece las preguntas clave en "Teoría A" (computabilidad, complejidad, algoritmos), no en "Teoría B" (lógica, semántica, teoría del lenguaje de programación). (Consulte cstheory.stackexchange.com/q/1521/989 en la terminología).
Blaisorblade

4

Se me ocurrió que los relatos de primera mano podrían ser útiles, pero estos parecen ser algo raros en CS (a diferencia de, por ejemplo, matemáticas, escritura biográfica / de memoria, etc.). Aquí hay dos referencias en línea que abordan la pregunta y pueden ser útiles. están más orientados a la vida estudiantil de doctorado y orientados a CS, pero la mayoría llevará a la investigación a nivel de profesor (aparte de la enseñanza, pero que también muchos doctores hacen). [Y de alguna manera se puede ver que los profesores escriben continuamente / repetidamente muchas "mini-" tesis doctorales (trabajos de investigación) o en algunos casos "super-" tesis doctorales (libros) sobre sus carreras.] También hay varios libros decentes sobre el tema agregará algunos si indica que serían una respuesta aceptable para su pregunta.

  • Cómo hacer una investigación en el MIT AI Lab "por un grupo de estudiantes graduados actuales, antiguos y honorarios del MIT AI Lab" / David Chapman, Editor

    Este documento presumiblemente pretende explicar cómo hacer una investigación. Proporcionamos heurísticas que pueden ser útiles para recoger las habilidades específicas necesarias para la investigación (lectura, escritura, programación) y para comprender y disfrutar el proceso en sí (metodología, selección de temas y asesores, y factores emocionales).

  • Cómo ser un estudiante de doctorado exitoso (en informática) Mark Dredze (Universidad Johns Hopkins), Hanna M. Wallach (Universidad de Massachusetts Amherst)


También se puede deducir un poco de la vida cotidiana de los investigadores de algunos blogs de ciencias de la computación escritos con "miradas internas"
vzn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.