In the last few years, the society is witnessing ever-growing levels of complexity in the optimization paradigms lying at the core of different applications and processes. This augmented complexity has motivated the adoption of heuristic methods as a means to balance the Pareto trade-off between computational efficiency and the quality of the produced solutions to the problem at hand. The momentum gained by heuristics in practical applications spans further towards hyper-heuristics, which allow constructing ensembles of simple heuristics to handle efficiently several problems of a single class. In this context, this short book compiles selected applications of heuristics and hyper-heuristics for combinatorial optimization problems, including scheduling and other assorted application scenarios.