We start this course by providing background information on computers and programming languages. Chapter 1’s goal is to provide a conceptual foundation of programming languages. Concepts of classes and objects are first introduced in this chapter. The process of editing, compiling and running a Java program is covered in chapter 2. Variables, constants, and expressions for manipulating numerical data are introduced in chapter 3. The creation of user-defined classes is covered in chapter 4. Constructors, visibility modifiers (public and private), local variables and passing data to methods are explained in this very chapter. In chapter 5, we present the selection statements if and switch. We explain how objects are compared by using equivalence (==) and equality (the equals and compareTo methods). Chapter 6 explains the repetition statements, while, do-while, and for. Pitfalls of these repetition statements are also covered in this chapter. Chapter 7 covers the second part of creating programmer-defined classes. Chapter 8 teaches exception handling and assertions. This chapter allows the construction of more reliable code. Finally, we cover the concept of “Arrays” of primitive data types and objects in chapter 10. We show how arrays are passed to methods in this chapter.