- Python: Although it is slower than JAVA or C++, Python is the language I interview with so I it made most sense to use for this class.
CS 4102 provides an introduction to algorithmic strategies and analysis techniques. In particular, we covered:
- Formal metrics for evaluating algorithm complexity (including the asymptotic classes big-oh, big-omega, big-theta, little-oh, and little-omega)
- Evaluating an algorithm’s usage of resources (including time and space complexities) by a worst-case analysis, expected-case analysis, and amortized analysis
- Algorithm design strategies (including divide and conquer, dynamic programming, greedy, and reductions)
- The impact of data-structure choice on algorithm design
- Proving algorithm correctness
- Proving worst-case lower bounds on algorithm efficiency
- Discussion of randomized algorithms and expected efficiency
- Algorithms on graphs
- NP-Completeness