This document discusses algorithms and their properties. It defines an algorithm as a finite set of well-defined instructions to solve a problem. There are five criteria for writing algorithms: they must have inputs and outputs, be definite, finite, and effective. Algorithms use notation like step numbers, comments, and termination statements. Common algorithm types are dynamic programming, greedy, brute force, and divide and conquer. An example algorithm calculates the average of four numbers by reading inputs, computing the sum, calculating the average, and writing the output. Key patterns in algorithms are sequences, decisions, and repetitions.