Algorithm Design & Implementation


Software engineering has become such a complex discipline, the development of algorithms is, arguably, a shrinking part of the work. Yet algorithms remain important and challenging.

Many frameworks implement very complex algorithms, and the adoption and use of such frameworks requires the cognitive skills to understand how they work. These abilities are a baseline requirement at ioet.

All problems cannot be solved with an off-the-shelf solution. Development of new algorithms is essential. Most algorithms support a business process that requires domain expertise, logical thinking, basic data structures such as graphs and relational algebra, awareness of different computational models such as parallel or serialized execution, searching, recursion, declarative programming and the skills to follow strict methodologies such as design-by-contract and to select from different modularization strategies. These are the types of basic skills needed by any senior software engineer at ioet.

We also work on much more challenging algorithms, using methods such as divide and conquer, transform and conquer, back-tracking, Tabu search, dynamic and linear programming, ZPP complexity, heuristic algorithms, continuous algorithms, discrete event dynamic systems, and algorithms which use machine learning techniques. Our practice of algorithm engineering is enhanced by our diverse workforce, some of whom did not study computer science formally but instead have degrees in fields such as:

  • Theoretical Physics

  • Mathematics

  • Industrial Automation and

  • even Accounting.