CONTENTS


PREFACE


CHAPTER 1 THE EVOLUTION OF COMPUTER PROGRAMMING AND LANGUAGES: 

Ø AN OVERVIEW OF C AND C++
Ø WHY PROGRAM?
Ø ARE WE PROGRAMMED?
Ø IS EVERYTHING PROGRAMMED?
Ø COMPUTER PROGRAMS AS PRE-AGREED RULES
Ø COMPUTER STANDARD CODE: ASCII
Ø BINARY STATES
Ø MACHINE LANGUAGE AND ASSEMBLY LANGUAGE
Ø NATURAL LANGUAGES VERSUS COMPUTER LANGUAGES
Ø THE EVOLUTION OF PROGRAMMING LANGUAGES
Ø LOW-LEVEL LANGUAGES (LLL)
Ø HIGH-LEVEL LANGUAGES (HLL)
Ø C AND C++ AS HIGH AND LOW-LEVEL LANGUAGES
Ø HOW DO LANGUAGES DIFFER FROM EACH OTHER
Ø PROGRAMMING EVOLUTION
Ø PROGRAM CONTROL FLOW
Ø GOTO PROGRAMMING
Ø GOTO’S STATEMENTS AND SPAGHETTI PROGRAMMING
Ø STRUCTURED PROGRAMMING
Ø SOFTWARE ENGINEERING
Ø PROVING CORRECTNESS OF PROGRAM
Ø POPULAR AND CURRENT EXISTING PROGRAMMING PARADIGM
Ø A LITTLE HISTORY OF C AND C++
Ø WHAT DOES A PROGRAM LOOK LIKE? LET’S SEE THE BIG PICTURE
Ø HOW DOES THE TELEPHONE OPERATOR PROGRAM WORK?
Ø INPUT AND OUTPUT OF THE TELEPHONE OPERATOR PROGRAM
Ø PROGRAMMING OPPORTUNITIES
Ø THE MAGIC OF PROGRAMMING: TRANSFER OF LEARNING
Ø THE MYSTERIES OF PROGRAMMING
Ø SOME EXAMPLES OF PROGRAMMING MYSTERIES
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 2 INPUT, PROCESS, OUTPUT (IPO)

Ø THE MAIN SKELETON OF THE C AND C++ PROGRAM 
Ø THE MAIN PROGRAM WITH RETURN OR WITHOUT IT 
Ø WHERE TO PUT AND WHERE TO NOT PUT THE SEMICOLON 
Ø A PROGRAM TO DISPLAY A MESSAGE 
Ø MEANING OF WORDS AND SYMBOLS IN A C/C++ PROGRAM: KEY WORDS AND USER WORDS
Ø WHAT CONSTRUCT OR WORD TELLS THE C/C++ PROGRAM TO DISPLAY?
Ø WHERE DID printf AND cout COME FROM? 
Ø WHY INCLUDE stdio.h AND iostream.h HEADER FILES?
Ø LET’S WRITE A PROGRAM TO BUILD A MENU
Ø PRESENT AND DECORATE YOUR PROGRAM OUTPUT
Ø COMMENT YOUR PROGRAM 
Ø LET’S CREATE A SIMPLE CALCULATOR
Ø KNOW YOUR ARITHMETIC OPERATION 
Ø C++ SEEMS EASIER THAN C 
Ø USING WORDS AND NAMES TO REPRESENT DATA 
Ø NAMING THE FIXED DATA BY DEFINE PREPROCESSOR
Ø KEYWORD const : ANOTHER WAY TO NAME FIXED DATA
Ø C/C++ ARE SENSITIVE TO CASES
Ø COMPOUND ARITHMETIC OPERATION
Ø RULE OF OPERATOR PRECEDENCE: WHAT IS THE DIFFERENCE BETWEEN 4 * 8 + 2 AND 2 + 4 * 8 ?
Ø ORDER OF PRECEDENCE: PLEASE EXCUSE MY DEAR AUNT SALLY
Ø WHY DO WE NEED A VARIABLE? ASSIGNMENT STATEMENT
Ø DECLARE A NAME AS A VARIABLE RATHER THAN CONSTANT
Ø NAMING RESTRICTION FOR VARIABLES AND CONSTANTS
Ø CHOOSE THE RIGHT NAME FOR VARIABLES AND FOR CONSTANTS
Ø WHAT WOULD BE THE OUTPUT? A VARIABLE NAME VARIES ITS VALUE
Ø WHAT IS A DATA TYPE?
Ø DECLARING THE DATA TYPE: WHY BOTHER?
Ø NUMERICAL DATA TYPE
Ø WHAT IS A CHARACTER DATA TYPE
Ø WHAT IS INPUT AND WHERE DOES INPUT COME FROM?
Ø WORDS THAT TELL PROGRAMS TO INPUT
Ø KNOW THE RULES OF DEFAULT JUDGMENT
Ø HOW TO AVOID A RETURN VALUE
Ø TEST THE COMPUTER MEMORY AS WELL AS YOUR OWN
Ø WHAT IS AN INTERACTIVE PROGRAM?
Ø COMPARISON OF C AND C++ UP TO NOW: SEE FOR YOURSELF
Ø BUILDING LARGER PROGRAMS: SOFTWARE AN INVOICE PROGRAM
Ø HOW DOES AN INVOICE PROGRAM WORK?
Ø BUILDING A PAYROLL PROGRAM: THE FIRST VERSION
Ø HOW DOES THE PAYROLL PROGRAM WORK – FIRST VERSION
Ø DON'T RE-INVENT THE WHEEL: USE BUILT-IN FUNCTIONS
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 3 LOOP: DOING IT OVER AND OVER 

Ø LOOP AS A LABOR FORCE
Ø COMPUTERS IN THE LOOP
Ø WHAT DO YOU NEED TO MAKE A LOOP?
Ø C/C++ LOOP CONSTRUCTS
Ø TO CONTINUE THE LOOP OR TO TERMINATE
Ø COMPARISON OPERATORS
Ø TRUE OR FALSE VALUE OF AN OPERATOR
Ø C/C++ PHILOSOPHY OF WHAT IS TRUE AND WHAT IS FALSE
Ø COMMON SYNTAX OF THE while LOOP
Ø RUNNING FOREVER (INFINITE LOOP)
Ø IT'S AS IF IT NEVER HAPPENED (NOWHERE LOOP)
Ø LOOP WITH A CONTROL VARIABLE
Ø LOOP WITH A CONTROL VARIABLE: AN EXAMPLE
Ø WHAT IS WRONG IN THESE THREE PROGRAMS?
Ø MAKE YOUR LOOP VISIBLE
Ø LOOPING THE PAYROLL PROGRAM TO COVER MORE EMPLOYEES
Ø LOOPING THE INVOICE PROGRAM
Ø ASSIGNMENT STATEMENT
Ø ASSIGNMENT: NOT A MATHEMATICAL STATEMENT
Ø INCREMENT OR DECREMENT BY ONE: VARIATIONS
Ø COMMON ASSIGNMENT STATEMENT: EXAMPLES
Ø C/C++ AS A COMPACT LANGUAGE
Ø WHAT DOES C++ MEAN?
Ø COUNTING-DOWN LOOP
Ø TEST YOUR COMPUTER: WHEN WILL THE LOOP STOP?
Ø STOP THE LOOP WITH THE KEYBOARD: THE ESC KEY
Ø CONTROLLING THE CONTROL VARIABLE: INTERACTIVE LOOP
Ø do while: DO IT ONCE AND THEN CHECK CONDITION
Ø for LOOP: A COMPACT LOOP
Ø NESTED LOOP: A TIME CLOCK
Ø NESTED LOOP: WHAT WOULD BE THE OUTPUT?
Ø MULTIPLICATION TABLE: A NESTED LOOP EXAMPLE
Ø LOOP WITH goto: AN OLD-WAY LOOP
Ø break AND continue LOOP: A POLITE WAY
Ø CONTINUE TILL I TELL YOU TO STOP
Ø LOOP WITH SENTINEL VALUE: DUMMY STOP
Ø TESTING THE LOOP FOR AN EQUALITY: WATCH OUT
Ø TERMINATE THE LOOP WITH INPUT MISMATCH
Ø LOOP WITH END OF DATA FILE
Ø PAYROLL PROGRAM WITH DATA FILE
Ø WHY AND HOW TO CREATE A DATA FILE FOR A PROGRAM?
Ø PROGRAM AND DATA FILE LINKAGE: THE OPERATING SYSTEM
Ø INPUT FILE AND OUTPUT FILE EXAMPLE: THE PAYROLL PROGRAM
Ø WHO DOES DETECT THE END OF FILE?
Ø END OF FILE: EXAMPLE
Ø MAGIC OF END OF FILE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 4 DECISION MAKING : MAKING PROGRAMS INTELLIGENT

Ø MAKING THE DECISION
Ø HOW DO YOU MAKE A DECISION IN C/C++?
Ø LOOK AT THE FOLLOWING if STATEMENTS IN C/C++
Ø WHAT DOES THE EXPRESSION "if" CONSIST OF?
Ø GENERAL SYNTAX OF AN IF STATEMENT
Ø COMPARISON OF TWO NUMBERS: FIND THE MINIMUM
Ø FIND THE MINIMUM OF TWO NUMBERS: CASE WHERE BOTH ARE EQUAL
Ø if WITH A COMPOUND STATEMENT
Ø FIND THE MINIMUM AND MAXIMUM OF TWO NUMBERS: USE OF A COMPOUND STATEMENT
Ø FIND MAXIMUM OF THREE NUMBERS: PLAYING IN TOURNAMENT
Ø NESTED if
Ø WHICH else GOES WITH WHICH if
Ø PAYROLL PROGRAM: VARIABLE TAX RATE
Ø WHAT IS AN ALGORITHM? WHERE DOES THE ALGORITHM COME FROM?
Ø FIND THE MAXIMUM OF MANY NUMBERS: ALGORITHM EXPLANATION
Ø PROGRAM TO FIND THE MAXIMUM OF SEVERAL NUMBERS
Ø LOGICAL if: "and or not"
Ø LEAP YEAR: LOGICAL if, Y2K
Ø FIND MINIMUM OF THREE NUMBERS: USING LOGICAL IF
Ø ERROR CHECKING: BULLET PROOF BUT NO SILVER BULLET
Ø AN EXPERIENCED PROGRAMMER MAKES MISTAKES TOO
Ø DO NOT SUBSTITUTE LOGICAL "and" FOR LOGICAL "or"
Ø ANALYSIS OF AN ALGORITHM: SPEED, SPACE, AND COMPLICATION
Ø PROGRAM SPEED: WHY IS IT IMPORTANT?
Ø SAVING MEMORY: WHY IS IT IMPORTANT?
Ø SAVING MEMORY YIELDS TO SPEED AND EFFICIENCY
Ø sizeof() OPERATOR: BYTE DETERMINATION
Ø Y2K PROBLEM: SAVINGS PROBLEM
Ø GROSSPAY WITH OVERTIME: if else WITH COMPOUND STATEMENT
Ø switch STATEMENT
Ø switch STATEMENT SYNTAX
Ø switch STATEMENT EXAMPLE: MENU
Ø EXCEPTION HANDLING: DIVIDE BY ZERO
Ø break THE switch
Ø break THE LOOP
Ø CONTINUE TO LOOP
Ø if WITH goto: TO GET OUT
Ø A SIMPLE SEARCH PROGRAM: GIVEN THE ID FIND THE PRICE
Ø PRECEDENCE RULE OF LOGICAL OPERATORS
Ø OPERATOR if: A SHORTHAND if
Ø FORMAT YOUR OUTPUT: MAKE IT PRESENTABLE
Ø C++ OUTPUT FORMAT MANIPULATOR
Ø OUTPUT FORMATTING IN C
Ø C AND C++ OUTPUT AND FORMATTING DIFFERENCES
Ø RAINFALL PROBLEM
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 5 ARRAY: ARRANGEMENT OF DATA

Ø DEFINITION OF AN ARRAY
Ø HOW DO YOU DECLARE A VARIABLE ARRAY?
Ø ARRAY SIZE AND ITS RANGE
Ø ARRAY IS TO REMEMBER: EXAMPLES - WHAT WOULD BE THE OUTPUT?
Ø CAN YOU LIVE WITHOUT AN ARRAY?
Ø CONVERSION TO ARRAY – PAYROLL PROGRAM
Ø WHEN TO USE AND WHEN NOT TO USE ARRAYS
Ø ARRAY: RANDOM ACCESS
Ø DUMP THE INPUT DATA INTO AN ARRAY AND THEN MANEUVER AROUND
Ø AN ARRAY NEEDS TO BE ACCOMPANIED BY A LOOP
Ø for LOOP INSTEAD OF WHILE LOOP
Ø ACCUMULATING THE SUM (SUMMATION)
Ø SUMMATION: EXAMPLES
Ø MULTIPLYING THE NUMBERS (PRODUCTS)
Ø ARRAY OF CHARACTERS
Ø BUILDING A STRING: ARRAY OF CHARACTERS WITH NULL
Ø INPUT AND OUTPUT OF THE STRING
Ø INPUT/OUTPUT STRING: C VERSUS C++
Ø C scanf AND ARRAY'S NAME
Ø ARRAY INITIALIZATION
Ø KEEP NUMBER OF FREQUENCIES
Ø ARRAY OF ARRAY: TWO DIMENSIONAL ARRAY
Ø MULTIDIMENSIONAL ARRAY: ROBOT'S ARM POSITION
Ø ARRAY OF STRINGS
Ø PARALLEL ARRAYS
Ø MATRIX MULTIPLICATION
Ø BUILDING A DATA STRUCTURE WITH AN ARRAY
Ø SEARCHING AN ELEMENT OF AN ARRAY
Ø MODIFYING AN ELEMENT OF AN ARRAY
Ø DELETING AN ELEMENT OF AN ARRAY
Ø SORTING: AN ARRAY IS A NECESSITY
Ø ARRAY AND PAYROLL: PROGRAM EXTENSION
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 6 FUNCTION: ORGANIZING THE PROGRAM

Ø TWO KINDS OF FUNCTIONS
Ø C/C++ BUILT-IN FUNCTIONS
Ø BUILT-IN FUNCTIONS: EXAMPLE
Ø HOW TO USE A BUILT-IN FUNCTION
Ø BUILT-IN FUNCTION pow(): EXAMPLE
Ø USER-DEFINED FUNCTIONS VERSUS BUILT-IN FUNCTIONS
Ø WHERE DO YOU PLACE A USER FUNCTION?
Ø IDENTIFYING A FUNCTION
Ø C AND C++ PROTOTYPING: DIFFERENCES
Ø HOW TO PROTOTYPE A FUNCTION
Ø THE MAIN PROGRAM IS A FUNCTION TOO!
Ø USING A FUNCTION TO CALCULATE OVERTIME PAY
Ø WHY FUNCTIONS ARE IMPORTANT
Ø THINKING IN FUNCTIONS
Ø FUNCTIONS AND THE PROGRAM
Ø PASSING OF PARAMETERS TO FUNCTIONS
Ø MATCHING THE PARAMETERS: ACTUAL WITH FORMAL
Ø FUNCTION WITH RETURN VALUE
Ø FUNCTIONS WITHOUT PARAMETERS AND WITHOUT A RETURN VALUE
Ø LOCAL AND EXTERNAL (GLOBAL) VARIABLES
Ø WHY NOT DECLARE ALL VARIABLES AS GLOBAL?
Ø EXTERNAL VARIABLE AND THEIR SIDE EFFECTS
Ø SCOPE OF NAME
Ø BLOCK AND VARIABLE DECLARATION
Ø DIFFERENCE BETWEEN C AND C++: BLOCK AND VARIABLE DECLARATION
Ø FIND AVERAGE: ALL VARIABLES EXTERNAL
Ø FIND AVERAGE: EXTERNAL VARIABLE, LOCAL VARIABLE, AND RETURN VALUE
Ø FIND AVERAGE: EXTERNAL AND LOCAL VARIABLES, PARAMETERS, AND A RETURN VALUE
Ø PASS BY VALUE AS DEFAULT
Ø WHY PASS BY VALUE AS DEFAULT
Ø PASSING A PARAMETER VALUE BACK – TWO WAY COMMUNICATION
Ø PASS BY POINTER – C METHOD
Ø PASS BY REFERENCE – C++ METHOD
Ø C scanf AND SENDING THE ADDRESS OF A PARAMETER
Ø THE NAME OF AN ARRAY AS AN ADDRESS
Ø STRINGS AND POINTERS
Ø OTHER FUNCTIONS RELATED SUBJECTS
Ø PAYROLL PROGRAM WITH FUNCTIONS
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 7 STRUCTURE: PUTTING RELATED ITEMS TOGETHER

Ø HOW TO CREATE A STRUCTURE IN C
Ø C++ STRUCTURE IS EQUIVALENT TO THE C STRUCTURE
Ø C++ STRUCTURE AS A BETTER C STRUCTURE AND AS A CLASS
Ø PROGRAMMING WITH STRUCTURES OR WITHOUT: PARALLEL ARRAYS
Ø EXAMPLE OF C STRUCTURE
Ø EXAMPLE OF C++ STRUCTURES
Ø RECORD: ANOTHER NAME FOR A STRUCTURE
Ø DOT OPERATOR: ACCESS MEMBERS OF A STRUCTURE
Ø STRUCTURE INITIALIZATION
Ø ARRAY OF STRUCTURES
Ø ARRAY OF STRUCTURES VERSUS AN ARRAY OF ARRAYS
Ø POINTER TO A STRUCTURE
Ø PASSING A C/C++ STRUCTURE TO A FUNCTION
Ø CHANGING A MEMBER VALUE OF A STRUCTURE IN A FUNCTION
Ø RETURNING A STRUCTURE
Ø typedif: CREATING A SHORTHAND
Ø EXAMPLE OF C++ STRUCTURE
Ø PREDEFINED LIBRARY OF USEFUL C STRUCTURES
Ø STRUCTURE WITHIN STRUCTURE (NESTED)
Ø SELF-REFERENTIAL STRUCTURE
Ø UNIONS
Ø DIFFERENCE BETWEEN union AND STRUCTURE
Ø PUBLIC AND PRIVATE ACCESS OF A STRUCTURE
Ø BUNDLE FUNCTIONS TO DATA MEMBERS
Ø C++ STRUCTURE AND DATA ENCAPSULATION
Ø STRUCTURE TOPICS NOT COVERED HERE
Ø REVISITING THE PAYROLL PROGRAM WITH THE STRUCTURE
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 8 OBJECT AND CLASS: EVERYTHING AS AN OBJECT OF A CLASS


Ø HOW TO MAKE A CLASS
Ø GENERAL SYNTAX OF CLASS AND ITS OBJECT
Ø DATA MEMBERS AND MEMBER FUNCTIONS
Ø OBJECTS DO NOT MIX
Ø CLASS ACCESSIBILITY: INFORMATION HIDING
Ø WHAT SHOULD BE PRIVATE AND WHAT SHOULD BE PUBLIC?
Ø WHEN DO YOU MAKE A FUNCTION PRIVATE?
Ø FROM C STRUCTURE TO C++ CLASS
Ø CLASS AS A USER DEFINED TYPE (DATA ABSTRACTION)
Ø WHAT IS A CONSTRUCTOR?
Ø FUNCTION DEFINITION: INSIDE OR OUTSIDE OF CLASS (SCOPE RESOLUTION)
Ø SCOPE RESOLUTION AND AMBIGUITY
Ø SO WHAT DOES A CLASS DO?
Ø WHAT IS A CLASS DESTRUCTOR
Ø AUTOMATIC INVOCATION OF CONSTRUCTOR AND DESTRUCTOR
Ø SIMPLE SEARCH PROGRAM: CLASS, CONSTRUCTOR, AND DESTRUCTOR
Ø BANK ACCOUNT PROGRAM
Ø RAINFALL PROGRAM WITH CLASS
Ø TWO PARADIGMS: OBJECT VERSUS PROCEDURE
Ø PAYROLL PROGRAM WITH CLASS
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 9 FILE HANDLING: A DATABASE


Ø WORKING WITH A DATA FILE
Ø TO ACCESS A DATA FILE FOR INPUT
Ø EXAMPLE: ACCESSING THE INPUT DATA FILE
Ø TO WRITE INTO A FILE: OUTPUT FILE
Ø INPUT FROM KEYBOARD AS WELL AS INPUT FROM DATA FILE: SEARCH
Ø MODE OF OPENING FILE
Ø WHAT IS A DATABASE (DBASE)
Ø A JOURNEY FROM BIT TO DATABASE
Ø BUILDING A SIMPLE DATABASE: CREATE, DISPLAY AND SEARCH
Ø HOW THE CONTENT OF A SEQUENTIAL FILE CAN BE MODIFIED OR DELETED
Ø ACCESS THE SYSTEM COMMAND OF THE OPERATING SYSTEM: del AND rename
Ø MODIFY A FILE : EXAMPLE
Ø A COMPLETE BASIC DATABASE: INCLUSION OF MODIFY AND DELETE
Ø OPENING A FILE: PROBLEMS
Ø FILE MODE AND ERROR-CHECKING
Ø THE DIFFERENCE BETWEEN cerr AND cout
Ø PROBLEM WITH A SEQUENTIAL FILE : SOLUTIONS
Ø FILE WITH RANDOM ACCESS: seekg() AND seekp() 
Ø RANDOM ACCESS AND FILE STRUCTURE
Ø FAST ACCESS OF A RECORD
Ø TEXT FILES VERSUS BINARY FILES: DEFAULT VERSUS ios::binary
Ø TELEPHONE DIRECTORY & RANDOM
Ø ACCESS: seekp() MODIFY AND DELETE
Ø A BINARY FILE ACCESS WITH FUNCTION read() AND write()
Ø BINARY FILE AND STRUCTURE: write() AND read()
Ø RANDOM WRITE TO FILE: write() AND read()
Ø TELEPHONE DIRECTORY WITH ARRAY
Ø FILE WRITING AND READING: THE ENTIRE STRUCTURES
Ø C DIFFERENCES IN FILE HANDLING: ACCESSING INPUT FILE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 10 RECURSION: FUNCTION CALLING ITSELF


Ø WORD EXAMPLES OF RECURSION
Ø MATHEMATICAL EXAMPLES OF RECURSION
Ø A RECURSIVE PROGRAM
Ø RECURSION AND PASS OF PARAMETERS
Ø A FACTORIAL PROGRAM 
Ø RECURSION VERSUS ITERATION
Ø RECURSION IN PROGRAMMING LANGUAGES
Ø WHY RECURSION?
Ø A PROBLEM WITH RECURSION: INFINITE REPETITION
Ø FIBONACCI NUMBER SERIES
Ø RECURSION AND TREE STRUCTURE
Ø FIBONACCI TREE STRUCTURE
Ø INDIRECT RECURSION
Ø RECURSIVE SEQUENTIAL (LINEAR) SEARCH
Ø RECURSIVE BINARY SEARCH
Ø MORE ON RECURSIVE PROBLEMS
Ø TRY TO DO IT WITHOUT RECURSION
Ø SORTING RECURSIVELY: QUICK SORT
Ø THE TOWERS OF HANOI PROBLEM AND ITS RECURSIVE SOLUTION
Ø THE MONK AND THE 65 GOLDEN RINGS: TOWERS OF HANOI
Ø PROGRAMMING THE TOWERS OF HANOI
Ø CONVERSION OF RECURSION TO ITERATION
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 11 SORTING ALGORITHMS AND ANALYSIS

Ø SORT IT YOURSELF: DO IT YOUR WAY
Ø SORT ASCENDING OR DESCENDING
Ø EXCHANGE SORTS
Ø EXCHANGE SORT EXAMPLE: PASS ONE
Ø EXCHANGE SORT PROGRAM: FIRST PASS
Ø EXCHANGE SORT WITH ALL THE PASSES (N PASSES)
Ø EXCHANGE SORT: ROOM FOR IMPROVEMENT
Ø EXCHANGE SORT PROGRAM: BUBBLE SORT
Ø EXCHANGE SORTS: SINK SORT, BUBBLE SORT, OR TURTLE SORT
Ø PROGRAM EXECUTION TIME
Ø HOW LONG DOES IT TAKE TO SORT
Ø CALCULATING NUMBER OF COMPARISON AND SWAP: BUBBLE SORT
Ø CALCULATING THE SUM OF THE FIRST N NUMBERS
Ø WORST CASE, AVERAGE CASE AND BEST CASE OF AN ALGORITHM
Ø BIG-O NOTATION OR ORDER OF MAGNITUDE
Ø SWAP FUNCTION: DONE DIFFERENTLY
Ø SWAP WITHOUT TEMPORARY VARIABLE
Ø SELECTION SORT
Ø STRAIGHT SELECTION SORT
Ø STRAIGHT SELECTION SORT ALGORITHM: SIMPLIFIED
Ø STRAIGHT SELECTION SORT: THE FIRST PASS
Ø STRAIGHT SELECTION PROGRAM : FIRST PASS
Ø STRAIGHT SELECTION: SECOND PASS AND ALL THE PASSES
Ø STRAIGHT SELECTION SORT: COMPLETE PROGRAM
Ø STRAIGHT SELECTION SORT: INTERMEDIATE PASSES
Ø STRAIGHT SELECTION VERSUS BUBBLE SORT
Ø IMPROVING THE STRAIGHT SELECTION
Ø INSERTION SORT
Ø INSERTION SORT: DATA STORED IN AN ARRAY
Ø FIND THE LOCATION WHERE TO INSERT A NEW ELEMENT
Ø DRAW BACK OF INSERTION SORT USING ARRAY
Ø QUICK SORT FROM STANDARD LIBRARY
Ø qsort(): EXAMPLE
Ø HOW DOES QUICK SORT WORK
Ø DISCOVER YOUR OWN SORT
Ø ExSel SORT
Ø ExSel SORT: COMPLETE PROGRAM
Ø MERGE SORT
Ø MERGE SORT PROGRAM: TWO SORTED ARRAYS
Ø INTERNAL AND EXTERNAL SORTING
Ø EXTERNAL SORT EXAMPLE: FILE MERGE SORT
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 12 SEARCHING: TO LOOK AND TO FIND

Ø SEARCH PROGRAM STEPS
Ø SEARCH EXAMPLES
Ø A SIMPLE SEARCH: PASSWORD VALIDATION
Ø SEARCH TO GUESS YOUR MIND
Ø LINEAR SEARCH OR SEQUENTIAL SEARCH
Ø LINEAR SEARCH THROUGH A FILE
Ø LINEAR SEARCH THROUGH AN ARRAY 
Ø LINEAR SEARCH PROGRAM 
Ø SORTED LINEAR SEARCH
Ø SORTED LINEAR SEARCH PROGRAM
Ø ANALYSIS OF THE LINEAR SEARCH 
Ø BINARY SEARCH
Ø LINEAR SEARCH RECURSIVELY
Ø BINARY SEARCH RECURSIVELY
Ø ANALYSIS OF BINARY SEARCH
Ø HASHING
Ø SIMPLE HASH PROGRAM
Ø TABLE INDEX AND HASH VALUE
Ø HASH FUNCTION STRATEGIES
Ø HASHING A NUMBER
Ø SIMPLE HASH PROGRAM: SSN LAST FOUR DIGITS
Ø PROGRAM: HASH BY FOLDING
Ø HASHING A NAME (STRING):
Ø HASH A NAME (STRING): PROGRAM
Ø HASH TABLE STRATEGIES
Ø HASH TABLE REPRESENTATION
Ø STRING HASH TABLE: PROGRAM
Ø COLLISION PREVENTION AND RESOLUTION
Ø LINEAR PROBING: PROGRAM
Ø WHY DIVIDE BY A PRIME NUMBER? 
Ø DISCOVER YOUR OWN HASH
Ø ebhash1( ) HASH: PROGRAM VERSION 1
Ø ebhash2( ) HASH: PROGRAM VERSION 2
Ø A FAST HASH FUNCTION: hashpjw()
Ø HASHING ANALYSIS
Ø PATTERN MATCHING
Ø SEARCH TREE
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 13 ADDRESS, POINTER VARIABLE, DYNAMIC MEMORY ALLOCATION

Ø ADDRESS OF A VARIABLE
Ø A POINTER VARIABLE
Ø DECLARING A POINTER VARIABLE
Ø ACCESSING THE CONTENT OF WHAT A POINTER POINTS TO: INDIRECTION OPERATOR
Ø ACCESSING POINTER VALUE: DE-REFERENCING
Ø PASS BY POINTER: SWAP FUNCTION
Ø REFERENCE VARIABLE: ALIAS VARIABLE
Ø PASS BY REFERENCE
Ø ARRAYS AND POINTERS
Ø POINTER ARITHMETIC
Ø TRAVERSE AN ARRAY BY ITS POINTER
Ø TRAVERSING ARRAYS BY ANOTHER ARRAY POINTER
Ø POINTER COMPARISON
Ø DYNAMIC ALLOCATION OF MEMORY: new
Ø DE-ALLOCATION OF MEMORY: delete
Ø DYNAMIC ALLOCATION OF ARRAY
Ø PROBLEM WITH STATIC ARRAYS
Ø DE-ALLOCATION OF ARRAY
Ø NAME OF ARRAY AS A CONSTANT ADDRESS
Ø SORT BY POINTERS
Ø POINTER BUBBLE SORT
Ø PROBLEM WITH POINTERS
Ø POINTER INITIALIZATION
Ø POINTERS: COMPACT, POWERFUL, AND ELEGANT, BUT CONFUSING
Ø SELF REFERENTIAL STRUCTURE
Ø ACCESS A POINTER FIELD: p->next INSTEAD OF (*p).next
Ø LINKED LIST: A HOME MADE ARRAY
Ø BASICS OF INSERTION SORT
Ø BUILDING DYNAMIC DATA STRUCTURES
Ø BUILDING A SIMPLE STACK
Ø POINTER TO AN OBJECT
Ø C PROGRAMMER AND POINTERS
Ø C LANGUAGE POINTERS AND DIFFERENCES WITH C++
Ø PROGRAMMING LANGUAGES AND POINTERS
Ø HACKERS LOVE POINTERS
Ø COMPLICATED POINTERS
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 14 DATA STRUCTURES

Ø DATA STRUCTURE IMPLEMENTATION: STATIC VERSUS DYNAMIC
Ø ADVANTAGES OF STATIC DATA STRUCTURES
Ø DISADVANTAGES OF STATIC DATA STRUCTURES VERSUS DYNAMIC
Ø ADVANTAGES OF DYNAMIC DATA STRUCTURES
Ø DISADVANTAGES OF DYNAMIC DATA STRUCTURES
Ø MOST FREQUENT DATA STRUCTURES
Ø WHAT IS A STACK?
Ø APPLICATION OF STACKS
Ø STACK AND SYSTEM PROGRAMMING
Ø HOW TO IMPLEMENT A STACK
Ø IMPLEMENTING STACKS USING ARRAYS
Ø OPERATIONS ON A STACK
Ø INITIALIZING THE STACK
Ø STACK PUSH
Ø STACK POP
Ø STACK EMPTY
Ø STACK FULL
Ø SIMPLE STACK MENU: USING ARRAYS AND FUNCTIONS
Ø STACK APPLICATION: INFIX EXPRESSION TO POSTFIX EXPRESSION
Ø ALGORITHM FOR EVALUATION OF POSTFIX NOTATION
Ø POSTFIX EVALUATION PROGRAM
Ø TO CONVERT ASCII DIGITS TO ITS NUMERIC VALUE
Ø TO CONVERT DECIMAL NUMBERS TO BINARY: STACK APPLICATION
Ø HIDDEN STACK: CONVERT DECIMAL TO BINARY
Ø DYNAMIC DATA STRUCTURE: LINKED LISTS
Ø A HOME MADE ARRAY BY LINKING THE NODES: LINKED LIST
Ø VARIETIES OF LINKED LISTS
Ø LINKED LIST IMPLEMENTATION OF A STACK
Ø LINKED LIST STACK OPERATIONS
Ø PROGRAM FOR LINKED LIST – STACK OPERATIONS
Ø IMPLEMENT STACK DYNAMICALLY: STACK MENU
Ø DATA STRUCTURE QUEUE: FIFO
Ø OPERATIONS ON QUEUES
Ø HOW TO IMPLEMENT A QUEUE
Ø ARRAY IMPLEMENTATION OF A QUEUE
Ø QUEUE WITH ARRAY: PROGRAM
Ø ENDLESS QUEUE USING ARRAY
Ø WRAPPING THE ARRAY: CIRCULAR QUEUE
Ø CIRCULAR QUEUE
Ø STATIC IMPLEMENTATION OF A CIRCULAR QUEUE
Ø QUEUE APPLICATION: AIRPORT SIMULATION PROGRAM
Ø LINKED LIST IMPLEMENTATION OF QUEUE
Ø PRIORITY QUEUE
Ø PRIORITY QUEUE IMPLEMENTATION
Ø LINKED LIST OPERATIONS
Ø LINKED LIST OPERATIONS: MENU PROGRAM
Ø DOUBLE LINKED LIST
Ø DOUBLE LINKED LIST DECLARATION AND EXAMPLE
Ø INSERTION SORT USING DOUBLE LINKED LIST
Ø DATA STRUCTURE TREE
Ø STATIC IMPLEMENTATION OF BINARY TREE
Ø DYNAMIC IMPLEMENTATION OF BINARY TREE
Ø TREE TERMINOLOGIES
Ø BINARY SEARCH TREE
Ø BUILDING THE FIRST LEVEL OF A BINARY SEARCH TREE
Ø BINARY SEARCH LOOKUP
Ø BINARY SEARCH TREE INSERTION PROGRAM
Ø RECURSION BINARY SEARCH
Ø TREE WITH DIFFERENT TRAVERSALS
Ø ANALYSIS OF BINARY SEARCH TREE
Ø B TREE
Ø ADVANTAGE OF B TREE OVER BINARY SEARCH TREE
Ø GRAPH DATA STRUCTURES
Ø GRAPH TERMINOLOGIES:
Ø APPLICATION OF GRAPH
Ø ADJACENCY MATRIX REPRESENTATION OF A GRAPH
Ø ADJACENCY LINKED LIST OF A GRAPH
Ø SHORTEST PATH
Ø ALGORITHM FOR FINDING SHORTEST PATH
Ø HASHING WITH NO COLLISION
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 15 POLYMORPHISM, TEMPLATE, AND ADT

Ø FUNCTION OVERLOADING
Ø HOW DOES FUNCTION OVERLOADING WORK: FUNCTION SIGNATURE
Ø DEFAULT PARAMETER
Ø OPERATOR OVERLOADING 
Ø OPERATOR OVERLOADING EXAMPLES
Ø OPERATORS THAT CANNOT BE OVERLOADED
Ø OVERLOAD RESOLUTION RULE
Ø HOW TO OVERLOAD AN OPERATOR
Ø OVERLOADING MATH OPERATORS: BINARY + OPERATOR
Ø OVERLOADING BINARY + OPERATOR: PROGRAM
Ø PREFIX AND POSTFIX OPERATOR OVERLOADING
Ø FRIEND FUNCTION
Ø WHAT IS this POINTER?
Ø OVERLOADING INPUT AND OUTPUT OPERATORS: >> AND <<
Ø EXAMPLE OF I/O OVERLOADING
Ø OVERLOADING ASSIGNMENT OPERATOR =
Ø OVERLOADING THE EQUALITY OPERATOR ==
Ø OVERLOADING AN INDEX OPERATOR [ ]
Ø OVERLOADING ISSUES AND LIMITATIONS
Ø CONSTRUCTOR OVERLOADING
Ø BINARY + OPERATOR OVERLOADING: TIME CLASS PROGRAM 
Ø ABSTRACTION
Ø DIFFERENT LAYERS OF ABSTRACTION
Ø ABSTRACT DATA TYPE (ADT)
Ø CLASS AND OBJECT
Ø INFORMATION HIDING (DATA HIDING)
Ø MODULE 
Ø HOW TO MAKE AN INCLUDE FILE
Ø ENCAPSULATION
Ø HOW ABSTRACT DATA TYPES (ADT) ARE IMPLEMENTED
Ø TEMPLATE
Ø TEMPLATE FUNCTION
Ø TEMPLATE FUNCTION: PROGRAM
Ø TEMPLATE WITH MULTIPLE TYPES
Ø OVERLOADED FUNCTIONS VERSUS TEMPLATE FUNCTIONS
Ø CLASS TEMPLATE
Ø CLASS TEMPLATE: GENERAL SYNTAX
Ø STACK WITH TEMPLATE: GENERIC CLASS PROGRAM
Ø QUEUE WITH TEMPLATE
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 16 INHERITANCE: REUSABILITY AND EXTENDABILITY

Ø CLASS INHERITANCE: GENERAL SYNTAX
Ø EXAMPLE OF INHERITANCE
Ø EXAMPLE OF INHERITANCE: COMPUTE AREA OF CIRCLE
Ø BASE CLASS, DERIVED CLASS-GENERALIZATION TO SPECIALIZATION
Ø PROTECTED MEMBER INSTEAD OF PRIVATE
Ø DEFAULT INHERITANCE ACCESS TYPE: PRIVATE
Ø PRIVATE INHERITANCE
Ø DERIVATION TYPE (INHERITANCE ACCESS): PUBLIC OR PROTECTED
Ø INHERITANCE ACCESS CONTROL (MODIFIER)
Ø USING CONSTRUCTOR WITH INHERITANCE
Ø USING DESTRUCTOR WITH INHERITANCE
Ø MULTIPLE INHERITANCE
Ø VIRTUAL FUNCTION
Ø PURE VIRTUAL FUNCTION
Ø OVERRIDING BASE CLASS MEMBERS
Ø EARLY BINDING VERSUS LATE BINDING
Ø RUNTIME POLYMORPHISM
Ø ABSTRACT CLASS AND PURE VIRTUAL FUNCTIONS
Ø FRIEND ACCESS RIGHT AND INHERITANCE
Ø WHAT WOULD NOT BE INHERITED
Ø WHERE DOES ABSTRACTION COME FROM
Ø IS-A RELATIONSHIP AND HAS-A RELATIONSHIP
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD


CHAPTER 17 CHARACTER MANIPULATIONS, STRING CLASS, AND IOSTREAM

Ø STRIPPING THE WHITE SPACE WITH CONSOLE INPUT - cin
Ø TESTING FUNCTIONS OF istream
Ø PRINTING ASCII VALUES
Ø THREE VERSIONS OF get() MEMBER FUNCTION
Ø HOW TO BUILD A STRING CHARACTER BY CHARACTER
Ø BUILDING A STRING USING get() AND A CHARACTER AS PARAMETER
Ø get() MEMBER WITH IMPLICIT END-OF-FILE
Ø int get() FUNCTION WITH NO PARAMETER RETURNS END OF FILE FLAG
Ø SKIPPING WHITE SPACE WITH get()
Ø COUNT THE NUMBER OF CHARACTERS: EXCLUDE THE WHITE SPACE
Ø ACCESSING ENTIRE LINE OR PORTION OF LINE
Ø ignore() MEMBER FUNCTION
Ø PORTION OR ENTIRE LINE: FUNCTION getline()
Ø DIFFERENCE BETWEEN getline() AND get()
Ø put() FUNCTION
Ø CHARACTER FUNCTIONS #include<ctype.h>
Ø CONVERTING TO UPPERCASE: PROGRAM – toupper( c )
Ø WRITING YOUR OWN CHARACTER FUNCTION: mytoupper( c )
Ø WRITING YOUR OWN isupper FUNCTION: myisupper( c )
Ø putback( c ) VERSUS peek()
Ø WRITING A LEXICAL ANALYZER WITH C/C++
Ø CHARACTER DIGITS TO A NUMBER
Ø BUILT-IN FUNCTIONS TO CONVERT NUMERICAL STRING TO ITS NUMERICAL VALUE
Ø STRING FUNCTIONS TO MANIPULATE: #include<string.h>
Ø STRING COMPARISON: strcmp()
Ø CUSTOMIZING YOUR OWN STRING COMPARE FUNCTIONS
Ø STRING COPY: strcpy(string2, string1)
Ø CUSTOMIZING YOUR OWN STRING COPY FUNCTIONS
Ø PARTIAL COMPARISON: strncmp(str1, str2, n)
Ø STRING CONCATENATION: strcat(s1, s2)
Ø A STREAM THAT CONTAINS MANY STRINGS
Ø FORMAT FUNCTIONS OF IOSTREAM
Ø JUSTIFICATION: FORMAT IOSTREAM
Ø INVISIBLE INPUT CHARACTER: PASSWORD PROGRAM USING getch()
Ø FILE ENCRYPTION
Ø ARITHMETIC OPERATIONS BEYOND THEIR MEMORY LIMIT
Ø NAMESPACE
Ø STRING CLASS FROM STANDARD TEMPLATE LIBRARY (STL)
Ø CONSTRUCTING (INITIALIZING) AN STL STRING
Ø ACCESS OF A STRING ELEMENT
Ø CONVERTING STL STRING TO NULL TERMINATED STRING (C STRING)
Ø STL STRING CONCATENATION: str1 + str2
Ø MAKING PARTIAL STRING OR SUB-STRING: mystr.substr(startpos, numofposition)
Ø STRING CLASS FUNCTIONS – MAJOR CATEGORIZATION
Ø STRING ATTRIBUTE FUNCTIONS: mystr.length(), mystr.size(), mystr.capacity(), mystr.max_size()
Ø TO FIND A STRING OR A SUBSTRING IN A STRING: find(str)
Ø COMPARE FUNCTION: (str1.compare(str1start, str1nch, str2, str2start, str2nch)
Ø ASSIGN FUNCTION: str1.assign(str2, start, nch)
Ø APPEND FUNCTION
Ø REPLACE FUNCTION: replace(str1pos, str1nc, str2, str2pos, str2nc)
Ø INSERT FUNCTION: mystr.insert(startpos, str2)
Ø ERASE FUNCTION: mystr.erase(start = 0, numpos = npos)
Ø SWAP FUNCTION: swap(str1, str2)
Ø STRING CLASS INPUT AND OUTPUT
Ø C LANGUAGE INPUT/OUTPUT CHARACTER MANIPULATION
Ø WRITING AND READING ENTIRE DATA STRUCTURE TO AND FROM A FILE
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 18 STANDARD TEMPLATE LIBRARY

Ø WHY STL (STANDARD TEMPLATE LIBRARY)?
Ø THREE COMPONENTS OF STL: CONTAINERS, ALGORITHMS, AND ITERATORS
Ø CONTAINER TYPES
Ø STL ITERATORS
Ø STL ALGORITHMS
Ø TEN IMPORTANT STL CONTAINERS
Ø STL NAMING CONVENTIONS
Ø SEQUENTIAL CONTIGUOUS DYNAMIC ARRAY WITH ONE END: vector
Ø vector PROGRAM WITH OPERATIONS: empty( ) AND size( )
Ø VECTORS, ITERATORS, AND ALGORITHMS
Ø vector OPERATIONS sort( ), binary_search( ), and unique_copy( ) ALGORITHMS 
Ø THE BEST AND THE WORST OF vector
Ø CONTAINERS COMMON OPERATIONS
Ø deque> DOUBLE ENEDED QUEUE CONTANER
Ø HOW TO INCLUDE AND WORK WITH A deque:
Ø deque OPERATIONS: SAMPLE PROGRAM
Ø deque OPERATIONS: SAMPLE PROGRAM
Ø STL list: INSERT AND REMOVE FROM ANYWHERE WITHIN
Ø STACK AS A CONTAINER ADAPTER
Ø QUEUE CONTAINER ADAPTER
Ø STL QUEUE: queue <T> and prioritity_queue <T>
Ø ANALYSIS OF SEQUENCE CONTAINERS- INSERTION, DELETION
Ø ASSOCIATIVE CONTAINERS
Ø map ASSOCIATIVE CONTAINER
Ø WRITING A PROGRAM TO COUNT FREQUENCIES OF WORDS
Ø pair < K, V> CLASS from #include <utility>
Ø MAP INSERT
Ø MULTIMAP INSERT
Ø multimap ASSOCIATIVE CONTAINER
Ø set ASSOCIATIVE CONTAINER
Ø set OPERATIONS
Ø multiset CONTAINER
Ø set OPERATIONS WITH multiset
Ø INTIALIZING ASSOCIATIVE CONTAINERS WITH ASSOCIATED ARRAYS
Ø set AND multiset SEARCH OPERATIONS
Ø STL ALGORITHMS
Ø STL ALGORITHMS
Ø TRANSFORM ALGORITHM: PROGRAM
Ø FILL AND GENERATE FUNCTIONS: PROGRAM
Ø FOR_EACH FUNCTION: PROGRAM
Ø OTHER STL ALGORITHMS: copy, unique_copy, remove 
Ø STL ALGORITHM CATEGORIZATION: MUTATING, NON-MUTATING
Ø MODIFYING ALGORITHMS (MUTATING)
Ø ALGORITHMS WITH PREDICATES
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 19 ERRORS, EXCEPTION HANDLING, AND SOFTWARE ENGINEERING

Ø CATEGORIES OF BUGS
Ø SYNTAX VERSUS SEMANTIC ERRORS
Ø SHOULD COMPILER ERROR MESSAGES BE TRUSTED
Ø RUN-TIME ERROR - FILE DOES NOT EXIST: SIMPLE ERROR CHECKING
Ø DIVIDE BY ZERO: A SIMPLE ERROR HANDLING PROGRAM
Ø OTHER RUN TIME ERRORS
Ø RUN-TIME ERROR: READING PASSED END OF FILE
Ø C++ DEBUGGER: BREAKPOINTS, WATCHING VARIABLES, SINGLE STEPPING
Ø ASSERTION AS A DEBUGGING TOOL
Ø DIFFERENT STRATEGIES FOR ERROR HANDLING
Ø HOW TO THROW AN EXCEPTION
Ø TRY STATEMENT
Ø try, throw, AND catch: A SIMPLE EXCEPTION PROGRAM
Ø THROW AN EXCEPTION
Ø A try WITH MULTIPLE throws
Ø NESTED EXCEPTION HANDLING WITH FUNCTIONS
Ø TYPELESS EXCEPTION FOR UNCAUGHT EXCEPTIONS: catch(…)
Ø RE-THROWING AN EXCEPTION: throw WITHOUT A PARAMETER
Ø STANDARD LIBRARY EXCEPTIONS
Ø EXAMPLES OF STANDARD LIBRARY EXCEPTION CLASSES
Ø C++ STANDARD EXCEPTIONS
Ø EXCEPTION HEADER FILES
Ø EXAMPLE OF STANDARD EXCEPTION: ios_base::failure
Ø EXCEPTION CLASS AND EXCEPTION OBJECT
Ø AGAIN, WHAT IS PROGRAMMING?
Ø WHERE IS THE PROBLEM? : AVOID THE BIG BANG
Ø WHERE IS THE PROBLEM? : AVOID THE BIG BANG
Ø SOFTWARE REQUIREMENTS
Ø UML (UNIFIED MODELING LANGUAGE): A VISUAL MODELING
Ø UML USE CASES AND ACTORS
Ø UML DIAGRAMS
Ø UML AND RATIONAL ROSE
Ø FLOWCHARTING
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD

CHAPTER 20 POTPOURRI (MIXED BAG)

Ø BIT-WISE OPERATIONS
Ø BIT-WISE OPERATIONS: EXAMPLES
Ø BIT-WISE SHIFTS: SHIFT LEFT <<, SHIFT RIGHT >>
Ø COMPLEMENT OPERATOR ~
Ø SWAP FUNCTION USING EXCLUSIVE OR
Ø COMMAND LINE ARGUMENTS
Ø HOW THE MAIN PROGRAM IS CALLED
Ø SYSTEM PROGRAMMING
Ø RUN TIME TYPE ID (RTTI)
Ø TYPE CONVERSION: CASTING, DYNAMIC CASTING, REINTERPRET
Ø MULTIPLE FILE PROGRAM AND SEPARATE COMPILATION
Ø HEADER FILES: MAKING YOUR OWN INCLUDE
Ø A const FUNCTION
Ø ENUMERATION DATA TYPE: enum
Ø PROGRAM NAMING CONVENTIONS AND STYLES: IDENTIFIERS
Ø PROGRAMMING CONVENTIONS USED IN THIS BOOK
Ø NAMESPACE
Ø MAKING YOUR OWN namespace
Ø typedef
Ø PREPROCESSOR DIRECTIVES
Ø MACRO AS A FUNCTION
Ø CONDITIONAL DIRECTIVE
Ø TIME IT TAKES TO RESPOND
Ø STRING TIME VERSUS STRUCTURE TIME
Ø VARIABLE STORAGE SPECIFIER: auto, static, register, and extern
Ø register VARIABLES:
Ø mutable DATA MEMBERS VERSUS const
Ø CLASS HIERARCHICAL RELATIONSHIP: Has-A VERSUS Is-A 
Ø IS-A RELATIONSHIP: PROGRAM
Ø FRIEND FUNCTION
Ø A FRIEND FUNCTION: PROGRAM
Ø FRIEND FUNCTION: USED FOR OVERLOADING OPERATORS
Ø ARRAY OF OBJECTS
Ø POINTER TO OBJECT VERSUS this POINTER
Ø POINTER TO OBJECT OF CLASS
Ø this POINTER PROGRAM: WORKING WITH TWO OBJECTS
Ø ARRAY, A POINTER TO ARRAY, AND AN ARRAY OF POINTERS
Ø POINTER TO AN ARRAY: ALLOCATE ARRAY DYNAMICALLY 
Ø AN ARRAY OF POINTERS: ALLOCATE THE MEMORY ONE BY ONE
Ø C AND C++ DIFFERENCES: DYNAMIC MEMORY ALLOCATION
Ø C/C++ DIFFERENCES – FILE HANDLING
Ø STATIC DATA MEMBER
Ø STATIC MEMBER FUNCTION
Ø 10 COMMANDS OF HTML:html, a, img, table, form, input, select, li, textarea, mailto
Ø JAVASCRIPT
Ø WHAT IS CGI (COMMON GATEWAY INTERFACE)
Ø WRITING A CGI IN C++
Ø C++ CGI PROGRAM
Ø COMPILING A CGI PROGRAM
Ø A C++ CGI PROGRAM WITH TWO INPUT DATA
Ø C++ CGI DATABASE
Ø A C++ SIMPLE DATABASE TO CONVERT TO OBJECT
Ø JAVA DATABASE EQUIVALENT TO THE C++ DATABASE
Ø TOPICS NOT COVERED HERE
Ø CLOSING REMARKS AND LOOKING AHEAD



CASE STUDY


SELF-TESTS, PROJECTS, AND EXERCISES


APPENDIX


BIBLIOGRAPHY


INDEX



Alireza Ebrahimi
September 2002