CS 227 lecture -*- Outline -*- * review of HR 9, 12.4-8, 12.10, 13, and file I/O ** ADT Design and implementation A. How to design an ADT's operations? 1. idea of an abstract domain, and its purpose 2. kinds of operations - classification, - how to use as an aid to designing operations 3. completeness and testability - deciding when have a minimal set of operations - deciding when a set of operations is effectively complete B. How to implement an ADT correctly? 1. Choosing a reprsentation 2. Abstraction map - purpose and use 3. Abstract vs concrete assertions, - purpose and use ** Searching and Hashing A. linear search - when to use - efficiency - how to write the code B. binary search - when to use and restrictions - efficiency - how to write the code C. hashing - when to use, and restrictions - efficiency - how to write code for chained hash tables - variations ** Sorting A. Bubble sort - when to use - efficiency (average, worst, best) - how to write the code B. selection - when to use - efficiency (average, worst, best) - how to write the code C. quicksort - when to use - efficiency (average, worst, best) - how to write the code - partitioning code ** Trees A. Terminology - be able to use the terms, and understand them in problems B. Data structures - dynamic data implementation (C++ structs) - array implementation C. Binary search trees - definition - purpose, when to use - insertion efficiency, how to write the code - searching efficiency, how to write the code D. Treesort - efficiency (average, worst, best) E. Heapsort - efficiency (average, worst, best) - how to write the code ** File I/O A. files and streams - creation of files - opening files for output and input - closing files B. Access - sequential access - random access * general review ** general Q: which are the most important skills? Q: design a final exam question. ** study tips do suggested practice/extra-credit problems (by hand) check by hand and then on computer read our solutions to the homework and compare with yours read over the chapters again if needed