Hey everyone! By self-adaptive programs, I mean the programs which are able to adapt to specific situations. For example they are able to repair them selves or are able to change their behavior according to user's needs. Obviously they need some sort of A.I modules like Intelligent Agents or so on.

My question is, what applications for these programs can you think of/exist? An obvious destructive (!) application could be a malicious program/virus which can change its strategy in attacking its victim based on some factors.

The reason for this question is that I want to do some research on this topic as a university project and I want to know about different stuff and uses that could come into mind! Any response is greatly appreciated! :-)

  • 2
    Skynet. It's only a matter of time... Feb 22, 2011 at 18:57
  • 1
    Research isn't done by things "coming into" your mind, just by happenstance. This is a good first step for you to gain some ideas but then be sure to follow up by finding, reading, and analyzing research papers in these fields. Also, since this is for a project, try to find similar projects in related areas.
    – aqua
    Feb 23, 2011 at 0:30
  • Espionage worms like Stuxnet.
    – Jim G.
    Feb 23, 2011 at 1:17
  • @aqua: I know what your mean. That was what I intended to do. I couldn't really find any practical application for what I mentioned. So I thought it would be better to brainstorm the subject.
    – Maghoumi
    Feb 23, 2011 at 5:20

6 Answers 6


I had a professor who did his PhD thesis on the opposite of what you suggested. Rather than virus/malware, he wrote software to counter viruses/malware. It could evolve/adapt to changing situations.

I think he envisioned an operating system that behaves like a human body (or other organism). Imagine a program that can distinguish harmful programs from nonharmful ones. The same way your body can detect foreign substances and kill them, but not kill it's own cells, an operating system could detect and kill a virus that hasn't even been identified.

I know he wasn't the first to work on this, but bio-inspired computing like this is kinda neat.

  • This one seems really nice! Never popped into my mind!
    – Maghoumi
    Feb 22, 2011 at 19:23


It's very important for robots to adapt their behavior if the environment changes to something that they aren't prepared to deal with.

  • 1
    +1 - there was a show on the Science Channel (forget which one) that showed an assembly line where they had robotic arms that would weld and then spot check their weld. If the weld wasn't clean, they would go back and fix it. Pretty cool stuff!
    – Jetti
    Feb 22, 2011 at 19:21

There is a whole sub-field of AI called Machine Learning, which deals with this kind of thing. Its applications are becoming ubiquitous: email spam filters that learn and get better over time, photo management programs like Picasa, which learns to recognize the faces of your family members, Netflix, which learns your movie preferences, Amazon, which learns your shopping preferences, etc., etc., etc.

Being "adaptive" for a program boils down to collecting data over time and looking for patterns.

  • As far as I know, machine learning is one of the applications of neural networks. Am I right?
    – Maghoumi
    Feb 22, 2011 at 19:25
  • 3
    @M2X: Neural networks just one algorithm for machine learning out of a whole long list. Other types include Bayesian Networks, Naive Bayesian models, and support vector machines. (And there are many more.)
    – Ken Bloom
    Feb 22, 2011 at 19:26
  • @M2X: Ken is right, you have it backwards. Neural networks are a family of machine learning algorithms. A neural network is typically used as a classifier, i. e. something that maps an input pattern to a label, like spam vs. non-spam. There are many other kinds of classification algorithms.
    – Dima
    Feb 22, 2011 at 19:40

I think a good example would be the Windows Start Menu, which keeps track of the most frequently or recently used applications and places them more prominently.

  • 1
    That could be as simple as a list of program names and counts how many times a program is accessed and puts them in order of most accesses to least. I think the OP was looking for something a little more complex. This might be a good example for 1st or 2nd year... Feb 22, 2011 at 19:15
  • @FrustratedWithFormsDesigner has a point. Why does it have to be simple? . A program openned twice in the last hour should be on the list before one opened a hundred times but not in the last day. An application frequently used the first of the month could show up around that time until you use it. There are dozens of patterns is could pickup on.
    – JeffO
    Mar 11, 2011 at 3:54

One interesting application and research topic is applying self-adaptive programs to Economics problems, such as the iterated prisoners dilemma problem.


I always thought an adaptive scheduler would be cool. OS task schedulers need to be tuned for general purpose use, but most servers spend their entire lifetime doing exactly one thing. Using adaptive algorithms, a server's OS could tune its scheduler's performance weights to best match the actual usage pattern of the server. Over time, the scheduler would become more efficient at running one set of processes at the expense of the general case.

Not the answer you're looking for? Browse other questions tagged or ask your own question.