archives

What is the best system for experimenting with and visualizing complex algorithms?

Let's say you see a sophisticated algorithm in a textbook, with a precise definition in terms of high-level operations. For example, in his textbook on Machine Learning, Alpaydın derives an algorithm for finding the highest probability state sequence for a Hidden Markov Model given an observation sequence. The algorithm has a precise definition but it is very high level and it leans heavily on the accompanying mathematical derivation. All of the implementation details are left out. I would like to code the algorithm, combine it with other algorithms, and make variations. I would like to test the algorithm and visualize its results. More broadly, I would like to experiment with machine learning and knowledge-intensive algorithms. My goal is to understand the possibilities and limitations of machine learning. (But other people might have other goals with such a system.)

What's a good system for doing this? Ideally, the system should have a well-designed core language (including lexical scoping, good concurrency model, closures, factored design, etc.), have a good set of combinators for building algorithms and good libraries for all the most useful high level operations, be interactive and easy to use, have a good I/O ability including reading and writing concurrent streams and interactive visualization, and be reasonably efficient. This is a tall order. Should I look at a computer algebra system (e.g., Mathematica, Maple, or Sage) to satisfy these requirements? What experience do LtU members have?