Monday, June 25, 2012

Ava, a virus AI

Asa H 2.0 (see my blogs of   10 Feb. 2011 and 14 May 2012) can be made the payload of a computer virus (The Little Black Book of  Email Viruses, Mark Ludwig, Createspace, 2009 and Hacking, Jon Erickson, No Starch Press, 2008 ).  When released onto a computer network the infected machines will communicate with one another by email, turning the network into a large parallel AI computer.  I have written the code for such an Ava 1.0 but do not currently own a computer network on which I could deploy, debug, and test Ava so I have only been able to perform small scale debugging and testing. (I bought a router and have networked a couple of my computers.)

Sunday, June 24, 2012


They're tearing out the windows and part of the outer walls of our building (Science Hall).  When we were first told about this we were told that all the work could and would be done from the outside.  I am now hearing that they must get into and move tables and shelves and file cabinets in my office.  The restrooms have been closed for a week and I've seen very little done to them.  We'll see how much this interferes with research.  My summer class will end this week so I hope it will not feel an impact.

Tuesday, June 5, 2012

Experimental programming

A major portion of AI (and computer science in general) is experimental programming.  It's surprising then that there is no good monograph on the subject. (There is chapter 6, Towards a Discipline of Exploratory Programming, in Partridge's book Engineering Artificial Intelligence Software, Intellect, 1992.)  One could at least write a history of what's been done in the past.  This might suggest some paths forward.  Such a history might include:

experiments with various algorithms
specialized languages like:  LISP
                                             PROLOG    ---    and logics
                                            OPS 5/CLIPS   ---   rule based systems
                                            NIAL   ---   diagrammatic and spatial reasoning
parallel computing efforts
flowcharts  ---   UML
various architectures
search of various sorts
incremental software development

One can obviously experiment by:

changing architecture
changing algorithms
changing language used  (which language is best for which task? what features of each
language are important for what?)
adding pieces, functionality (incremental development)

The KADS methodology is one source of information about what architecture or algorithm to use for what task.

Friday, June 1, 2012

Just how portable is C++?

C++ is perhaps the most popular language for AI programming.  I find, however, that my Asa programs in C++ will compile and run with some C++ compilers but not with others. (At least not without some workarounds.) I understand that some of the libraries have been changed in the last couple years. Just how portable is C++?  (The code in my 14 May 2012 blog will run with the Dev-C++ compiler but not MS C++.)