(NOTE: Each chapter begins with Objectives, an Outline, and an 
            Introduction and ends with a Summary, Terminology, Common 
            Programming Errors, Good Programming Practices, Performance Tips, 
            Portability Tips, Software Engineering Observations, Self-Review 
            Exercises, Answers to Self-Review Exercises, and Exercises.) 
1. Introduction to Computers, the Internet and the 
            World Wide Web. 
            
What Is a Computer? Computer 
            Organization. Evolution of Operating Systems. Personal Computing, 
            Distributed Computing and Client/Server Computing. Machine 
            Languages, Assembly Languages and High-Level Languages. The History 
            of C. The C Standard Library. The Key Software Trend: Object 
            Technology. C++ and C++ How to Program. Java and Java How 
            to Program. Other High-Level Languages. Structured Programming. 
            The Basics of a Typical C Program Development Environment. Hardware 
            Trends. History of the Internet. History of the World Wide Web. 
            General Notes about C and This Book. 
2. 
            Introduction to C Programming. 
            A Simple C Program: Printing a Line 
            of Text. Another Simple C Program: Adding Two Integers. Memory 
            Concepts. Arithmetic in C. Decision Making: Equality and Relational 
            Operators. 
3. Structured Program Development in C. 
            
            Algorithms. Pseudocode. Control 
            Structures. The if Selection Structure. The if/else 
            Selection Structure. The while Repetition Structure. 
            Formulating Algorithms: Case Study 1 (Counter-Controlled 
            Repetition). Formulating Algorithms with Top-Down, Stepwise 
            Refinement: Case Study 2 (Sentinel-Controlled Repetition). 
            Formulating Algorithms with Top-Down, Stepwise Refinement: Case 
            Study 3 (Nested Controlled Repetition). Assignment Operators. 
            Increment and Decrement Operators. 
4. C Program 
            Control. 
            The Essentials of Repetition. 
            Counter-Controlled Repetition. The for Repetition Structure. 
            The for Structure: Notes and Observations. Examples Using the 
            for Structure. The switch Multiple-Selection 
            Structure. The do/while Repetition Structure. The 
            break and continue Statements. Logical Operators. 
            Confusing Equality (==) and Assignment (=) Operators. Structured 
            Programming Summary. 
5. C Functions. 
            Program Modules in C. Math Library 
            Functions. Functions. Function Definitions. Function Prototypes. 
            Header Files. Calling Functions: Call by Value and Call by 
            Reference. Random Number Generation. Example: A Game of Chance. 
            Storage Classes. Scope Rules. Recursion. Example Using Recursion: 
            The Fibonacci Series. Recursion vs. Iteration. 
6. C 
            Arrays. 
            Arrays. Declaring Arrays. Examples 
            Using Arrays. Passing Arrays to Functions. Sorting Arrays. Case 
            Study: Computing Mean, Median and Mode Using Arrays. Searching 
            Arrays. Multiple-Subscripted Arrays. 
7. C Pointers. 
            
            Pointer Variable Declarations and 
            Initialization. Pointer Operators. Calling Functions by Reference. 
            Using the const Qualifier with Pointers. Bubble Sort Using 
            Call by Reference. Pointer Expressions and Pointer Arithmetic. The 
            Relationship between Pointers and Arrays. Arrays of Pointers. Case 
            Study: A Card Shuffling and Dealing Simulations. Pointers to 
            Functions. 
8. C Characters and Strings. 
            Fundamentals of Strings and 
            Characters. Character Handling Library. String Conversion Functions. 
            Standard Input/Output Library Functions. String Manipulation 
            Functions of the String Handling Library. Comparison Functions of 
            the String Handling Library. Search Functions of the String Handling 
            Library. Memory Functions of the String Handling Library. Other 
            Functions of the String Handling Library. 
9. C 
            Formatted Input/Output. 
            Streams. Formatting Output with 
            printf. Printing Integers. Printing Floating-Point Numbers. 
            Printing Strings and Characters. Other Conversion Specifiers. 
            Printing with Field Widths and Precisions. Using Flags in the 
            printf Format-Control String. Printing Literals and Escape 
            Sequences. Formatting Input with scanf. 
10. 
            C Structures, Unions, Bit Manipulations, and Enumerations. 
            Structure Definitions. Initializing 
            Structures. Accessing Members of Structures. Using Structures with 
            Functions. typedef. Example: High-Performance Card Shuffling 
            and Dealing Simulation. Unions. Bitwise Operators. Bit Fields. 
            Enumeration Constants. 
11. C File Processing. 
            
            The Data Hierarchy. Files and 
            Streams. Creating a Sequential-Access File. Reading Data from a 
            Sequential-Access File. Random-Access Files. Creating a Randomly 
            Accessed File. Writing Data Randomly to a Randomly Accessed File. 
            Reading Data Randomly from a Randomly Accessed File. Case Study: A 
            Transaction-Processing Program. 
12. C Data 
            Structures. 
            Self-Referential Structures. Dynamic 
            Memory Allocation. Linked Lists. Stacks. Queues. Trees. 
            
13. C Preprocessor. 
            The #include Preprocessor 
            Directive. The #define Preprocessor Directive: Symbolic 
            Constants. The #define Preprocessor Directive: Macros. 
            Conditional Compilation. The #error and #pragma 
            Preprocessor Directives. The # and ## Operators. Line 
            Numbers. Predefined Symbolic Constants. Assertions. 
            
14. Advanced C Topics. 
            Redirecting Input/Output on UNIX and 
            DOS Systems. Variable-Length Argument Lists. Using Command-Line 
            Arguments. Notes on Compiling Multiple-Source-File Programs. Program 
            Termination with Exit and AtExit. The volatile Type 
            Qualifier. Suffixes for Integer and Floating-Point Constants. More 
            on Files. Signal Handling. Dynamic Memory Allocation: Functions 
            Calloc and Realloc. The Unconditional Branch: Goto. 
            
15. C++ as a “Better C.” 
            C++. A Simple Program: Adding Two 
            Integers. C++ Standard Library. Header Files. Inline Functions. 
            References and Reference Parameters. Default Arguments and Empty 
            Parameter Lists. Unary Scope Resolution Operator. Function 
            Overloading. Function Templates. 
16. C++ Classes 
            and Data Abstraction. 
            Implementing a Time Abstract Data 
            Type with a Class. Class Scope and Accessing Class Members. 
            Separating Interface from Implementation. Controlling Access to 
            Members. Access Functions and Utility Functions. Initializing Class 
            Objects: Constructors. Using Default Arguments with Constructors. 
            Using Destructors. When Constructors and Destructors Are Called. 
            Using Data Members and Member Functions. A Subtle Trap: Returning a 
            Reference to a private Data Member. Assignment by Default 
            Memberwise Copy. Software Reusability. 
17. C++ 
            Classes: Part II. 
            const (Constant) Objects and 
            const Member Functions. Composition: Objects as Members of 
            Classes. friend Functions and friend Classes. Using 
            the this Pointer. Dynamic Memory Allocation with Operators 
            new and delete. Static Class Members. Data 
            Abstraction and Information Hiding. Container Classes and Iterators. 
            
18. C++ Operator Overloading. 
            Fundamentals of Operator 
            Overloading. Restrictions on Operator Overloading. Operator 
            Functions as Class Members vs. as Friend Functions. Overloading 
            Stream-Insertion and Stream-Extraction Operators. Overloading Unary 
            Operators. Overloading Binary Operators. Case Study: An Array Class. 
            Converting between Types. Overloading ++ and - -. 
            
19. C++ Inheritance. 
            Inheritance: Base Classes and 
            Derived Classes. Protected Members. Casting Base-Class Pointers to 
            Derived-Class Pointers. Using Member Functions. Overriding 
            Base-Class Members in a Derived Class. Public, Protected and Private 
            Inheritance. Direct Base Classes and Indirect Base Classes. Using 
            Constructors and Destructors in Derived Classes. Implicit 
            Derived-Class Object to Base-Class Object Conversion. Software 
            Engineering with Inheritance. Composition vs. Inheritance. “Uses A” 
            and “Knows A” Relationships. Case Study: Point, Circle, Cylinder. 
            
20. C++ Virtual Functions and Polymorphism. 
            Type Fields and switch 
            Statements. Virtual Functions. Abstract Base Classes and Concrete 
            Classes. Polymorphism. New Classes and Dynamic Binding. Virtual 
            Destructors. Case Study: Inheriting Interface and Implementation. 
            Polymorphism, virtual Functions and Dynamic Binding “Under 
            the Hood.” 
21. C++ Stream Input/Output. 
            Streams. Stream Output. Stream 
            Input. Unformatted I/O with Read, gcount and Write. Stream 
            Manipulators. Stream Format States. Stream Error States. Tying an 
            Output Stream to an Input Stream. 
22. C++ 
            Templates. 
            Class Templates. Class Templates and 
            Nontype Parameters. Templates and Inheritance. Templates and 
            Friends. Templates and Static Members. 
23. C++ 
            Exception Handling. 
            When Exception Handling Should Be 
            Used. Other Error-Handling Techniques. Basics of C++ Exception 
            Handling: try, throw, catch. A Simple Exception-Handling 
            Example: Divide by Zero. Throwing an Exception. Catching an 
            Exception. Rethrowing an Exception. Exception Specifications. 
            Processing Unexpected Exceptions. Stack Unwinding. Constructors, 
            Destructors and Exception Handling. Exceptions and Inheritance. 
            Processing new Failures. Class auto_ptr and Dynamic 
            Memory Allocation. Standard Library Exception Hierarchy. 
            
24. Introduction to Java Applications and Applets. 
            
            Basics of a Typical Java 
            Environment. General Notes about Java and This Book. A Simple 
            Program: Printing a Line of Text. Another Java Application: Adding 
            Integers. Sample Applets from the Java 2 Software Development Kit. A 
            Simple Java Applet: Drawing a String. Two More Simple Applets: 
            Drawing Strings and Lines. Another Java Applet: Adding Integers. 
            
25. Beyond C & C++: Operators, Methods & 
            Arrays in Java. 
            Primitive Data Types and Keywords. 
            Logical Operators. Method Definitions. Java API Packages. Random 
            Number Generation. Example: A Game of Chance. Methods of Class 
            JApplet. Declaring and Allocating Arrays. Examples Using 
            Arrays. References and Reference Parameters. Multiple-Subscripted 
            Arrays. 
26. Java Object-Based Programming. 
            Implementing a Time Abstract Data 
            Type with a Class. Class Scope. Creating Packages. Initializing 
            Class Objects: Constructors. Using Set and Get 
            Methods. Using the this Reference. Finalizers. Static Class 
            Members. 
27. Java Object-Oriented Programming. 
            
            Superclasses and Subclasses. 
            protected Members. Relationship between Superclass Objects 
            and Subclass Objects. Implicit Subclass-Object-to-Superclass-Object 
            Conversion. Software Engineering with Inheritance. Composition vs. 
            Inheritance. Introduction to Polymorphism. Type Fields and 
            switch Statements. Dynamic Method Binding. Final 
            Methods and Classes. Abstract Superclasses and Concrete Classes. 
            Polymorphism Example. New Classes and Dynamic Binding. Case Study: 
            Inheriting Interface and Implementation. Case Study: Creating and 
            Using Interfaces. Inner Class Definitions. Notes on Inner Class 
            Definitions. Type-Wrapper Classes for Primitive Types. 
            
28. Java Graphics and Java 2D. 
            Graphics Contexts and Graphics 
            Objects. Color Control. Font Control. Drawing Lines, Rectangles, and 
            Ovals. Drawing Arcs. Drawing Polygons and Polylines. The Java2D API. 
            Java2D Shapes. 
29. Java Graphical User Interface 
            Components. 
            Swing Overview. JLabel. Event 
            Handling Model. JTextField and JPasswordField. 
            JTextArea. JButton. JCheckBox. 
            JComboBox. Mouse Event Handling. Layout Managers. Panels. 
            Creating a Self-Contained Subclass of JPanel. Windows. Using 
            Menus with Frames. 
30. Java Multimedia: Images, 
            Animation and Audio. 
            Loading, Displaying and Scaling 
            Images. Loading and Playing Audio Clips. Animating a Series of 
            Images. Animation Issues. Customizing Applets via the HTML 
            param Tag. Image Maps. Java Plug-In. Internet and World Wide 
            Web Resources. 
A. Internet and Web Resources. 
            
            C/C++ Resources. C++ Tutorials. 
            C/C++ FAQs. Visual C++. comp.lang.c++. C/C++ Compilers. C++ 
            Development Tools. Java Resources. Java Products. Java FAQs. Java 
            Tutorials. Java Magazines. Java Applets. Multimedia. Java 
            Newsgroups. 
B. C99 Internet and Web Resources. 
            
            C99 Resources. 
C. 
            Operator Precedence Chart. 
D. ASCII Character Set. 
            
E. Number Systems. 
            Abbreviating Binary Numbers as Octal 
            Numbers and Hexadecimal Numbers. Converting Octal Numbers and 
            Hexadecimal Numbers to Binary Numbers. Converting from Binary, 
            Octal, or Hexadecimal to Decimal. Converting from Decimal to Binary, 
            Octal, or Hexadecimal. Negative Binary Numbers: Two's Complement 
            Notation. 
Index.