Java™ 2: Advanced Programming 

Course Specifications 
Course number: 077955
Software Version Number: 1.3
Course length: 3 days

Course Description

Overview: Students interested in learning more about the Java programming language should take this course to learn advanced programming techniques and concepts.
Prerequisites:   To ensure your success, we recommend you first take the following Element K course or have equivalent knowledge:
•	Java 2: Programming Language

Delivery Method: Instructor-led, group-paced, classroom-delivery learning model with structured hands-on activities.

Hardware/Software Requirements: 

You will need: 
•	Networked Microsoft Windows NT 4.0 Workstation (Service Pack 6).
•	Java™ 2 SDK, Standard Edition, v1.3 (or later).
•	Microsoft Data Access Components (MDAC), v2.1 (or later).
Performance-Based Objectives
Lesson objectives help students become comfortable with the course, and also provide a means to evaluate learning. Upon successful completion of this course, students will be able to:
•	Use reflection to examine objects at runtime and properly compare objects for equality.
•	Handle errors in your program by writing exception handlers.
•	Create and manipulate arrays and collections.
•	Read and write files using the java.io package.
•	Serialize objects using object serialization.
•	Write multi-threaded programs and synchronize threads.
•	Access data from relational databases using JDBC. Perform basic network communication using sockets.

Course Content
Lesson 1: Examination Concepts
          Topic 1A: Determining an Object's Type
                   Task 1A-1: Using the instanceof Operator
                   Task 1A-2: Using the Class.getName() Method
          Topic 1B: Reflection
                   Task 1B-1: Using Reflection
          Topic 1C: Comparing Objects for Equality
                   Task 1C-1: Comparing Objects for Equality

Lesson 2: Exception Handling
          Topic 2A: Overview of Exceptions
                   Task 2A-1: Following the Control Flow of an Exception Handler
          Topic 2B: Writing Exception Handlers
                   Task 2B-1: Writing an Exception Handler

Lesson 3: Data Structures
          Topic 3A: Arrays
                   Task 3A-1: Creating an Array
                   Task 3A-2: Manipulating an Array
          Topic 3B: Collections
                   Task 3B-1: Choosing a Collection
                   Task 3B-2: Working with Collections
                   Task 3B-3: Manipulating a List
          Topic 3C: Other Data Structures
                   Task 3C-1: Working with a Bit Set
                   Task 3C-2: Working with the Stack Class
                   Task 3C-3: Working with the Hashtable Class

Lesson 4: I/O
          Topic 4A: Overview of the java.io Package
                   Task 4A-1: Working with the File Class
                   Task 4A-2: Identifying Input and Output Streams
                   Task 4A-3: Identifying Readers and Writers
          Topic 4B: Reading Files
                   Task 4B-1: Reading Data from a File
          Topic 4C: Writing Files
                   Task 4C-1: Writing Data to a File
          Topic 4D: Reading and Writing Objects
                   Task 4D-1: Serializing an Object

Lesson 5: Multi-Threaded Programming
          Topic 5A: Overview of Threads
                   Task 5A-1: Observing a Computer's Processes
                   Task 5A-2: Observing a Multi-Threaded Program
          Topic 5B: Using Threads
                   Task 5B-1: Deciding Between Daemon and Non-Daemon Threads
                   Task 5B-2: Creating a Multi-Threaded Program
          Topic 5C: Synchronization
                   Task 5C-1: Synchronizing a Light Show
                   Task 5C-2: The Producer/Consumer Problem

Lesson 6: JDBC
          Topic 6A: Overview of SQL
                   Task 6A-1: Working with the SELECT Statement
                   Task 6A-2: Modifying Data in a Database
          Topic 6B: Using JDBC
                   Task 6B-1: Configuring ODBC for use with JDBC
                   Task 6B-2: Querying a Database

Lesson 7: Basic Networking
          Topic 7A: Overview of Networking
                   Task 7A-1: Networking Concepts
                   Task 7A-2: Identifying Your Computer's IP Address
                   Task 7A-3: Using the InetAddress Class
          Topic 7B: Sockets
                   Task 7B-1: Implementing the Client Side of a Socket
                   Task 7B-2: Implementing the Server Side of a Socket
                   Task 7B-3: Using the Remote File Copy Application
          Topic 7C: Datagram Sockets
                   Task 7C-1: Using Datagram Sockets