This paper surveys the design of combinatorial auctions, which allow bidders to bid on combinations of different assets due to complementarities or substitution effects. The Combinatorial Auction Problem (CAP) involves selecting the winning bids among all possible combinations of items. The CAP can be formulated as an Integer Program, and the paper discusses various methods to solve it, including exact and approximate methods. Exact methods use techniques like branch and bound, cutting planes, and column generation to find optimal solutions. Approximate methods aim to find feasible solutions quickly, with approaches based on worst-case analysis, probabilistic analysis, and empirical testing. The paper also explores decentralized methods, such as dual-based procedures and market interpretations, which can reduce computational burden and adapt to dynamic environments. Additionally, it covers the role of integer programming in combinatorial auctions, including duality and Lagrangean relaxation. The paper highlights the importance of understanding the structure of instances and the use of heuristics for large-scale problems.This paper surveys the design of combinatorial auctions, which allow bidders to bid on combinations of different assets due to complementarities or substitution effects. The Combinatorial Auction Problem (CAP) involves selecting the winning bids among all possible combinations of items. The CAP can be formulated as an Integer Program, and the paper discusses various methods to solve it, including exact and approximate methods. Exact methods use techniques like branch and bound, cutting planes, and column generation to find optimal solutions. Approximate methods aim to find feasible solutions quickly, with approaches based on worst-case analysis, probabilistic analysis, and empirical testing. The paper also explores decentralized methods, such as dual-based procedures and market interpretations, which can reduce computational burden and adapt to dynamic environments. Additionally, it covers the role of integer programming in combinatorial auctions, including duality and Lagrangean relaxation. The paper highlights the importance of understanding the structure of instances and the use of heuristics for large-scale problems.