Introduction
   1.1 Programs
   1.2 Programming Languages
   1.3 Why Java?
   1.4 Programming
   1.5 Course Objectives
   1.6 The Life of Programmers
   1.7 Assignment #1: APIs
Elements of Programs
A Discovery Tour: From API’s to Java Terminology
   2.1 Application Program Interfaces (API’s)
   2.2 Packages
   2.3 Classes
   2.4 Fields
   2.5 Methods
   2.6 Constructors
   2.7 Overloading
   2.8 Inheritance
   2.9 Organization of API’s
   2.10 Hierarchy of Classes
   2.11 Assignment #2: Java Terminology
Identifiers and Interfaces
   3.1 Names of Entities
   3.2 Paths to Identifiers
   3.3 Fields
   3.4 Methods
   3.5 Constructors
   3.6 Signatures
   3.7 Types
   3.8 Modifiers
   3.9 Instance and Class Features
   3.10 Parameters
   3.11 Assignment #3: Interfaces
Application Program Interfaces
   4.1 The Purpose of Interfaces
   4.2 Interfaces in Class Definitions
   4.3 Inspecting Interfaces through Web Pages
   4.4 Introspecting Class Implemetations
   4.5 Interface Classes and Abstract Classes
   4.6 Assignment #4: Syntax of Interfaces
Programming for API’s
   5.1 Background
   5.2 javadoc
   5.3 Classes
   5.4 Fields
   5.5 Constructors
   5.6 Methods
   5.7 Packages
   5.8 Inheritance
   5.9 Implementation
   5.10 API’s Comments
   5.11 Assignment #5: Reverse Engineering APIs
   5.12 Assignment #6: Reverse Engineering APIs
Designs for Programs
Object-Oriented Designs
   6.1 Background
   6.2 Objects
   6.3 Cooperating Objects
   6.4 Designing Objects
   6.5 Designing with Objects
   6.6 Classes and Instances
   6.7 Example: Apples
   6.8 Example: Clocks
   6.9 Assignment #7: Object-Oriented Designs
From Object-Oriented Designs to API’s
   7.1 Basic Designs
   7.2 Private and Shared Features
   7.3 Inheritance
   7.4 Assignment #8: Programming APIs
Basic Programs
From APIs to Programs
   8.1 The Making of a Program
   8.2 Assigning Meaning to Programs
   8.3 General Rules
   8.4 Code Comments
   8.5 Assignment #9: Simple Programming
Data and Variables
   9.1 Background
   9.2 Literals
   9.3 Variables
   9.4 Assignment Instructions
   9.5 Initialization of Variables
   9.6 Assignment #10: Primitive Types and Wrap Classes
10 Using Classes
   10.1 Getting Access
   10.2 Constructors
   10.3 Using Instance Methods
   10.4 Using Class Methods
   10.5 Accessing Fields
   10.6 Assignment #11: Referencing Constructors and Methods
11 The Making of Objects
   11.1 Classes
   11.2 Access to Objects
   11.3 Attributes of Objects
   11.4 Behavior of Objects
   11.5 Classes as Objects
   11.6 Sources of Information
   11.7 Assignment #12: Using Class Methods
Adding New Classes
12 Coding Classes
   12.1 Fields
   12.2 Constructors
   12.3 Methods
   12.4 Internal References to Static Features
   12.5 Internal References to Instance Features
   12.6 Assignment #13: Coding Classes
13 Code Execution
   13.1 Control Flow
   13.2 Inside Constructors
   13.3 Inside Instance Methods
   13.4 Inside Class Methods
   13.5 Objects and Fields
   13.6 Life Span of Variables and Objects
   13.7 Data Flow
   13.8 String Values
   13.9 Assignment #14: Objects: Issues of Syntax
   13.10 Assignment #15: The Working of Constructors and Methods
   13.11 Assignment #16: Objects: Issues of Semantics
   13.12 Assignment #17: Objects
Basic Computational Elements
14 Primitive Operations and Expressions
   14.1 Background
   14.2 Assignment Operations
   14.3 Type Conversion
   14.4 Arithmetic Operators
   14.5 Comparison Operations
   14.6 Boolean Operations
   14.7 Short Cuts
   14.8 Initialization of Parameters and Returned Values
   14.9 Assignment #18: Primitive Data Types
   14.10 Assignment #19: Primitive Data Types
15 Selectors
   15.1 Two-Way Branching Instructions
   15.2 Multi-Way Branching Instructions
   15.3 Conditional Expressions
   15.4 Assignment #20: Branching Instructions
16 Iterators
   16.1 While Loops
   16.2 Do-While Loops
   16.3 Increment-Based Loops
   16.4 Assignment #21: Iterators
17 Responding to Abnormal Conditions
   17.1 Background
   17.2 Exception Catching
   17.3 Exception Forwarding
   17.4 Assignment #22: Exceptions
Memory and Data
18 Array Objects
   18.1 One-Dimensional Arrays
   18.2 Two-Dimensional Arrays
   18.3 Distinguished Arrays
   18.4 Assignment #23: Arrays
19 Input and Output
   19.1 Dialog Boxes
   19.2 Standard Output
   19.3 Standard Input
   19.4 Writing into Files
   19.5 Reading from Files
   19.6 Assignment #24: I/O
   19.7 Assignment #25: I/O + arrays