tags:

views:

286

answers:

8

Hi, Can anybody please explain me use/importance of studying Theory of Computation.

I had course on the same subject during graduation but I did not study is seriouly.

I also found following link where some video lecture are available.

http://aduni.org/courses/theory/index.php?view=cw

A: 

The importance of Computation Theory will depend on what you do with your life. If you want to be a Computer Scientist, then it is an important basis for your future studies.

If you just want to be a Programmer or Software Engineer, then you will probably never use the knowledge again.

John Saunders
"just a programmer"? Sir, I challenge you to 1's and 0's at dawn!
Peter Rowell
I think computational theory is important for any serious programmer / software developer. It's sort of like learning geometry to be an architect; there are tools to help you do your job, but it's good to know why it works that way.
orokusaki
@orokusaki: if you enjoy knowing "why things work", then go ahead. My point is that I have never used any of this CS stuff in the past 30 years, and don't expect to do so in the next 30, either.
John Saunders
+5  A: 

I think every computer science student should know some of computation theory, even you won't do any research.

Some concepts are just universal and you will encounter them again and again in other courses. E.g. finite state machines, you need to know them when you are learning string matching algorithms, and compilers. Another example, you will learn some reduction algorithms (transforming from one model to another model) in computation theory, these things teach you how to think abstractly and algorithmically.

Yin Zhu
@Yin Zhu: personally, computability theory taught me almost nothing. It was interesting, but of no practical value. I learned state machines more from learning UML than from learning the theory behind them. Still, to each, his own.
John Saunders
@John, I agree with you. I first learned state machines when I was learning algorithms. But computation theory course has a formal treatment of this, which shows another aspect of the knowledge.
Yin Zhu
@Yin Zhu: again, if you're interested in it, then learn it. The other aspect has been of interest to me, but has been of no practical value.
John Saunders
+1  A: 

The greatest of all human faculties is the power of abstraction. That is what separates us from the animal. The more we exercise this power the more successful we are in solving problems.

Playing Chess may seem a futile pastime to some and never of practical use to any but goes a long way to give the player the ability to think ahead every time an important decision is to be made.

Besides, it reveals the elegance and simplicity that is hidden beneath layers of ugly syntax and brain-dead code we sift through every day just to make a living.

Square Rig Master
A: 

Its really not without its practical aspects in regards to software engineering.

For example, you may be tempted to parse some programming language as input to your program with Regular Expressions. CS Theory proves why this is a bad idea (most programming language syntaxes are not Regular), and can never be overcome no matter how much you'd like to try.

Other examples may include NPC problems, etc.

Basically, CS Theory can teach you many important things with regards to reasoning. But it also describes the fundamental limits to programming and algorithms.

"Know your limits"

Willi Ballenthin
+4  A: 

Shai Simonson's classes are really very good. I have listened to them. As he says in the initial lecture, 'Theory of Computation' is a study of abstract concepts. But these abstract concepts are really very important to better understanding of the field of Computing, as most of the concepts we deal with have lot of abstract and logical under pinnings. As John Saunders said in an above answer,you can become a programmer, even a good one if you know the programming language well. But the knowledge of what is going underneath will always makes you an enlightened one. So go ahead and learn it again (NB: I understand why you didn't study it seriously at college. Most of the teachers in our colleges aren't that good at explaining this topic (I too had a lousy teacher), but I assure you the teacher here is the best you can get,)

Christy John
A: 

Theory of computation is sort of a hinge point among computer science, linguistics, and mathematics. If you have intellectual curiosity, then expose yourself to the underlying theory. If you just want to dip lightly into making computers do certain things, you can probably skip it. Me? I loved it. But I also liked topology, so I may not be a typical developer in that respect.

Joe Mabel
A: 

In addition to the usefulness of various tools (regular expressions, context free grammars, state machines etc.) in your daily life as a programmer, a good theoretical computer science course will have taught you how to model certain problems in a way that you can tackle effectively.

Solutions that seem clever to people without training in this discipline will seem natural and "the right way" to people who have. I recommend that you pay close attention to what's going on in your course since it will give you a very powerful toolset that will help you as a programmer and as an abstract thinker.

Noufal Ibrahim
A: 

Some practical examples:

Before spending a lot of time on a problem you'll want to know:

  • If the problem can't be solved.

  • If there is a "good" (polynomial) solution, as some problems may don't have good" solutions (or at least, not ones we currently know of ;))

  • (A bit less practical) you'll want to know if a problem is "harder" than other, that is, takes more time/space.

Liran Orevi
@Liran Orevi: I guess I've lived a sheltered life - I've never been given a problem to solve that has turned out not to be solvable. That has never been my job. If I suspected the problem was not solvable, it would not be my job to prove that - if we bothered to prove it at all, we'd hire a CS PhD - as a temp.
John Saunders
@John Saunders, unfortunately some people don't suspect -Check the post "14 Apr 2009 @ 16:37 by ATuring" from: http://ming.tv/flemming2.php/__show_article/_a000010-001018.htm
Liran Orevi
I don't care. The number of such problems in real life is small.
John Saunders