Estratégias para tornar-se imparável na compreensão do TCS

19

Sou estudante de graduação em teoria da computação e tenho sérios problemas em produzir conteúdo quando me pedem. Sou capaz de acompanhar o livro (Introdução à Teoria da Computação, de Michael Sipser) e as palestras; no entanto, quando solicitado a provar algo ou a apresentar uma descrição formal de uma MT específica, eu apenas engasgo.

O que posso fazer nessas situações? Acho que meu problema é compreender conceitos abstratos até o ponto em que posso usá-los. Existe uma maneira estruturada de abordar um conceito novo e abstrato e, eventualmente, criar intuição?

trigoman
fonte
5
me bate. essa parece ser uma pergunta razoável para este site.
Suresh
4
Eu votei para fechar. A questão principal que vejo é que a questão não é realmente sobre ciência da computação; é sobre como aprender ciência da computação. O último não tem uma resposta objetiva, porque cada pessoa terá seu melhor caminho. Os três votos a encerrar são todos atribuídos à razão "localizada demais", mas acho que essa questão também está fora de tópico, pois não se trata de ciência da computação.
Carl Mummert
1
Eu acho que essa questão tem mérito e é o tipo de pergunta com a qual luto intensamente. Penso que obter orientação sobre esses tipos de problemas de uma comunidade confiável é algo com o qual muitos estudantes de ciências lutam. Mas eu entendo a objeção à questão. Parece-me que a questão é bastante apropriada para a seção meta deste site.
BrotherJack
6
@CarlMummert: Toda pergunta sobre ciência da computação é sobre como aprender ciência da computação.
Jeffe
2
A questão é excessivamente ampla em sua forma atual. Focalize sua pergunta, por exemplo, solicite recursos (por exemplo, livros de problemas) para ajudar a melhorar sua capacidade de resolver perguntas no curso, ou se você tiver um exemplo específico, concentre-se nesse problema e pergunte sobre intuição ou métodos para abordar problemas semelhantes.
Kaveh

Respostas:

15

Abstração é basicamente pão e manteiga na ciência da computação, mas infelizmente é difícil ensinar explicitamente.

Na minha opinião, entender conceitos é mais importante do que ser capaz de calcular ou provar mecanicamente coisas. Claro, você precisa conhecer alguns métodos básicos, mas a carne está em outro lugar.

Primeiro de tudo, você precisa entender o conteúdo até certo ponto. Para esse fim, achei útil fazer a seguinte pergunta sempre que algo não estiver claro para você:

  • Por que estamos fazendo isso?
  • Para que vamos usar isso?
  • A que coisas semelhantes isso se relaciona?
  • Como outras fontes explicam isso?
  • O que exatamente eu não entendo?

Depois de responder a essas perguntas (ou descobrir perguntas de acompanhamento e tratá-las da mesma maneira) e ainda ter problemas, vá para seus professores (ou aqui). Agora você deve ser capaz de formular uma pergunta focada e formulada com precisão; responder a essas perguntas é o trabalho de seus professores (e a filosofia do StackExchange).

Fora isso, é exercício e experiência. Tente reproduzir as provas depois de lê-las; tome cuidado para não aprendê-las de cor, mas destile suas idéias importantes. Depois de algum tempo, você poderá reproduzir todas as provas básicas preenchendo as lacunas entre as etapas principais. Mais tarde, você começará a ver padrões em declarações e provas. É assim que as pessoas olham para uma afirmação e dizem: "Ah, claro, use o método X com o teorema Y e, em seguida, use Z para obter o que deseja". É o reconhecimento de padrões alimentado por anos de treinamento. Seja paciente.

Quanto aos exercícios básicos, vá e encontre livros de texto com alguns. Em cima da minha cabeça, posso me referir à Matemática Concreta de Graham, Knuth e Patashnik. Este livro não é apenas uma preciosa caixa de ferramentas para cientistas da computação, mas também contém muitos exercícios com soluções (!). Lembre-se de tentar resolvê-los antes de procurar as respostas e reproduzir as respostas que você teve que procurar.

Outro livro útil é Introdução aos algoritmos de Cormen, Leiserson, Rivest e Stein. Está incluído um capítulo considerável sobre noções matemáticas. Ele também contém muitos exercícios; soluções estão disponíveis na página vinculada (Conteúdo Complementar). Há também uma palestra em vídeo de um dos autores que pode ir bem com o livro.

Para palestras introdutórias sobre provas, dê uma olhada em Provas de álgebra linear na Khan Academy . Eu não os assisti, mas espero que sejam básicos e úteis. Existem muitas outras provas na Khan Academy; Eu apenas acho que as provas de álgebra linear podem se encaixar melhor na ciência da computação. Não hesite em assistir os outros também.

Rafael
fonte
7
Concordo que entender conceitos é mais importante que a capacidade de calcular ou provar coisas. Mas o entendimento é o resultado da prática com cálculos e provas, não um substituto para essa prática.
Jeffe
Obrigado pela compreensão. Vou seguir seus conselhos com carinho e tentar melhorar com base nisso.
trigoman
Para necessidades mais básicas, o Livro de provas pode ser uma referência valiosa.
Raphael
8

Às vezes, descubro que pessoas que não se saem bem na teoria, apenas entendem o básico errado (nas primeiras 1-3 palestras, eles acharam o material muito fácil, então não prestaram muita atenção, mas então, na aula 5-7, as coisas aceleram e é tarde demais para recapitular).

Como disse o @fbernardo, pode ser uma boa ideia começar do começo. NÃO na medida do FLA (não há utilidade nisso quando se estuda TC, IMHO), mas definitivamente abra o Sipser e comece a resolver as perguntas uma por uma, por ordem delas. Com a experiência, você terá intuição e ferramentas básicas que são essenciais para conceitos mais avançados.

Se você não conseguir lidar com as questões básicas de Sipser do primeiro capítulo (e não os capítulos de autômatos, se você estuda sobre MTs), poderá estar faltando conceitos ainda mais fundamentais, como métodos de prova básicos (indução etc.) ou configurações básicas teoria e matemática discreta.

Boa sorte, de qualquer maneira!

Tocou.
fonte
3

Meu único conselho seria que você começasse do começo. No meu curso, também usamos o livro de Sipser, na minha opinião, é um bom livro. Mas nós temos um curso antes da TC, chamado FLA (Línguas formais e autômatos), que deu uma melhor intuição e conhecimento sobre a TC. Então, novamente, todo mundo aprende a taxas diferentes, e você tem um livro muito bom. Qualquer outra pergunta específica, você sempre pode encontrar ajuda aqui. :)

fbernardo
fonte
2

Você faz uma pergunta geral em seu título e, em seguida, pelo menos dois pontos básicos / específicos na pergunta, e acho que há boas (separadas) respostas para cada uma:

  • como provar coisas
  • criar descrições formais de um comportamento de TMs

Aqui, abordando apenas o primeiro item (que é inerentemente amplo e merece) - seu tipo de elefante na sala de educação em STEM (ciência, tecnologia, engenharia, matemática) que fica escassa - e muitas vezes é encoberta em um grau impressionante . Pode parecer que ninguém sabe realmente como ensinar provas. Esse assunto começa nas classes de geometria, trigonometria e cálculo, mas raramente é um elemento estrito. a maioria dos professores o trata como opcional. Parece que uma turma inteira dedicada a "como provar coisas" seria uma adição ou mudança excelente ou até crítica à educação em STEM.

Aqui estão alguns árbitros que eu encontrei em uma pesquisa rápida sobre como provar coisas, e acho que existem muitos outros bons recursos. Hoje em dia também existem provavelmente muitos vídeos sobre o assunto que poderiam ser exibidos através de pesquisas, mas ainda não vi uma organização abrangente e agradável de vídeos do tipo "como provar coisas".

Uma parte essencial da prova é dominar o básico da matemática e usá-la como ferramentas ou partes de construção. Por exemplo, saiba o que é um conjunto, o que é uma tupla, qual é a diferença / semelhança, quando você usaria um, mas não o outro, etc.

Outra abordagem é tratá-lo como uma broca. Faça muitas provas por conta própria, começando de fácil a difícil (gostaria de saber de mais livros como esse, parece não haver muitos).

vzn
fonte
1
Adicione o clássico de Pólya "Como resolvê-lo". Também é útil (especialmente para graduados) procurar a redação matemática, por exemplo, Knuth et al "Redação matemática". Essa é uma habilidade muitas vezes tomada como certa.
vonbrand