Think Java : How to think like a computer scientist - Downey, Allen B. (O'Reilly Media, 2019)