About Java
History of Java
What is Java?
Why Java?
State of Java today
HelloWorld
Installing and configuring Java Virtual Machine (lab)
Implementing HelloWorld in Java (lab)
Java class/file structure and naming conventions
Java keywords and identifiers
Compiling and running Java programs
Comments in Java code
The main() method
Installing and configuring the Eclipse IDE
Data Types
Declaring and assigning variables
Primitive Java types
Conversion between types
Introduction to arrays and strings
Operators
Arithmetic operators - including shortcut operators
Relational operators
Logical-boolean operators
Bitwise operators
Assignment operators
Additional operators
Operator precedence
Flow Control
Local variable storage: stack
Branching statements: if-else and switch
Loop statements: while and for
Break and continue statements - including labeled
Return statement
Lab: Calculator
Object Oriented Programming
What is OOP?
Why OOP?
Class vs. Object
OOP in Java: classes, fields, objects, methods
Java memory model and garbage collection
Static vs. instance data and methods
Constructors - including constructor and method overloading
Constants
Encapsulation through access modifiers
Lab: BankAccount
Inheritance / in Java
Types and subtypes
Lab: School
Interfaces and abstract classes / in Java
Lab: OOP Calculator
java.lang.Object: super class of them all
Object Equality: equals() and hashCode() methods
Converting objects to strings: toString() method
Lab: Comparing students
Packaging
Reasons for packaging code
Packages and sub-packages in Java
Protecting package namespace
Using packaged code
Protecting packaged code
Java CLASSPATH
Java Archive (JAR)
Lab: Packaging
JavaDoc
Overview of JavaDoc
Java API
Defining and generating JavaDoc
Lab: Documenting Java code
Exception Handling
What are exceptions?
Why exceptions?
Built-in exceptions
Exception life-cycle
Handling exceptions
Throwing exceptions
Exception types: checked vs. unchecked
Creating new exceptions
Grouping and nesting exceptions
Lab: Exceptions
java.lang library (Core Java)
Primitive wrappers
String and StringBuffer/StringBuilder
java.lang.Math
java.lang.System
Multi-threaded programming in Java
java.io library (I/O in Java)
Managing files
Byte and character streams
Filtered streams
Object serialization
java.util library (Collections and Utilities)
Collections Framework
java.util.Collection
java.util.Iterator
java.util.List
java.util.Set
java.util.Queue
java.util.Map
PRNG in Java: java.util.Random
String parsing and matching - including java.util.regex
Date, Calendar, TimeZone
java.net library (Java Networking)
java.net.InetAddress and java.net.NetworkInterface
java.net.URL connections
TCP sockets (java.net.Socket and java.net.ServerSocket)
java.sql library (JDBC)
Overview of JDBC and its drivers
JDBC API: connections, statements, result sets, metadata
Using JDBC: updates, queries
Java 5
Generics
Enhanced for[each] loop
Auto boxing and unboxing
Typesafe enums
Varargs
Static imports
Annotations (metadata)
Design Patterns
What are Design Patterns?
Singleton, Factory Method, Abstract Factory
Adapter, Composite, Decorator
Chain of Responsibility, Observer / Publish-Subscribe, Strategy, Template
Data Access Object (DAO)



Java Programming