happy female web developer looking at he



zyBooks: A Wiley Brand logo.png
Gen Infiniti Academy GIA Logo (words) SQ

In the Programming in Java zyBook, you will learn how to code based on the Java version 11 language standard.


Since Java is a platform-independent language, your code can then be used across any operating system, making it one of the most flexible coding languages available.

Research Proven Excellence

Preferred Choice

80% of surveyed students preferred zyBooks over regular textbooks.

Better Learning

Studies show that students learn 118% more with the minimal text model in only one lesson.

Proven Results

On average, zyBook users improved grades up to ⅔ and read 74% more than users of regular textbooks.

What is a zyBook?

In short, zyBooks are interactive, digital textbooks.


By incorporating available technology, zyBooks make learning fun, interactive and engaging – all while drastically reducing the time spent on learning theoretical concepts.

What is a zyLab?

zyLabs are online lab environments that are integrated into their respective zyBooks.

Through zyLabs, you can practice your new skills and obtain immediate feedback and grades. No additional downloading of software required.

Course Details

The Programming in Java zyBook introduces and cements essential programming concepts with minimal text, maximum interactivity.


Module 1: How to use a zyBook

1.1 Basics 1.2 Account and platform basics 1.3 Progression challenge activities 1.4 Programming challenge activities 1.5 Feedback 1.6 zyLab basics

Module 2: Introduction to Java

2.1 Programming (general) 2.2 Programming basics 2.3 Comments and whitespace 2.4 Errors and warnings 2.5 Computers and programs (general) 2.6 Computer tour 2.7 Language history 2.8 Problem solving 2.9 Why programming 2.10 Why whitespace matters 2.11 Java example: Married-couple names

Module 3: Variables and Expressions

3.1 Variables and assignments (general) 3.2 Variables (int) 3.3 Identifiers 3.4 Arithmetic expressions (general) 3.5 Arithmetic expressions (int) 3.6 Example: Health data 3.7 Floating-point numbers (double) 3.8 Scientific notation for floating-point literals 3.9 Constant variables 3.10 Using math functions 3.11 Integer division and modulo 3.12 Type conversions 3.13 Binary 3.14 Characters 3.15 Strings 3.16 Integer overflow 3.17 Numeric data types 3.18 Random numbers 3.19 Reading API documentation 3.20 Debugging 3.21 Style guidelines 3.22 Java example: Salary calculation 3.23 Java example: Salary calculation with variables 3.24 Java example: Married-couple names with variables

Module 4: Branches

4.1 If-else 4.2 More if-else 4.3 Equality and relational operators 4.4 Detecting ranges (general) 4.5 Detecting ranges with if-else statements 4.6 Logical operators 4.7 Example: Toll calculation 4.8 Order of evaluation 4.9 Switch statements 4.10 Boolean data type 4.11 String comparisons 4.12 String access operations 4.13 Character operations 4.14 More string operations 4.15 Conditional expressions 4.16 Floating-point comparison 4.17 Short circuit evaluation 4.18 Java example: Salary calculation with branches 4.19 Java example: Search for name using branches

Module 7: User-Defined Methods

7.1 User-defined function basics 7.2 Return 7.3 Reasons for defining functions 7.4 Methods with branches/loops 7.5 Unit testing (methods) 7.6 How methods work 7.7 Methods: Common errors 7.8 Array parameters 7.9 Scope of variable/method definitions 7.10 Method name overloading 7.11 Parameter error checking 7.12 Using Scanner in methods 7.13 Perfect size arrays 7.14 Oversize arrays 7.15 Methods with oversize arrays 7.16 Comparing perfect size and oversize arrays 7.17 Using references in methods 7.18 Returning arrays from methods 7.19 Common errors: Methods and arrays 7.20 Java documentation for methods 7.21 Java example: Salary calculation with methods 7.22 Java example: Domain name validation with methods

Module 6: Arrays

6.1 Array concept (general) 6.2 Arrays 6.3 Array iteration drill 6.4 Iterating through arrays 6.5 Multiple arrays 6.6 Swapping two variables (General) 6.7 Loop-modifying or copying/comparing arrays 6.8 Debugging example: Reversing an array 6.9 Two-dimensional arrays 6.10 Enhanced for loop: Arrays 6.11 C example: Annual salary tax rate calculation with arrays 6.12 C example: Domain name validation with arrays

Module 5: Loops

5.1 Loops (general) 5.2 While loops 5.3 More while examples 5.4 For loops 5.5 More for loops examples 5.6 Loops and strings 5.7 Nested loops 5.8 Developing programs incrementally 5.9 Break and continue 5.10 Variable name scope 5.11 Enumerations 5.12 Java example: Salary calculation with loops 5.13 Java example: Domain name validation with loops

Module 11: Inheritance

11.1 Derived classes 11.2 Access by members of derived classes 11.3 Overriding member methods 11.4 The Object class 11.5 Polymorphism 11.6 ArrayLists of Objects 11.7 Abstract classes: Introduction (generic) 11.8 Abstract classes 11.9 Is-a versus has-a relationships 11.10 UML 11.11 Interfaces 11.12 Java example: Employees and instantiating from an abstract class 11.13 Java example: Employees and overriding class methods

Module 10: Input / Output

10.1 Output and input streams 10.2 Output formatting 10.3 Streams using Strings 10.4 File input 10.5 File output

Module 9: Memory Management

9.1 Introduction to memory management 9.2 A first linked list 9.3 Memory regions: Heap/Stack 9.4 Basic garbage collection 9.5 Garbage collection and variable scope 9.6 Java example: Employee list using ArrayLists

Module 8: Objects and Classes

8.1 Objects: Introduction 8.2 Using a class 8.3 Defining a class 8.4 Mutators, accessors and private helpers 8.5 Initialisation and constructors 8.6 Choosing classes to create 8.7 Defining main() in a programmer-defined class 8.8 Unit testing (classes) 8.9 Constructor overloading 8.10 Objects and references 8.11 The 'this' implicit parameter 8.12 Primitive and reference types 8.13 Wrapper class conversions 8.14 ArrayList 8.15 Classes and ArrayLists 8.16 ArrayList ADT 8.17 Java documentation for classes 8.18 Parameters of reference types 8.19 Static fields and methods 8.20 Using packages 8.21 Java example: Salary calculation with classes 8.22 Java example: Domain name availability with classes

Module 13: Exceptions

13.1 Exception basics 13.2 Exceptions with methods 13.3 Multiple handlers 13.4 Exception handling in file input/output 13.5 Java example: Generate number format exception

Module 12: Recursion

12.1 Recursion: Introduction 12.2 Recursive methods 12.3 Recursive algorithm: Search 12.4 Adding output statements for debugging 12.5 Creating a recursive methods 12.6 Recursive math methods 12.7 Recursive exploration of all possibilities 12.8 Stack overflow 12.9 C example: Recursively output permutations

Module 17: JavaFX

17.1 Introduction to graphical user interfaces with JavaFX 17.2 Positioning GUI components using a GridPane 17.3 Input and event handlers 17.4 Basic graphics with JavaFX

Module 16: GUI

16.1 Basic graphics 16.2 Introduction to graphical user interfaces 16.3 Positioning GUI components using a GridBagLayout 16.4 GUI input and ActionListeners 16.5 GUI input with formatted text fields 16.6 GUI input with JSpinners 16.7 Displaying multi-line text in a JTextArea 16.8 Using tables in GUIs 16.9 Using sliders in GUIs 16.10 GUI tables, fields, and buttons: A seat reservation example 16.11 Reading files with a GUI

Module 15: Collections

15.1 Enhanced for loop 15.2 List: LinkedList 15.3 Map: HashMap 15.4 Set: HashSet 15.5 Queue interface 15.6 Deque interface

Module 14: Generics

14.1 Comparable Interface: Sorting an ArrayList 14.2 Generic methods 14.3 Class generics 14.4 Java example: Map values using a generic method

Module 18: Searching and Sorting Algorithms

18.1 Searching and algorithms 18.2 Binary search 18.3 O notation 18.4 Algorithm analysis 18.5 Sorting: Introduction 18.6 Selection sort 18.7 Insertion sort 18.8 Quicksort 18.9 Merge sort

Module 19: Additional Material

19.1 Do-while loops 19.2 Engineering examples 19.3 Engineering examples using methods 19.4 Command-line arguments 19.5 Command-line arguments and files 19.6 Additional practice: Output art 19.7 Additional practice: Grade calculation 19.8 Additional practice: Tweet decoder 19.9 Additional practice: Dice statistics 19.10 zyBooks built-in programming window


Module 2: Introduction to C

2.1 Basics 2.2 Interleaved input / output 2.3 Formatted output: Hello World! 2.4 Formatted output: No parking sign 2.5 Input and formatted output: House real estate summary 2.6 Input and formatted output: Right-facing arrow 2.7 Warm up: Hello world 2.8 Warm up: Basic output with variables 2.9 Program: ASCII art

Module 3: Variables and Expressions

3.1 Divide input integers 3.2 Caffeine levels 3.3 Driving costs 3.4 Expression for calories burned during workout 3.5 Using math functions 3.6 Phone number breakdown 3.7 Simple statistics 3.8 Musical note frequencies 3.9 Input: Welcome message 3.10 Input: Mad Lib 3.11 Warm up: Variables, input, and casting 3.12 Program: Painting a wall

Module 4: Branches

4.1 Remove gray from RGB 4.2 Smallest number 4.3 Interstate highway numbers 4.4 Seasons 4.5 Exact change 4.6 Leap year 4.7 Name format 4.8 Warm up: Text message abbreviation decoder 4.9 Program: Text message decoder 4.10 Program: Text message expander

Module 5: Loops

5.1 Convert to binary 5.2 Mad Lib - loops 5.3 Varied amount of input data 5.4 Count characters 5.5 Checker for integer string 5.6 Password modifier 5.7 Remove spaces 5.8 Count input length without spaces, periods, or commas 5.9 Countdown until matching digits 5.10 Output range with increment of 10 5.11 Print string in reverse 5.12 Palindrome 5.13 Brute force equation solver 5.14 Warm up: Drawing a right triangle 5.15 Program: Drawing a half arrow

Module 6: Arrays

6.1 Output numbers in reverse 6.2 Middle item 6.3 Output values below an amount 6.4 Adjust list by normalising 6.5 Word frequencies 6.6 Contains the character 6.7 Elements in a range 6.8 Two smallest numbers 6.9 Warm up: People's weights (Vectors) 6.10 Program: Soccer team roster (Vectors)

Module 7: User-Defined Methods

7.1 Miles to track laps 7.2 Step counter 7.3 A jiffy 7.4 Driving costs - methods 7.5 Swapping variables 7.6 Max magnitude 7.7 Flip a coin 7.8 Count characters - methods 7.9 Remove spaces - methods 7.10 Convert to binary - methods 7.11 Max and min numbers 7.12 Acronyms 7.13 Leap year - methods 7.14 Exact change - methods 7.15 Even/odd values in an array 7.16 Contact list 7.17 Sort an array 7.18 Output values below an amount - methods 7.19 Adjust list by normalising - methods 7.20 Word frequencies - methods 7.21 Replacement words 7.22 Warm up: Text analyser and modifier 7.23 Program: Authoring assistant

Module 8: Objects and Classes

8.1 Triangle area comparison (classes) 8.2 Car value (classes) 8.3 Winning team (classes) 8.4 Nutritional information (classes/constructors) 8.5 Artwork label (classes/constructors) 8.6 Warm up: Online shopping cart (Part 1) 8.7 Program: Online shopping cart (Part 2)

Module 9: Memory Management

9.1 Library book sorting 9.2 Mileage tracker for a runner 9.3 Inventory (linked lists: insert at the front of a list) 9.4 Playlist (output linked list) 9.5 Grocery shopping list (linked list: inserting at the end of a list) 9.6 Warm up: Contacts 9.7 Program: Playlist

Module 10: Input / Output

10.1 Parsing dates 10.2 Warm up: Parsing strings 10.3 Program: Data visualisation

Module 11: Inheritance

11.1 Pet information (derived classes) 11.2 Instrument information (derived classes) 11.3 Course information (derived classes) 11.4 Book information (overriding member methods) 11.5 Plant information (ArrayList)

Module 20: Coding Practice Problems

20.1 Coding practice problems overview 20.2 Expressions: Simple floating-point expression 20.3 Expressions: Distance formula 20.4 Branches: Complex cost structure 20.5 Branches: Shape display 20.6 Branches: Caption punctuation 20.7 Branches: Guitar tabs 20.8 Branches: 24-hour time 20.9 Branches: Next date 20.10 Branches: Runway headings 20.11 Branches: Listing names 20.12 Branches: Next license plate number 20.13 Loops (for): Output sequence 20.14 Loops (for): Output evens 20.15 Loops (while): Output rocket height 20.16 Loops (while): Compute modified average 20.17 Loops (nested): Sum a given number of integers 20.18 Loops: Output integer's digits 20.19 Loops: Removing leading/trailing whitespace 20.20 Loops: Password requirements 20.21 Loops (nested): HTML table 20.22 Loops: Output integers as comma-separated list 20.23 Loops: Customer lookup 20.24 Loops: Word count 20.25 Loops: Academic index score table 20.26 Loops: TV aspect ratios 20.27 Loops: Biggest difference 20.28 Loops: Check if sorted 20.29 Vectors: Find max 20.30 Vectors: Outputting multiple elements per line 20.31 Vectors: Copying only negative alues 20.32 Vectors: Binary to decimal conversion 20.33 Vectors: Bowling score 20.34 Vectors: Min, max, average 20.35 Vectors: Mode 20.36 Vectors: Grouping into ranges 20.37 Vectors: Longest sequence 20.38 Vectors: Reverse in place 20.39 Functions: Compute max 20.40 Functions: Sort three values 20.41 Functions: Calorie estimator 20.42 Functions: Rideshare pickup time 20.43 Functions: User age 20.44 Functions: Simulating waiting time (fast clerk) 20.45 Functions: Number to words 20.46 Functions: Driving cost estimator 20.47 Functions: Split cents into dollars and cents 20.48 Functions: Rectangles sizes 20.49 Functions: Electric bill 20.50 Functions: Digits to number 20.51 Functions: Commas in integer 20.52 Functions: Next char in string 20.53 Functions: Find next substring 20.54 Functions: Output guitar tabs 20.55 Functions: Rotate three values

Module 18: Searching and Sorting Algorithms

18.1 Descending selection sort with output during execution 18.2 Sorting user IDs

Module 15: Collections

15.1 Grocery shopping list (LinkedList) 15.2 Student grades (HashMap) 15.3 Ticketing service (Queue)

Module 14: Generics

14.1 What order? (generic methods) 14.2 Zip code and population (generic types)

Module 13: Exceptions

13.1 Exception handling to detect input String vs. Integer

Module 12: Recursion

12.1 All permutations of names 12.2 Number pattern


Each purchase comes with...

Practice questions

Highly effective reading materials

1 year access

Interactive figures & tables

Online lab environment (zyLabs)

What Our Students Say

“I really enjoyed zyBooks for use in my Python class. It has surely aided my success in class and helped me build some confidence in my first year at university.”

Isaac C.

Cal State University, Long Beach

Frequently Asked Questions


Will my course fee be subsidised?

No. If you wish to join a course with course fee support*, please check out our Wiley Certified Data Analyst and Unity Certified Associate courses. *Terms & Conditions apply.


I have no prior experience. Will I be able to understand the content taught in the zyBooks?

Yes. Unless otherwise specified, all zyBooks are beginner-friendly.

How much time do I have to spend to complete the course?

It depends on your learning style and speed. We estimate taking about 48 hours to read through the material and complete the interactive quizzes at regular speed. Each zyBook comes with 1 year access, and you should have more than enough time to complete and revise the material with regular reading.

Is there a certification examination?



What is a zyBook?

zyBooks are like interactive, digital textbooks. By incorporating available technology, zyBooks make learning fun, interactive and engaging – all while drastically reducing the time spent on reading long texts.

Why should I buy a zyBook instead of a regular textbook?

zyBooks comprise the same content as a textbook but with minimal text and maximum interactivity. Interactive charts and quizzes are strategically placed, allowing students to cement newly learnt concepts. Some zyBooks also come with zyLabs, which gives immediate feedback when used. This minimises the time spent on grading and rectifying mistakes.

Do all the zyBooks you offer come with zyLabs (the interactive lab environment)?

No. If zyLabs are included, it will be specified in the course page.

What is a zyLab?

zyLabs are online lab environments that are integrated into their respective zyBooks. Through zyLabs, you can practice your new skills and obtain immediate feedback and grades. No additional downloading of software required.