Covers algorithms and their performance analysis, data structures, abstraction, and encapsulation. Introduces structures and their physical storage representation. Studies stacks, queues, linked lists, trees, graphs, heaps, priority queues, and hashing. Discusses efficient sorting (quicksort and heapsort) and introduces experimental analysis of algorithms as applied to engineering applications. Examines several design issues, including selection of structures based on what operations need to be optimized (insertion, deletion, traversal, searching, sorting, evaluation), encapsulation of algorithms using class and template techniques, and how and when to use recursion (versus explicit stack-based techniques). Laboratories include programming of data structures in C++ and Java applied to Engineering.
Pre-Req: EECE.2160 ECE Application Programming