A comprehensive introduction to mathematical optimization and Gurobi tailored to data scientists and problem solvers