ACHIEVING LOW-LEVEL DESIGN IN JAVA: A REAL-WORLD TUTORIAL