abstract data types (adts adjacency adjacency list adjacency matrix algorithm analysisapproaches average case analysis benchmarking algorithm design divide and conquer paradigm dynamic programming approach algorithmsclassifying by complexity about complexity curves algorithmsclassifying by design about divide and conquer dynamic programming greedy algorithms algorithmsclassifying by implementation about determinstic logical nondeterminstic parallel recursion serial algorithms about classifying elements reasonsfor studying amortized analysis anaconda reference append method arithmetic operators array module arrays asymptotic analysis average case analysis backtracking about example bar chart benchmarking big notation binary search tree (bstabout benefits example implementation maximum nodesfinding minimum nodesfinding nodesdeleting nodesinserting operations treesearching binary search about example binary trees boolean operation box plot bracket-matching applicationstack breadth first traversal breadth-first search about code bubble chart bubble sort