People who teach or supervise students have a tremendous influence on what solvers get adopted by the community. Once they finish their studies, many students will continue to use the tools they have learned in school; it is simply more efficient. In this post, I explain the reasons behind the choice of tools I use in class. The associated primal post is about the change in availability of tools over the last few years.
- In my decision support systems design class (undergrad, industrial engineering), I recommend that the students use Excel, VBA and CBC (CoinOR’s mixed-integer programming solver).
- Supply chain design class (masters level, industrial engineering & analytics), I recommend the students use CPLEX with a modeling language of their choice.
What is likely to be useful to students?
Most of our undergraduate students at my university come from nearby cities and will probably work in small or medium sized businesses. CPLEX with AMPL is a good mix of tools, but the sad truth is that many small manufacturing businesses will be very reluctant to spend that much on software licences for a new employee. The DSS class is focused on a “do it yourself” approach, so we use tools that are either free (CBC) or are present in almost every business (Excel). Besides, industrial engineering students learn AMPL & CPLEX in another set of two classes, so they still get in contact with these tools.
On the other hand, most masters in analytics are liklely to have more dedicated analyst/planning jobs in larger companies, where integration with other tools is important and where larger budgets are available for buying analytics software. Besides, many of them will end up working on more difficult models or in research, where it is important to use the fastest tools available.
Using the right tools
Besides the talk about context and usefulness, I think it’s important to teach using the right tools. If your class is about hard optimization problems, then use a state-of-the-art solver, not GLPK. If you require to get data from a database or text file and send that to a solver for direct resolution, most people don’t need to use the C API, unless they are very proficient in C, a rather uncommon skill in undergrads. Use either a modeling language, or the solver’s appropriate API.
One or more?
When teaching optimization, many professors will require the use of one solver or programming language. This is makes grading and supporting easier and is especially relevant if you have a teaching assistant (TA). In more advanced or project-based classes, you might want to give more freedom to students to select the most appropriate tool for their project. Since there is a lot of homework and exercices to turn in my supply chain class, I require the use of specific tools.
Teach with tools you know
The tools I recommend using are software I have worked with in the past and that I know well enough to be able to support the students if they have a problem. Otherwise, the students who work with languages or software I know would be advantaged over those who work with technologies I don’t know. I also make it very clear to students in project-based classes that if they use other technologies, I might not be able to support them.