0
$\begingroup$

I am confused by the term "theoretical computer science". How can I distinguish which part of computer science are considered "theoretical" and which not?

To expand further, take Machine Learning. Is the study of Machine Learning Theoretical Computer Science? To me it is, because we are studying the computational qualities of learning, without declining our study into a particular technology or application, but usually, I hear machine learning spoken as a part of applied CS or engineering.

$\endgroup$

closed as too broad by Raphael Jun 23 at 19:22

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    $\begingroup$ One person's theory is another person's practice. Have a look the ACM Computing Classification System to see what's usually considered theory in CS. $\endgroup$ – Marcus Ritt Jun 23 at 18:58
  • $\begingroup$ @MarcusRitt great resource! $\endgroup$ – olinarr Jun 23 at 19:14
  • 1
    $\begingroup$ I think we can involve the concept of proof to distinguish theoretical CS from all the remaining CS. $\endgroup$ – HEKTO Jun 23 at 19:21
  • $\begingroup$ Not only are you going to get n+1 subjective answers, asking for definitions of (sub-)disciplines is also too broad for a single SE question. $\endgroup$ – Raphael Jun 23 at 19:23
1
$\begingroup$

CS isn't neatly divided into "applied" and "theoretical". Work that seeks to build systems and solve practical problems tends to get described as "applied"; work that seeks to increase our knowledge of computation tends to get described as "theoretical". Machine learning covers a spectrum that includes both.

If somebody said to me "I'm a theoretical computer scientist", I probably wouldn't assume they did machine learning – but only because people who do machine learning tend to say "I do machine learning."

$\endgroup$
0
$\begingroup$

I am not an expert - so feel free to correct me. For what I know (from my Bsc) theoretical computer science entails multiple fields of studies, which the more prominent ones are:

Complexity theory - the study of how much reources in terms of time/space an “algorithm” (or any program) needs. (Based on the Turing machines model)

Computation - can a certain problem be computed with plausible resources

Algorithms - how to compute a solution for a specific problem

Data structures- the algorithms building blocks, how to hold data efficiently with consideration to time and space.

Of course there are many other topics, which also rely on these above. But in most Bsc/BA Computer Science degrees - these are considered as the theoretical courses.

And a nice quote to sum up, as Edsger Dijkstra (a very influential computer scientist who invented one of the best shortest path algorithms and the Semaphore) “Computer Science is no more about computers than Astronomy is about Telescopes ”

$\endgroup$
  • 1
    $\begingroup$ Since you exclude logic, semantics, type theory, concurrency theory, etc., I'm assuming you're in the US. 😉 $\endgroup$ – David Richerby Jun 23 at 18:47
  • $\begingroup$ Israel actually, though good chances that the curriculums are similar :) (just guessing) $\endgroup$ – royashcenazi Jun 23 at 18:49

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