What does exactly theoretical computer science entail? 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.
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&nbsp;&ndash; but only because people who do machine learning tend to say "I do machine learning."