How to Get Started in Computer Science I am wondering how to get started in studying theoretical computer science and how to apply it to my programming. I am fairly comfortable with basic programming, having been programming in mainly C++ but also Java for the past couple of years, so I don't necessarily need an introduction to programming.

What I am looking for to start is perhaps something fairly broad, so that it gives a wide overview of computer science, as I don't know exactly where I want to study within it yet. But it could also be nice to have directions of where to look to continue studying a specific aspect of it. However, this is just what I think could be helpful, and I am open to any recommendations.
Theoretical computer science means different things to different people. However, here are some areas which are commonly taught in undergraduate theoretical computer science classes:


Combinatorics and elementary set theory. This serves as prerequisite to all that follows.
Data structures and algorithms. One standard textbook is Introduction to algorithms, but it might be too advanced if you're just starting out.
Computability and automata theory. One standard textbook is Introduction to the theory of computation by Michael Sipser.


In some places, another core subject is functional programming and labmda calculus.

An undergraduate degree in computer science typically deals with several other topics, such as operating systems, networking, and sometimes compilation.