Solving Algorithmic Problems
1. Sorting
(e.g., insertion sort, bubble sort, quick sort, merge sort, etc.)
2. Searching
(e.g., binary search, breadth-first search, depth-first search, Dijkstra’s
algorithm, and A-star)
3. Other computer science problems
(e.g., matching, permutation, counting, tree traversal, etc.).
Using data structures
1. ubiquitous data structures
(e.g., lists/arrays, sets, maps/dictionaries, trees, graphs, linked lists, tuples,
queues, stacks, and heaps)
2. formats
(e.g., string, integers, floats, and the like).
Applying coding methods
1. algorithmic techniques
(e.g., recursion, backtracking, divide & conquer, etc.)
2. mechanisms
like: classes and inheritance
3. miscellaneous practices
such as: decorator pattern, list comprehensions, exception handling,
function composition, bit manipulation, plotting, importing packages,
debugging, and the like.