1. To start with the basics. At least a cursory glance at Wikipedia glide

\r

— algorithms (linear, branched, cyclic, recursive)

— data structure (scalars, arrays, structures, trees)

concepts (linear, procedural, object-oriented)

— patterns (programming patterns)

\r

2. On each of the items is clear, what books to look for. But reading the Carrot and Dijkstra need some no mathematical training.

\r

3. On the specifics, it is time to determine the language.

The balance between academic quality and relevance — Java, C++

\r

Accurate names, alas, will not help. I read long ago, can't remember.

Something like that...