Hi all,

For a course in university (Intelligent Systems -- AI, neural nets,
expert systems etc.) I and others have to write some kind of intelligent
agent.  Inspired by the "tutor" example of the course and our love for
Ruby, we decided (free choice assignment) to write a Ruby Programming
Language Tutor.

Purpose
-------
The tutor's purpose is to learn the student Ruby basics by means of
lessons.  A lesson could explain for example the aspects of Integers by
giving the student assignments and give answer to or elaborate on
questions like: Why? How? When? etc.

The tutor gives assignments which the student must complete.  Besides
the fact the user must give correct output, not all code that produces
this output will suffice.  The student should familiar him/herself with
some of Ruby's best programming practices too.

For example the assignment could be:
Print the numbers 10 till 15, each on a line.  

The student could do:
| puts 10, 11, 12, 13, 14, 15
but we would really like him to use:
| (10..15).each { |i| puts i }
and maybe not even
| (10..15).each do |i| puts i end
because it's common style to use { ... } for one-liners.

Note that the agent could decide to allow the first input, because
the student hasn't done the lesson on iteration yet.

Interface
---------
Everything should run in a web browser.  The idea is to present
an interface to select lessons (possibly not all order restricted),
show progress and the actual lesson interface.
This interface presents the user with the assignment, a form to type in
his/her code and some buttons for asking Why?, When?, How? or to
request a hint.

Everything said above hasn't crystallised yet and isn't definite at all. 
But if some of you know some interesting links, libraries or
documentation pointers, please let me know!
Things we are especially interested in:
* A simple step-for-step tutorial we can use as bases for our lessons
  (Pickaxe, Poignant guide are great, but not suited.)
* Ruby style guides (except for the one on RubyGarden). 
* Adaptive hypermedia libraries?
* Libraries for investigating the input of the user.  Validation by
  means of evaluation is necessary, but we also like to investigate
  the structure of what the user typed, so the agent can give hints on
  how to do it better.

Thanks for the help,

Paul

-- 
Student @ Eindhoven                         | JID:   paul / luon.net
University of Technology, The Netherlands   | email: paul / luon.net
>>> Using the Power of Debian GNU/Linux <<< | GnuPG: finger paul / luon.net