This document introduces the abstract data type (ADT) of a bag. A bag is defined as a finite collection of objects that are in no particular order and can contain duplicates. The chapter describes the behaviors of a bag such as adding/removing objects, checking for duplicates or a specific object. It discusses specifying the interface of a bag by defining its methods and parameters. The chapter provides examples of using bags for online shopping and piggy banks to demonstrate how bags work without knowing their underlying implementation, similar to how a vending machine's interface is used without understanding its internal mechanics.