Monads are functional design patterns that wrap objects and provide two operations: identity (unit) and bind (flatMap). They follow three laws: left-identity, right-identity, and associativity. Common monads in Scala include List, Option, Future, and Try. Monads allow calculations to be chained together by passing the output of one as the input to the next.