Solving problems is the core of computer science. Programmers must first understand how a human solves a problem, then understand how to translate this "algorithm" into something a computer can do, and finally, how to write the specific code to implement the solution. At its core, problem-solving focuses on the study, understanding, and usage of data structures and algorithms.
This competency area includes working with Data Structures such as Trees, Graph Traversal, using Dynamic Programming and Specialized Algorithms, among others.
- Advanced Data Structures - Work with data structures such as trees, graph traversal. Find the shortest paths, diameter, etc. Use trees such as red-black or Fenwick trees effectively.
- Advanced Algorithms - Use Dynamic Programming and Specialized Algorithms. Knowledge of efficient string search algorithms such as Rabin-Karp and Knuth-Morris-Pratt. Efficient graph search algorithms such as Dijkstra’s algorithm. Create complex or multi-dimensional dynamic programming models.