Hello,

I want to develop a site where kids can take math tests. Hundreds of types of problems, generated automatically by the software. The software should be able to generate infinite questions, given a parametrized template question and certain limits for the parameters. I know it's a very complex task, but bare with me.

To understand better what I'm looking for, please check this site: http://uk.ixl.com/math/years.

My questions are:

1. How should I approach this? What tools, technologies, languages, design strategies do you recommend? I'm looking for as little server load as possible and maximum portability. Was thinking about generating the pages in PHP, less the actual math testing area. That should be done client side and be fairly interactive and visually rich. My preferred technology would be Silverlight. .NET is where I feel most at home in programming.

2. Is it feasible to build such a site using a CMS? I'd like to be able to easily manipulate the "non-mathtest" content, but is the overhead a CMS adds to the server worth it? Also, how difficult is it to integrate other technologies (e.g. Silverlight) with the CMS?

3. Any idea how to design the application for dynamic math test generation itself? I have a few of my own, but am not sure how realistic they are and what would be the best way to proceed. One way to go is to make a different script or application for each problem type. Doing this from scratch for each type is really tedious so the scripts or applications should use a library of predefined highly customizable objects (in an OOP approach). A more advanced way to go would be to only build one client-side application that would run all the problem types, with each type of problem somehow stored in a database. The application would have to build each problem based on the info from the database. That would mean building a new problem type is only a matter of adding a new database entry (a record in a "ProblemTypes" table), but abstracting hundreds of heterogeneous problem types in a single paradigm seems like an extremely difficult task.

Any help on these matters will be highly appreciated. Thanks.