My programming stack

I am not a software engineer, but we do a lot of programming and computational work in OR/IE. I like to have a GNU/Linux system as a basis, and on top of that:

  • For research, quick prototyping, and teaching illustrations I have been mostly using python (example code docs) and, more recently, Julia. Conceptually, I am pretty comfortable with OOP, but have limited exposure to FP.
  • I really like R/ggplot/tidyverse in general for quick visualization and exploratory data analysis (see code example),
  • For high performance computing I use a comp cluster with Portable Batch System (PBS) along with bash and make as a “glue” in my computing (see a small example and related note).
  • For a high-performance code, besides Julia, I would go with C++ or Java. (My last experience involved implementing Ellipsoid method for LPs as a course project.)
  • I don’t really like Jupyter notebooks due to complicated version control, but I must admit it might be handy, and I had some success with it for teaching (e.g., see notebook/lecture example)

This is the core, but of course a lot is determined by the problem at hand. Note that I shared some more thoughts on “general toolbox” in a dedicated seminar we run in early 2021, and some smaller notes are indexed in “Misc notes” section.