Software development for algorithmic problems