Programming in Java · Computer Science · an Interdisciplinary Approach

  • This seems to be a good textbook. I really like that there's a part with a virtual machine [1]. It's a good way to "tie everything up", especially if you have a simple language that you compile to this virtual machine. It really helps demystifying computer science and programming.

    [1]: https://introcs.cs.princeton.edu/java/60machine/