The document provides an overview of several common programming paradigms, including imperative, functional, logic, object-oriented, and concurrent/distributed programming. For each paradigm, it gives a brief 1-2 sentence description of its characteristics. Imperative programming is described as evolving from machine and assembly language and focusing on non-programming contexts. Functional programming is defined as expression-oriented and close to mathematical specifications. Logic programming is summarized as using logical statements to describe required solution properties. Object-oriented programming views data as objects and has programmers define data types and operations. Concurrent and distributed programming allows for multiple simultaneous operations.