A good starting point is a discrete math class/book. Much of CS builds off discrete math heavily and thus it's a requirement.
I cannot easily recommend one from experience because I learned this at a university. This course looks promising. The textbook I used (and I learned mostly from the text) was this one. It's not bad, but you can probably do better (but I don't know the alternatives well enough to say). This one requires nothing more than high school level algebra (but it will require a mathematical mindset and some effort).
After that, I'd follow up with a course on formal computation theory. Something that would cover languages (regular languages, context free grammars, etc) and abstract machines such as automata and Turing machines. Here's one such course. The resource I used here (and CAN recommend) is this one. Just note that it's a very tough read.