Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Would it be worth taking Automata over Databases or Networking assuming no immediate plans on a Masters degree in Computer Science? I'd assume I'd learn things in there that would somehow be real work applicable like complexity theory but is it more useful immediately out of school or better to do a course somewhere post baccalaureate and take something more obviously applicable in its place? I've limited slots left or I'd take all of them.

share|improve this question

closed as off-topic by MichaelT, Dan Pichelman, GlenH7, Kilian Foth, mattnz Sep 20 '13 at 8:46

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, Dan Pichelman, GlenH7, Kilian Foth, mattnz
If this question can be reworded to fit the rules in the help center, please edit the question.

I had to take all 3, but my db and net classes were so bad that I liked Automata the most. You can always pick up the practical stuff yourself. –  Job Aug 11 '11 at 18:26
The class I had over automata (called "Theoretical Foundations of Computing") was a disaster. This was mostly due to a bad professor, but the fact that it had little real-world application didn't help. While I am convinced it was a waste of time, I am now curious about things like grammars, and I would take the class again if I had time (and a better professor). –  Phil Aug 12 '11 at 1:18

5 Answers 5

up vote 5 down vote accepted

If it's going over Turing machines and Finite state automata then the only real world application I know is parsing. Oddly I have, on rare occasion, used that, but unless you are writing a compiler generator or a compiler that doesn't use a compiler generator it probably isn't useful. Databases and networking are likely more practical.

My particular course on automata didn't teach complexity theory though it did ask questions that assumed you had already studied it.

share|improve this answer
There are other applications for automata, but it's mostly a useful idea rather than something you'll be working with every day. –  Steve314 Aug 12 '11 at 3:18

Your databases class will be more useful, though probably far less interesting.

My instructor actually prefaced his Automata theory class with "this class has no application to software engineering. If you want something that's going to directly help you become a better programmer, this isn't it". (He was wrong though, since I wound up using my knowledge of context free grammars and languages in general when I had to make a parser and grammar in an internship...anywho...)

That automata theory class was my favorite computer science class I ever took. It expanded my brain in ways that didn't directly make me a better programmer, but helped me become more intelligent in general. The questions in the class were so interesting:

  • What are the limits of computation?
  • What programs could never be solved on (type of machine)
  • Are all infinities the same?

My databases class on the other hand was far more practical and less thought-provoking, consisting of:

  • Make a website using a database (in particular, we made an IMDB style website)
  • Learn how to query
  • Write an index


So...your call. But if there's a good teacher teaching automata theory, I'd highly recommend it. Ideally, take both before you graduate.

share|improve this answer

In my experience you are more likely to experience work-related problems that have to do with databases than automata. You probably have some basic work in automata done from earlier courses, so I'd recommend the databases course.

share|improve this answer

Fluency in databases can cater to short term as well as mid term needs. And, when you go for Masters', you could choose to specialize in databases. My guess is, more universities should be offering databases in their Master's courses than Automata. Databases have work opportunities for all range of academic performers.

If you go the Automata way, the chances and scope of using it at work are very rare. If you haven't worked in Automata, doing a Master's course in Automata after some time is unlikely to brighten your chances of working using the principles you learn in Automata. Automata tends to have work opportunities only for a few of the top academic performers. This, mostly in conjunction with other subjects such as principles of programming languages or algorithms.

I was an average performer in university. If I were to pick one, I would go the databases way.

share|improve this answer

Automata is all about Abstraction and Problem Solving.

I tell my fellow Computer Scientists that this course was where I finally "Got it".

Grammars, Regular Expressions, constructing Turing Machines. You will learn so much stressing your brain on these topics they will help you day to day in your Programming/Engineering Career.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.