Computer course theory