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 usage of hash maps, stacks, queues, heaps, and analyzing run-time complexities and space complexities, among others.
- Data Structures - Use sata structures such as hash maps, stacks, queues, heaps. Manipulate single or double-linked lists, and maintain basic information about subtrees, node distances, etc.
- Algorithms - Use optimal solutions to solve problems. Analyze run-time complexities and space complexities. Create simple dynamic programming-based algorithms.