Error-driven learning tutorial