I Java Programming.- 1 Data Modeling in Java.- 1.1 Objects and Classes.- 1.1.1 The Notion of Object.- 1.1.2 Methods.- 1.1.3 Objects and Classes.- 1.2 Classes.- 1.2.1 Members of Classes.- 1.2.2 Object Creation.- 1.3 Class Inheritance.- 1.3.1 Java Subclassing Mechanism.- 1.3.2 Access Control.- 1.3.3 Abstract Method, Abstract Class, and Interface.- 1.3.4 Polymorphism.- 1.4 A Supermarket Application.- 1.5 Summary.- Assignment.- 2 The Java Language.- 2.1 Basic Elements of Java Program.- 2.1.1 White Space and Comment.- 2.1.2 Token.- 2.2 Flow of Control.- 2.2.1 Statement.- 2.2.2 Exception Handling.- 2.2.3 Thread and Multithread Programming.- 2.3 Standard Java Classes.- 2.3.1 Class Object.- 2.3.2 Class String.- 2.3.3 Input/Output Streams.- 2.3.4 Wrapper Classes.- 2.4 Reflection Model.- 2.4.1 Java Core Reflection API.- 2.4.2 Class Class.- 2.4.3 Classes Field, Method, and Constructor.- 2.5 Inner Classes.- 2.5.1 Scopes of Classes.- 2.5.2 Data Organization and Adapter Classes.- 2.6 Summary.- Assignment.- 3 Programming in Java.- 3.1 Java Programs.- 3.1.1 Applet Programming.- 3.1.2 Application Programming.- 3.2 Graphics Programming in Java.- 3.2.1 Class Graphics.- 3.2.2 Graphics Attributes.- 3.2.3 Graphical Operations.- 3.3 GUI Construction.- 3.3.1 GUI Components.- 3.3.2 Layout Classes.- 3.3.3 Event Delegation Model.- 3.4 Utility Classes and Object Reflection.- 3.4.1 Utility Classes — System, Math, and Random.- 3.4.2 Method Benchmarking.- 3.5 Summary.- Assignment.- 4 Java Data Structure Classes.- 4.1 Arrays.- 4.1.1 Array Objects.- 4.1.2 Multi-Dimensional Array.- 4.2 Vectors.- 4.2.1 Class Vector.- 4.2.2 Interface Enumeration.- 4.2.3 Queues.- 4.3 Class Stack.- 4.3.1 Class Stack.- 4.3.2 Construction and Operations of Stacks.- 4.4 Dictionary and Hash Tables.- 4.4.1 Class Dictionary.- 4.4.2 Hash Code.- 4.4.3 Class Hashtable.- 4.4.4 Hash Table Creation.- 4.4.5 Accessers and Mutaters of Hashtables.- 4.5 Class BitSet.- 4.5.1 Bit Sets.- 4.5.2 Accessers and Mutaters.- 4.6 Summary.- II Computation Analysis.- 5 Java Virtual Machine.- 5.1 Java Class Files.- 5.1.1 Class File Structure.- 5.1.2 Constants in Constant Pool.- 5.1.3 The code Attribute in method_inf? Structure.- 5.2 Java Compilation.- 5.2.1 Instructions of the JVM.- 5.2.2 Arithmetic Operations.- 5.2.3 Flow Controls.- 5.2.4 Method Invocations.- 5.3 Java Virtual Machine — An Abstract Machine.- 5.3.1 Java Runtime Systems.- 5.3.2 Objects and Types.- 5.3.3 Methods and Method Invocations.- 5.4 Summary.- 6 Complexity Analysis.- 6.1 Execution of Java Statements.- 6.1.1 Java Virtual Machine — A Model of Computation.- 6.1.2 Object Creation and Initialization.- 6.1.3 Arithmetic Operations.- 6.1.4 Branch Statements.- 6.1.5 Object Field Access.- 6.1.6 Local Variables.- 6.1.7 Method Invocation.- 6.1.8 Java Program Analysis.- 6.2 Asymptotic Analysis of Programs.- 6.2.1 Time and Space Functions.- 6.2.2 Dominance.- 6.2.3 Big-O and Big-? Notations.- 6.2.4 Complexity Categories.- 6.3 An Analysis of Binary Search.- 6.3.1 Linear Search.- 6.3.2 Binary Search.- 6.3.3 Recursion.- 6.3.4 Complexity of Recursive Methods.- 6.3.5 Space Complexity Analysis.- 6.4 Summary.- III Data Structures.- 7 Linear Data Structures.- 7.1 Linear Data Structure Sorting.- 7.1.1 Internal Sort.- 7.1.2 External Merge Sort.- 7.2 Searching Linear Data Structures.- 7.2.1 Searching.- 7.2.2 Fibonaccian Search.- 7.2.3 Interpolation Search.- 7.3 Linked Lists.- 7.3.1 Node Links.- 7.3.2 Doubly Linked List.- 7.4 Summary.- Assignment.- 8 Trees.- 8.1 Trees.- 8.1.1 General Trees.- 8.1.2 m-ary Trees.- 8.1.3 Binary Trees.- 8.2 Traversal of Trees.- 8.2.1 Traversal of General Trees.- 8.2.2 Traversal of Binary Trees.- 8.3 Binary Search Trees.- 8.3.1 The Notion of Binary Search Tree.- 8.3.2 AVL-Tree.- 8.4 B-Trees.- 8.4.1 B-Tree as m-ary Tree.- 8.4.2 Class B_Tree.- 8.4.3 Analysis of Class B_Tree.- 8.5 Summary.- 9 Graphs.- 9.1 Graphs.- 9.1.1 The Notion of Graph.- 9.1.2 Graphs with Adjacency Matrix.- 9.1.3 Graphs with Adjacency Vectors.- 9.2 Traversais of Graphs.- 9.2.1 The Traversal Problem.- 9.2.2 Traversing Graph with Adjacency Matrix.- 9.2.3 Traversing Graph with Adjacency Vectors.- 9.3 Computing Distances between Vertices.- 9.3.1 Single-Source Distances.- 9.3.2 All Distances in a Graph.- 9.4 Summary.- Assignment.- 10 Network Flows.- 10.1 Network and Network Flows.- 10.1.1 Networks.- 10.1.2 Flows in Networks.- 10.2 Maximum Flow in Networks.- 10.2.1 Network Representations.- 10.2.2 Preflowed Networks.- 10.2.3 Residual Networks.- 10.2.4 Maximizing Flows.- 10.3 Minimum Cuts.- 10.3.1 The Notion of Minimum Cut.- 10.3.2 Computing Minimum Cuts.- 10.4 Summary.- IV Data Persistence.- 11 Object Serialization.- 11.1 Serial Representation of Objects.- 11.1.1 Object Stream Format.- 11.1.2 Object Output Streams.- 11.2 Java Serialization Mechanism.- 11.2.1 Overview of Java Serialization.- 11.2.2 Java Serialization Classes and Interfaces.- 11.3 Externalizable Classes.- 11.3.1 Interface Externalizable.- 11.3.2 Externalizing Vectors.- 11.4 Summary.- 12 Data Structure Serialization.- 12.1 List Serialization.- 12.1.1 Output Format.- 12.1.2 Class SerializableList.- 12.2 Tree Serialization.- 12.2.1 Output Format.- 12.2.2 Class SerializableTree.- 12.3 Graph Serialization.- 12.3.1 Output Format.- 12.3.2 Class SerializableGraph.- 12.4 Summary.- Assignment.- Appendix A Binary File Dumping.- Al. Hexadecimal Convertion of Binary Files.- A2. Reading Utf8 Strings.- Appendix B References.