Automated Feedback in Undergraduate Computing Theory Courses