This sounds like a better fit for say academia.stackexchange, as this is mostly subjective, so bear in mind this is mostly "just my opinion".
My advice would be to start with Algorithms, at a high level: learning about the big algorithmic paradigms (greedy, dynamic, linear programming...), runtime analysis (all the landau notations and derivatives, amortised analysis...), and go through the sorting algorithms at least. A good resource for that could be . This part should be seen as "fun problem solving" I reckon.
In parallel, I would study the foundations of computer science and computability (easier if you've studied Logic before):
- Starting with finite automata/rational languages, and grammars
- Building your way up to Turing Machines (with equivalency to recursive functions and lambda calculus)
- Finally getting to the distinction between computable and undecidable
Along the way you should have got a small introduction to complexity theory, which should enable you to understand what the classes P and NP are, as well as what an NP-complete problem is.
 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms, Third Edition (3rd. ed.). The MIT Press.