Monads are functional programming constructs that allow computations to be structured and composed in a purely functional way. They provide a way to compose functions of different types that can be logically combined. In Scala, monads can be represented using classes with map and flatMap methods, and for-comprehensions provide a cleaner syntax for working with monadic code. Some examples of monads in Scala include Option, List, and Writer.