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.<p>[1]: <a href="https://introcs.cs.princeton.edu/java/60machine/" rel="nofollow">https://introcs.cs.princeton.edu/java/60machine/</a>