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.