Who this book is for
This book can be understood by anyone who is a graduate of computer science or someone who has just begun working as a software engineer. Basically, an understanding of an object-oriented programming language such as Python, C++, or indeed, an earlier Java version, is sufficient. It would be helpful to have participated in the full product cycle of a software engineering project.