Teaching techniques for solving combinatorial optimization problems, especially those that can be formulated over graphs.