Intelligent Tutoring Systems

This post was triggered by an email I received for papers for a conference. One of the suggested topics was Intelligent Tutoring Systems. Here is what Wikipedia says about ITS:

An intelligent tutoring system (ITS) is any computer system that provides direct customized instruction or feedback to students, i.e. without the intervention of human beings, whilst performing a task. [1] Thus, ITS implements the theory of learning by doing.

It occurred to me that a simple system can be modeled (and tried) with AIML (artificial intelligence markup language) to provide introductory courses in several subjects. There is an AIML engine available written in Python called PyAIML. We already tried a simple student project (a help system for SugarCRM) using this engine.

The UI can be implemented using Processing or some other similar powerful visualization tool. The visual models can also be built using a Visualization Modeling Language (on top of SVG). A better method, would be to blend an instant messenger like chat interface, with a response window that supports simple graphics (to display diagrams). To do a project like this, we need the following:

1. A customizable chat (based on Jabber or some other similar client)
2. A surface that can display not only text but simple graphics
3. A KB built on something like AIML
4. Content customized towards teaching an introductory subject
5. A simple visualization interface like Processing

This is certainly an exciting area to explore for some student projects. A few good tools to create content in AIML format would be a great first step.

Posted via email from Dorai’s LinkLog

Programming Languages

What programming language should I learn, a link I found on Twitter (like most of the other things I seem to find, nowadays) is a nice list and a good map for some one who is learning languages and looking for experimenting more.

I think for each language we can add a set of additional reasons – for example:

php – any work on mediawiki, drupal, joomla etc.
c# – any work on web parts, dotnet components, silverlight RIA
python – any work on django, nltk, machine learning, Plone, zope

In addition, I would add these languages. They are on my list to play around with and build a few prototypes (not sure when I get to them, though)

Boo – A python inspired language for writing DSLs (domain specific languages)
L Sharp or Lisp or Scheme – A list based language for learning programming
Squeak – A small talk based language for building delightful interactive applications
Berkeley Logo – For simulations, nothing beats this lisp inspired language
Prolog – for building logic programs and expert systems (though expert systems are fading away with machine learning based languages)
Haskell – Seems to be catching fire and may be one of the preferred languages for building multi-core apps
Erlang – Another language for building highly robust, scalable, multi-core apps
AIML – Artificial Intelligence Markup Language for buidling chat bots (even has a python AIML engine). Currently working with a student to build a chatbot for SugarCRM
SPARQL – A semantic web query language (easy if you already know SQL)
RDF and OWL – Not really languages in the conventional sense but I consider them as data languages

After writing all this, I decided to put this in my blog since it is worth remembering and updating them.

When I watch some videos on Lisp/Scheme, I understand why Lispers are so religious about their language. I have not seen more efficient/concise ways of solving problems or clarity of concepts.

Code as Data

An extension to the Google Site Map to allow your public code to be searched. This is a cool idea. It is taking the philosophy of distributed data one step further. In this case we are treating Code As Data for the purposes of Search. It is just a little innovation that makes it easy for Code search engines to locate code.

From Code Search Site Map:

We’ve heard from a number of site owners who want to make sure their public source code is searchable via Google Code Search. To help with that, we extended the Sitemap Protocol to support code files. This makes it possible to specify all the code files on your site, as well as the programming language and software license for each file.

To get started, check out the new Code Search tags for Sitemaps. For complete software packages that are archives (.tar, .tar.gz, .tar.bz2, or .zip), you can create a packagemap file to describe all the individual code files in each package.

The benefits go beyond Google Code Search. The concept can be used behind the firewall for enterprises to share code and detect duplicate code inside an enterprise as well.

Combining Code Search with AIML may be used to produce an interactive code finder for open source.