This text provides a fresh approach to the fundamental role of powerful mathematics in modern cryptography while introducing programming concepts in Java a language designed for system security. The text targets undergraduates in introductory cryptography courses who have a working knowledge of Java