Programming Languages: Design and Implementation by Terrence W. Pratt Coming from electronics and computer hardware this made me see that those "mysterious" high level languages where all just loops and if-then-else statements. Then Algorithms + Data Structures = Programs by Niklaus Wirth gave a good practical framework for entering computer science and software engineering.
Also recommended in this reply