Features
- Need to make choices
 - Have constraints
 - To achieve a goal
 
Examples
- N Queens
 - Permutation
 
Functions
- driver function
 - solve function To help with making choices, exploring, and undo choices
 - validating function To help with exploring whether the choice is valid
 
Things we need to do
- Find out base case
 - Find out constraints, i.e. when we change choices
 - Find goal, i.e. when we stop
 - Store the state before making a choice, and go back to it