Fundamental Programming with Java Object Oriented Programming Discrete Structures Logic And Application