I recommend “Structure and Interpretation of Computer Programs” (by Harold Abelson and Gerald Jay Sussman with Julie Sussman) for computer science basics based on other developers’ opinions, but I’ve never gone through the whole book myself, which makes my advice a bit disingenious.
Why not follow through, take my own medicine and do all 356 exercises? Current progress: 15/356 exercises. (Last updated: March 1, 2021.)
I wrote in “Junior to Senior”:
Widely known simply as “SICP” and praised by many developers, this is an introductory Computer Science course at MIT turned into a book. It uses a dialect of Lisp for instruction (remember how useful it is to learn a language different from what you know?) and moves assuredly and swiftly through some advanced concepts.
We’re not aiming to replicate a Computer Science degree, but to revisit or learn the fundamentals. Again, you don’t need to read [it] or do the exercises, but [it is] fun and accessible if you’re diligent, and you can learn a lot even if you’re more experienced.
I’m doing the work in a public repository.
SICP online
Reading SICP has never been easier than now.
The book is available for free on the MIT Press website. This is the version I’m reading.
The July 1986 version of the MIT 6.001 course is also available for free on the MIT OpenCourseWare YouTube channel. There are twenty lectures, presented by the authors of the book themselves. The sound is not great, but you can turn on subtitles.
As an alternative, there are SICP video lectures for the Berkeley Computer Science 61A course (2011).
λ