O que a pesquisa em ciência da computação teórica envolve?


11

Estou tentando entender o que está envolvido na pesquisa teórica em ciência da computação. O que os cientistas da computação teóricos fazem?

Sei que um tempo significativo é gasto no ensino, na supervisão de estudantes de pós-graduação, na solicitação de financiamento e em funções departamentais. Colocando-os de lado, como você gasta seu tempo de pesquisa? Quais são as principais atividades que você costuma fazer? Suponho que você leia jornais, pense, faça reuniões e escreva documentos. Existem outros?


4
"como você gasta seu tempo de pesquisa?" ... enfrentando problemas que eu provavelmente nunca será capaz de resolver :-) :-)
Marzio De Biasi

7
É como descrever a pintura como "misturando tintas, montando uma tela, pintando e limpando seus instrumentos". Em outras palavras, ele descreve o que pode parecer a alguém assistindo, mas não tem relação com o que o campo é sobre :)
Suresh Venkat

1
Outras atividades: esporte, caminhada, atividades culturais e, geralmente, vida. Fazer outras coisas ajuda seu pensamento (e sua saúde).
babou

7
Penso que a pergunta não é sobre a filosofia da pesquisa da TCS ou o que o torna um pesquisador melhor, mas realmente sobre que tipo de atividades concretas um pesquisador da TCS realiza durante o horário de trabalho. Além do que já aparece na pergunta, eu acrescentaria a preparação de palestras, palestras, participação em conferências, revisão de seus próprios trabalhos, revisão de trabalhos de outras pessoas.
9789 Daniel Marx

2
Obrigado. Eu tenho uma idéia do tipo de perguntas de pesquisa que você estuda. Quero saber mais sobre suas atividades diárias. Pesquisando em engenharia de software envolve o desenvolvimento de programas de computador, execução de experimentos, coleta e análise de dados, ... Quero saber o que está envolvido em pesquisas teóricas. Como é o seu dia de trabalho típico?
estudante de graduação cs

Respostas:


12

Em relação aos tópicos

Existem diferentes tipos de questões que podem ser consideradas teóricas em ciência da computação. A palavra importante aqui é " teórica " (como todos nós temos alguma idéia do que a ciência da computação lida). Compreender a palavra teórico não é tão óbvio. Por um longo tempo, entendi que isso significava matemática, em oposição a, por exemplo, "hacking". Aprendi melhor com as pessoas em linguística: teóricopara eles claramente não significa matemática, mas com base em uma teoria que pode ser um pouco informal (embora também possa ser matemática), e é um corpo organizado de conhecimentos e conceitos que estruturam a compreensão dos fenômenos observáveis ​​e esperam permitir algum uso dedutivo e preditivo do conhecimento adquirido. Também reduz a quantidade de aprender e ensinar, reduzindo o número de conceitos primitivos dos quais o restante pode ser deduzido.

Teórico pode ser oposto ao prático , que é como esse conhecimento é realmente usado para executar motores de computação, para construir sistemas etc. Também posso me opor à aplicação, que é o uso desse conhecimento para resolver problemas em outros campos da ciência e da humanidade. Atividades.

Mas duvido que haja limites bem definidos.

Dito isto, a ciência da computação teórica cobre diversos domínios, e tentarei dar alguns, enquanto tenho certeza de que esqueço outros, e também que outras pessoas podem discordar dessa organização.

  • um domínio é a computabilidade , que estuda o que pode ser computado e como, em um sentido bastante abstrato: em grande parte o que é descrito na resposta de Suresh Venkat.

  • outra é a algorítmica , que encontra meios eficazes para calcular respostas a problemas específicos, com restrições específicas. Computabilidade é um contexto teórico para algoritmos.

  • semântica (por falta de um nome melhor), analisa a organização conceitual de problemas computacionais e de algoritmos em conceitos de nível superior, de modo a fatorar técnicas que se mostraram úteis e são frequentemente reutilizadas, como o conceito de subprograma, estruturas, módulos, ocultação de informações. Inclui o desenvolvimento de ferramentas matemáticas que formalizam adequadamente esses conceitos para permitir um raciocínio de alto nível (semântica de Scott, por exemplo). Também toca na maneira como isso é expresso, assim na separação e relação entre sintaxe e semântica. Os conceitos das linguagens de programação fazem parte (embora o design da linguagem seja provavelmente a aplicação prática desse conhecimento). Também pode incluir a relação entre teoria da prova e teoria da computação e o papel moderno dos sistemas de tipos.

  • outro tópico, que poderia se desenvolver mais do que tem até agora, é a relação entre computação e física fundamental. Por exemplo. existe uma relação entre os limites da computação e as propriedades do mundo físico, como a densidade da informação física ou as leis da termodinâmica. A computação quântica pode melhorar um pouco nossa capacidade computacional; poderíamos esperar mais? Alguns podem contestar que esse ainda seja o TCS, embora existam estudos sobre hipercomputação no TCS .

Em relação a atividades específicas

Estou pulando as atividades óbvias exigidas pela vida acadêmica. ou vida científica na indústria: ensino, publicação, revisão de artigos, solicitação de subsídios por escrito, responsabilidade acadêmica, gerenciamento de pessoas, aconselhamento de estudantes ou formuladores de políticas. Mas, mesmo assim, não há uma resposta simples para sua pergunta. Aqui, estou apenas esboçando alguns aspectos que me vêm à mente, mas tenho certeza de que há muito mais a ser dito. E não tenho certeza se estou respondendo. Alguns dos melhores cientistas escreveram livros sobre o trabalho deles, e isso pode lhe dar dicas sobre atividades científicas.

Pesquisando em teoria pode envolver uma variedade de coisas, dependendo de suas habilidades e interesses que variam muito de cientista para cientista. É um pouco difícil falar sobre isso, uma vez que cada pessoa percebe mais sua própria atividade e interesses do que a dos outros. A maioria das pesquisas requer um amplo conhecimento, já que resultados interessantes e realmente originais geralmente surgem quando se relaciona, transfere uma técnica de um (sub) campo para outro ou obtém diferentes visões técnicas do mesmo problema. Portanto, é importante aprender o máximo que puder em profundidade e em profundidade. Lembre-se de que, embora você tenha tempo e capacidade para isso como estudante ou como professor / cientista júnior, ambos serão reduzidos mais tarde, devido às responsabilidades e à vida em geral. Ensinar o que você não é especialista pode ser uma maneira de continuar aprendendo.

O tipo de trabalho que as pessoas realizam pode variar muito, porque felizmente as pessoas são muito diferentes, com uma grande variedade de interesses e habilidades técnicas, complementando-se. Algumas pessoas são solucionadoras de problemas. Eles examinam questões teóricas ou práticas levantadas por outras pessoas, ou por si mesmas, e tentam resolvê-las, ou aproximam-se de uma solução completa ou parcial. Outras pessoas serão melhores em estruturar o conhecimento existente, colocar as coisas em relação e, em seguida, encontrar novas perguntas a fazer. Ambos são essenciais.

Encontrar provas mais simples de resultados técnicos, ou apresentações mais simples de teorias ou mesclar conceitos é importante. Ele generaliza resultados, reduz o número de coisas a aprender, enfatiza as idéias essenciais e, possivelmente, traz um novo entendimento. Como nosso tempo de aprendizado é limitado, o progresso só é possível quando condensamos conhecimento.

Um exemplo simples é o estudo de famílias abstratas de linguagens formais. Quando a teoria da linguagem se desenvolveu, as propriedades de fechamento sob várias operações foram provadas repetidamente para cada família de línguas (regular, livre de contexto, ER, ...), com técnicas ad hoc dependendo da família. Ocorreu então que essas propriedades de fechamento tinham relações intrínsecas independentemente das famílias envolvidas e foram estudadas como tais. Hoje, precisamos verificar apenas algumas das propriedades mais simples de fechamento de uma determinada família e obtemos "de graça" todo um conjunto de outras propriedades.

Outro ponto importante é que não existe uma distinção tão clara entre trabalho teórico, prático ou experimental. Uma boa teoria pode levar à implementação de sistemas que podem mecanizar a resolução de problemas. E será necessário um bom teórico para implementar esse sistema, com uma mistura de trabalho teórico e prático, incluindo a implementação do sistema ou o design da linguagem. Muitos exemplos vêm à mente, como sistemas de prova e / ou síntese de programas, linguagem especializada para sistemas paralelos síncronos, uma linguagem algorítmica restrita para a qual a complexidade computacional pode ser derivada sistematicamente. Não só é importante ser capaz de produzir esses sistemas práticos, que tornam os resultados teóricos mais amplamente disponíveis e utilizáveis, como também é muito importante para o teórico usar de maneira eficiente esses sistemas, apenas para descarregar as partes agora menos criativas de seus sistemas. trabalho ou contribuir para o desenvolvimento e extensão desses sistemas.

Outro aspecto é poder comparar abordagens teóricas por experimentação prática. Aqui, a questão é comparar técnicas diferentes para atingir o mesmo objetivo. A comparação de implementações geralmente não faz sentido, pois sua eficiência geralmente depende da linguagem de programação ou das habilidades de programação do implementador. Mas se eles podem ser expressos todos em uma estrutura teórica comum, então às vezes é possível compará-las experimentalmente dentro dessa estrutura. Aqui, teoria e prática se apoiam, como costumam fazer na ciência. A análise teórica pura nem sempre é fácil de obter. Além disso, a análise experimental, quando bem conduzida, pode exibir um comportamento inesperado que pode motivar uma melhor análise teórica.

O mundo não é simples ou claro. É por isso que pode ser divertido, com espaço para todos os tipos de habilidades. Questionar seu próprio conhecimento e responder a perguntas de outras pessoas, por qualquer meio.

Duas coisas muitas vezes esquecidas: ética da ciência e explicá-la às pessoas. Ambos são essenciais e difíceis.


como o ref to theory vs experiment, mas na verdade parece haver uma separação bastante estrita entre o trabalho teórico / experimental no TCS, favorecendo / enfatizando o primeiro pelo menos neste site ... o trabalho empírico não é grande em comparação e lentamente se torna mais aceito ....
vzn

8

Em certo sentido, navegar neste site mostrará os tipos de perguntas que os cientistas da computação pensam (em um nível baixo). Em um nível muito alto, o cientista da computação teórico faz perguntas sobre os fundamentos matemáticos da computação:

  • o que podemos calcular?
  • como podemos calcular isso?
  • Quão rápido ?
  • o que acontece quando temos recursos limitados para calcular?
  • quais são os limites do que podemos calcular?

A partir dessas perguntas, surgem vários outros tópicos, abordando áreas de aplicação, matemática, outras partes da ciência da computação e assim por diante.


Isso me parece as perguntas principais da "Teoria A" (computabilidade, complexidade, algoritmos), não da "Teoria B" (lógica, semântica, teoria da linguagem de programação). (Consulte cstheory.stackexchange.com/q/1521/989 na terminologia).
Blaisorblade

4

Ocorreu-me que os relatos de primeira mão podem ser úteis, mas esses parecem ser um tanto raros no CS (em oposição a, por exemplo, matemática, redação biográfica / escrita tipo memórias etc). Aqui estão duas referências on-line que abordam a questão e podem ser úteis. eles são mais voltados para a vida de estudantes de doutorado e orientados para o ensino superior, mas a maioria será direcionada para pesquisas em nível de professor (além do ensino, mas também o fazem muitos doutorados). [e, de certa forma, os professores podem ser vistos como escrevendo contínua / repetidamente muitas teses de "mini-" teses de doutorado (trabalhos de pesquisa) ou, em alguns casos, "super-" teses de doutorado (livros) em suas carreiras.] também existem vários livros decentes sobre o assunto adicionará algumas se você indicar que elas seriam uma resposta aceitável para sua pergunta.

  • Como fazer pesquisas no MIT AI Lab "por um grupo de estudantes atuais, antigos e honorários do MIT AI Lab" / David Chapman, editor

    Este documento pretende presunçosamente explicar como fazer pesquisas. Fornecemos heurísticas que podem ser úteis para captar as habilidades específicas necessárias para a pesquisa (leitura, redação, programação) e para entender e aproveitar o próprio processo (metodologia, seleção de tópicos e orientadores e fatores emocionais).

  • Como ser um aluno de doutorado bem-sucedido (em ciência da computação) Mark Dredze (Universidade Johns Hopkins), Hanna M. Wallach (Universidade de Massachusetts Amherst)


Também um pouco de vida diária pesquisador pode ser adquirida a partir de alguns blogs de ciência da computação escritos com "olhares dentro"
vzn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.