Algorithms
Sorting
Concepts
- 
Stability
 - 
Locality
 - 
Design, implementation (code), and common optimizations
 
Basic sorting algorithms
- 
Bubble sort
 - 
Insertion sort
 - 
Selection sort
 - 
Shell sort
- 
Pay attention to the implementation
 
 - 
 
Recursion
- 
Principle
- 
Divide and conquer
 
 - 
 - 
Call stack management
 - 
Impact on space complexity
 - 
Recursive form of common algorithms (e.g. binary search)s
 
Data structures
- 
Stacks
 - 
Queues
 - 
Lists
 
Know their:
- 
ADT & primitives
 - 
Implementation (contiguous vs. dynamic memory)
 - 
When to use them (as exemplified by code examples discussed in lectures)
 - 
Time and space complexity
 
Analysis
- 
Big-O/Omega/Theta notations
- 
Definition
 - 
Growth hierarchy of common functions
 - 
Time/space complexity of the algorithms that we have learnt
 
 - 
 - 
Little-o/Omega notations
 - 
Summation formulas