I had a chance to meet Bill Hart at the INFORMS Computing Society Conference to talk about blogging. Bill Hart is an OR person with a computer science (CS) background. Part of his interest in blogging stems from his CS background. CS tends to rely on a more oral tradition, since the specific tools change even quicker than they do in OR. There are also certain types of publications that focus on specific implementation issues rather than high-level model and algorithmic issues. However, many such journals are no longer in press, leading to knowledge not being passed to the next generation of computer scientist. One example that Bill Hart mentioned is the journal Dr. Dobbs (a list of now defunct CS journals is maintained here). In order to get a sense of what these journals offer, you can read about the history of Dr. Dobbs here, and you can read a programmer’s lament about its demise, where he writes:
A conventional magazine or newspaper instead “pushes” information into a reader’s hands. I flip through every page, or at least look hard at the table of contents, of every magazine. Serendipity reigns; facts and ideas I wasn’t looking for come leaping off the page. I rip out articles of interest to read during down times, on the plane or waiting in a lobby somewhere.
Hopefully, Bill will blog more about this soon—I am doing my best. Instead of writing more about CS, I can write about OR.
The publications that Bill Hart mentioned are aimed as using specific tools and software for solving problems. We tend to teach the methods and theory in class, but the software comes and goes. Students and practitioners often need to solve problems using software that isn’t documented nearly as well as their simulation or integer programming textbooks. Google is somewhat helpful for finding documentation and help, but as I’ve learned lately with Gurobi, google is not enough. Those of you who follow my twitter feed know that I installed Gurobi on my work computer and laptop with some success, but I had trouble finding the exact commands that I needed. Twitter users and the Gurobi discussion group on google were necessary.
What information needs to be passed on between the generations of OR analysts? More specifically, what are we not doing a good job of passing on? To be honest, I am not sure if I am old enough to answer those questions.
As I write these thoughts on a blog post, I am not suggesting that blogs should necessarily play a central role in educating the next generation (indeed, they are all too easy to ignore). While blogs are good at creating content, they are not really appropriate for all types of content creation. Twitter isn’t a better alternative. I have used twitter to occasionally find solutions to my software problems, but I didn’t then use twitter to educate the masses with my newly-found answers. With the wealth of tools available online, I wonder if there are new opportunities to educate the next generation of operations researchers if we are creative. What do you think?
January 13th, 2011 at 5:05 pm
You raise a great question here. Since you feel lacking in age, and I have it in abundance, I’ll weigh in. 🙂
One thing we don’t do at all well in academe is pass along the practical aspects of implementing various models and algorithms. To pick one low-hanging fruit, everybody learns about “big M” methods in a class somewhere, and I imagine everybody learns that M has to be “big enough”; but how many classes discuss in detail the perils of a too-large value of M, or (probably model-specific) ways to find an appropriate but tight value of M? Similarly, IP classes may teach Lagrangean relaxation (and probably assign a simple problem or two), but how many get into duality gaps and what to do when LR isn’t helping? Symmetry in an integer programming model is generally evil, but I remain a bit surprised at how many IP users don’t even recognize the term.
I think quite a bit of “how to make it work” knowledge is acquired by experience and not communicated well, which means the next person to come along has to run face-first into the same wall. Forums like OR-Exchange and sci.op-research help, as do software forums (such as IBM’s CPLEX forums), but we could do better. Blogs help (even if they’re not widely read, they’re searchable). Maybe something like Google’s Knol or (gulp) the Wikipedia? YouTube channels (like Google Tech Talks)?
January 14th, 2011 at 11:27 am
Paul, as always, your response is excellent.
January 18th, 2011 at 3:19 pm
As a CS person now entering the field of OR, the thing that helped me learn programming best was example code. The wealth of code available for computer science students to look at and tinker with is astronomical. If we could attempt to do the same with models in OR, that might help.
January 18th, 2011 at 4:10 pm
@Ryan: There are, of course, examples of models in textbooks, but they tend to avoid some of the complexities that a real model must cover. To provide more/better examples, we need four ingredients that I can see: (1) a list of requested models; (2) volunteers to generate (and vet) the models; (3) a place to house them; and (4) a way to locate them. I see (1) and (4) as the major problems. It’s not obvious to the “pros” what models are needed, and a user will often be looking for a model with a certain feature or complication, which might be present in a model with a different context than what they are currently considering (and not in an example of their current problem).
As a somewhat trivial example of that last point, you might be trying to model a knapsack problem with a side constraint that inclusion of either item A or item B precludes inclusion of the other. There might be knapsack models in the repository, but none with that side constraint; meanwhile, there might be an assignment or team formation model that had that very constraint, but since it’s not a knapsack, you likely would not know to look at it. A “taxonomy of complications” would be tricky to create.
February 1st, 2011 at 11:04 am
I think that programming contests and the whole training prior to them help CS students developing such skills.
I might say that they were a very important part of my undergrad life.
You learn a lot about how to tackle a problem, to code efficiently and to work under pressure, as well as how to benefit from team work.
The people that I worked with at such environments are the first that I think about when asked about people to hire in my current job, because I know they can stand challenging work better than the average.
Besides, I think that blogging is quite important to propagate such practical knowledge.
However, one must be introduced to such practical subtetlies since his/her first classes, even if a class using a given tool might be seen as useless to the student after a while.