Theory and algorithms