techniques for designing algorithms 5138737