Structured procedures (backtracking, recursion, greedy, dynamic programming)