Students learn to implement and analyze elementary data structures and the basic complexity classes of algorithms that use strategies such as greedy algorithms, divide-and- conquer algorithms, and backtracking algorithms. This analysis is especially applied to problems in searching, sorting, and parsing.