Intermediate problem solving and data structures