A concise and practical introduction to programming algorithms in Java (Springer, 2009)