1.1 The Course of This Course1.1.1 Layers of Software1.1.2 Algorithms and Efficiency1.1.3 Sorting1.1.4 Maintaining Sorted Order1.1.5 Indexing, Search, and Retrieval1.1.6 Dynamic Versus Static Behavior1.1.7 Memory and Bandwidth1.1.8 Heuristics1.1.9 Templates, Generics, and Abstract Classes1.2 Examples1.2.1 Card Catalogs1.2.2 Student Records1.2.3 Retail Transactions1.2.4 Packet Traffic1.2.5 Process Queues1.2.6 Google1.2.7 Game Trees1.2.8 Phylogenetics1.3 Summary