Greedy algorithms are a technique for solving problems by making locally optimal choices at each step in the hope of finding a global optimum. The key aspects are: 1. Break the problem down into smaller sub-problems. 2. Make optimal choices at each step to solve each sub-problem. 3. Recursively apply this process to solve the overall problem. Greedy algorithms may provide an optimal solution but do not guarantee it, as the locally optimal choices at each step do not necessarily lead to a globally optimal solution. Examples provided include using a greedy approach to solve problems like cash exchange and task scheduling.