This document discusses deterministic and non-deterministic algorithms. A deterministic algorithm always produces the same output for a given input, while a non-deterministic algorithm may have multiple possible outputs for one input. Non-deterministic algorithms have two stages: a guessing stage that generates a potential solution, and a verification stage that checks if the guess is correct. Examples of non-deterministic algorithms given are a search algorithm that guesses a location containing the search value, and a sorting algorithm that guesses the sorted order of elements.