Data structures and software development in an object-oriented domain

1. State of Software Development. Introduction. Software Development Process. Assessing Software Quality. Principles of Software Design. Approaches to Software Design. Concluding Remarks. 2. Java Basics. Introduction. Comments and White Space. Naming Conventions. Data Types. Literals and Constants. Operators. Basic Statements. Methods. Class Declaration. Java System. Objects. Inheritance. Argument Passing. Repairing Program Faults. I/O to Text Files. Java Virtual Machine. Graphical User I/O. Concluding Remarks. 3. Objects and Classes. Introduction. Models and Modeling. Objects. Classes and Instances. Relationships to Describe Class Interactions. Concluding Remarks. 4. Arrays and Strings. An Array Application and Analysis of the Problem. Arrays in Java. Problem Solution. Storage Structure, Assignment and Equality for Reference Types. Strings. StringBuffer Class. Concluding Remarks. New Java Constructs. 5. Array Algorithms and Their Analysis. Algorithm Analysis. Searching. Sorting. Introduction to Object Comparison, Interfaces, and the Object Class. Array Dictionaries. Concluding Remarks. New Java Constructs. 6. Abstract Data Types and Their Implementation. Introduction. Data Types. Specifying Abstract Data Types. Specifying and Implementing ADTs in Java. Assertion Checking and Exceptions. Visibility of Classes and Class Members. Introduction to Design by Contract. Concluding Remarks. New Java Constructs. 7. List Fundamentals. A Simple List Application. List Abstract Data Type. Implementations. Examples of Linked Operations. Ordered Simple List. List Variations. Concluding Remarks. New Java Constructs. 8. Advanced List Concepts and the Uos Data Structure Library. List Tools. Library of Dictionaries and List Data Structures. Applications. Polymorphism and Heterogeneous Lists. Concluding Remarks. New Java Constructs. 9. Stacks. Introduction. Stack ADT. Implementations. Applications. Concluding Remarks. 10. Recursion. Recursive Definitions from Mathematics. Recursive Methods. Developing and Verifying Recursive Methods. Timing Analysis for Simple Recursive Methods. Recursive List Methods. Concluding Remarks. New Java Constructs. 11. Queues and Priority Queues. Queues. Priority Queues. Application: Discrete Simulation. Concluding Remarks. New Java Constructs. 12. Object-Oriented Development: An Example. Introduction. Object-Oriented Development Life Cycle. Various Stakeholders in Software Development. An Object-Oriented Development Approach. A Simplified Banking Example. Design Caveat. Seamless Software Development. Benefits of the Object Model. Concluding Remarks. New Java Constructs. 13. Trees. Introduction and Applications. Binary Tree Abstract Data Type. Binary Trees. General Trees. Applications. Concluding Remarks. 14. Elementary Problem Modeling and System Design. Introduction. Modeling Static System Structure. Modeling System Behavior. Analysis and Architectural Design of a Student Registration System. Concluding Remarks. 15. Principles of Software Design. Introduction. Design By Contract. Exception Handling. Class Design. Building Inheritance Taxonomies. Coupling and Cohesion in Object-Oriented Software. Using Patterns in Software Design. Subsystem Design. Detailed Design of a Student Registration System. Concluding Remarks. 16. Software Testing. Fundamentals of Software Testing. Human Testing. Black Box Testing. White Box (Program-Based) Testing. Object-Oriented Testing. Locating and Repairing Dynamic Faults. Concluding Remarks. 17. Bags, Sets, and Dictionaries. Introduction. Bit Vector Implementation. Hash Tables. Specialized Search Trees. Better Priority Queues. Concluding Remarks. 18 Sorting. Introduction. Review of Basic Sorts. Recursive Merge Sort. Quicksort. Use of Recurrence Relations for Time Requirements. Heap Sort. Radix Sort. Address Calculation Sort. Concluding Remarks. 19. Graphs. Introduction and Examples of Graph Modeling. Basic Definitions of Graph Theory. Graph ADT. Paths, Reachability, and Connectedness. Graph Representations. Computing Paths from a Matrix Representation of Graphs. Traversals of Undirected Graphs. Applications. Concluding Remarks. 20. Files. Introduction. External Storage Devices. Definitions and Concepts. Persistent Storage Support in Java. Sequential Files. Direct Files. Indexed Sequential Files. B-Tree Files. Multiple-Key Access. Concluding Remarks. Appendix A. Java Tutorial. Java Syntax Charts. Comments and White Space. Names. Data Types. Expressions. Primaries. Statements. Methods. Classes. Interfaces. Packages and Access Modifiers. Input/Output. Exception Handling. Multi-Threading. Miscellaneous. Appendix B. Analysis of Java Data Structures. Appendix C. Math Primer. Summation Notation. Logarithms. Cross Product and Function Notation. Mathematical Induction. Further Techniques for Recurrence Relations. Bibliography.