algorithmic self