Algorithm: Finite set of instructions to accomplish a task. Built from sequencing, selection, and iteration.
Expressing algorithms: Natural language, diagrams, pseudocode, or code.
Comparing algorithms: Different algorithms can solve the same problem; some are more efficient. Equivalent algorithms may have different side effects.
Building blocks: Max/min, sum/average, divisibility, pathfinding. Reusing correct algorithms reduces development time and errors.
Efficiency: Measured by computational resources (time/space) as function of input size. Polynomial time (constant, linear, quadratic, cubic) = reasonable. Exponential/factorial = unreasonable.
Heuristic: Produces good (not guaranteed optimal) solution when exact algorithms are impractical.