Basic Principles
Computer Hardware and Software
Brief History of Computers
Hardware Components of a Computer
Binary Representation of Numbers
Software Creation and Types of Software
Type of Programming Languages
Brief History of Computer Games
Data Types and Conditional Statements
Our First Java Program
Variables
Random Numbers and the if Statement
Combining Conditions
The String Class
The switch Statement
The Conditional Operator
Loops
The while Statement
The do-while Construct
The for Loop
Nested for Loops
The Modulus Operation
Methods and Formatted Output
Introduction to Methods
Formatting Output
Code Refactoring
Documenting Methods Using JavaDoc
Sending Data between Methods
The Trading Game
Introduction to Arrays
One-Dimensional Arrays
The Trading Game Revisited
Two-Dimensional Arrays
Variable Argument Methods
Command Line Arguments
Introduction to Classes
Classes and Objects
Class Interaction and Data Encapsulation
Default Constructor
The toString Method
Instance versus Static
Non-Empty Constructors and the Hidden Parameter this
Array of Objects and Multi-Class Solutions
Multi-Class Solution to the Battleship Game
The ArrayList Class and the enum Keyword
Introduction to the ArrayList Class
Immutable Objects
The StringBuffer Class
The Interface of an ArrayList
Introducing the enum Construct
Advanced Programming Techniques
Classes Revisited
Class Containment
Inheritance and the super Keyword
Multiple Inheritance
Constructors of Subclasses
Abstract Classes and Methods
Auto-Casting, Polymorphism, and Dynamic Binding
Interfaces and the Comparable Interface
Access Privileges
The final Keyword
Static Methods and Polymorphism
Explicit Type Checking
Cloning Objects
Comparing Objects for Equality
Fun with Swing
Introduction to Swing
Creating Windows
Panels and Drawing
Nested Classes and Event Handling
The Timer Class
Nested Classes
Event Listeners
Multicasting
The Breakout Game (Complete Version)
Overview of the Game
Game Design
Moving the Ball
Adding the Paddle
Drawing the Stickmen
Adding the Menus
Adding the Bricks
Layout Management and GUI Components
Creating Buttons
Flow Layout
Border Layout
Text Fields and Labels
Grid Layout
Creating Text Areas with Scroll Bars
The Combo Box
Check Boxes
Radio Buttons
Document Listeners
Creating Dialog Boxes
Working with Password Fields
Exception Handling and Files
Handling Exceptions
Text Files
Data Files
Recursion
Base Case and General Case
Dynamic Programming
Internal Details of a Recursive Call
Array Algorithms
Java Applets
HTML and the Java Applet Architecture
Principles of Java Applets
Creating Popup Windows
The Tic-Tac-Toe Game
Index
A Summary, Syntax, Important Points, Exercises, Labs, and Projects appear at the end of each chapter.
Biography
Lubomir Stanchev is an associate professor in the Department of Computer Science at Indiana University-Purdue University Fort Wayne. He received a Ph.D. from the David R. Cheriton School of Computer Science at the University of Waterloo. He has taught introductory programming courses and software engineering courses about 15 times in the past eight years. He has published more than five journal articles and more than 20 conference proceedings in the area of computer science. He has been writing software code for over 30 years and has worked as a software developer in four different companies.






