An Automated Programming and Grading System