An algorithm is a well-defined procedure for solving a problem through a series of unambiguous instructions. The word derives from the name of mathematician Mohammad Ibn-Musa-al-Khwarizmi. An algorithm must have specified input and output, be definitive, effective, and finite. Common algorithm types include recursive, backtracking, divide-and-conquer, dynamic programming, greedy, branch-and-bound, brute force, and randomized algorithms. Examples provided include algorithms for making brownies and calculating student grades.