A stack is a data structure that follows the last-in, first-out (LIFO) principle. It allows for two basic operations - push, which adds an item to the top of the stack, and pop, which removes an item from the top. The document provides examples of stacks in real life and defines overflow and underflow situations. It also describes some additional operations that can be performed on a stack like duplicate, peek, swap, and rotate.