Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!ima!mirror!xanth!kent From: kent@xanth.UUCP Newsgroups: comp.edu Subject: Re: Automatic Grading of Student Programs Message-ID: <818@xanth.UUCP> Date: Sat, 11-Apr-87 00:07:35 EST Article-I.D.: xanth.818 Posted: Sat Apr 11 00:07:35 1987 Date-Received: Sun, 12-Apr-87 01:03:25 EST References: <1365@uvacs.CS.VIRGINIA.EDU> Reply-To: kent@xanth.UUCP (Kent Paul Dolan) Distribution: na Organization: Old Dominion University, Norfolk Va. Lines: 78 Keywords: Let the students do their own grading! Summary: another way to do it I won't begin to claim that this is the last word on the subject (as long as grades are competitive/pro-survival, there will be students who cheat). An instructor here, Mr. John Caywood (caywood@xanth.UUCP, xanth.cs.odu.edu, if anyone wants to approach him directly), has a very nice system for grading programming assignments. He made himself an expert in UNIX(tm) csh or sh scripts to make this work. First, his assignments are very explicit. The required results are an exact string of bytes (including newlines as appropriate) which the student program must send to stdout. Second, the student creates a directory, say CS471, under the student's home directory, in which the software source, executable, and documentation must reside, with appropriate permissions, and assigned names. Third, there are three versions of the assignment, corresponding, usually, to three modules which the student must write. For the C-grade version, he must complete the one which demonstrates a basic understanding of the assignment; for the B-grade version, he must do another module demonstrating a deeper understanding; for the A-grade version, he must write a third module demonstrating complete competence in the subject matter. For the easier versions, the instructor supplies the missing modules in object form. The student is given an example data set to work with, not the same as the one the instructor's grading program uses. Now the instructor provides a path to his grading script. The student executes, say, grade_C, which compiles (or assembles) and links and executes the student's code. If there are missing modules, the grading routine complains. If the output is wrong, a rather terse diagnostic is given. If all goes well, the grading program prints an even terser congratulations. The student is given some limited number of tries, say three, at each grade level, and the script records tries and the grades achieved in a protected file, and refuses tries after the third (say). The brilliant, brave, or foolhardy start with grade_A. Mere mortals start with grade_C and work their way up. Hardcopies of the assignments are also submitted, because part of the grade depends on proper internal comments and structure. John also gives very comprehensive tests, covering the same subject matter as the programming assignments, and no-one who hasn't made the assignment work for him/herself has a prayer of passing the exams. During office hours, students are free to consult the instructor between tries of each grading level, if they can't understand why their program didn't pass. Of course, there is also a rather draconian penalty for late assignments, so there isn't too much slack. Not only does this work quite well as a grading mechanism, but it is excellent as a teaching mechanism, because of the nearly immediate feedback of the results of programming work. Because students saw this as a fair and rational approach, there seemed to be little if any sharing of code, but, (and I think this is good) the more able students seemed to take their less able students under tutorship, and helped them work their way through the ideas they needed to solve their programming tasks, showed them debugging methods, and so on. Everyone succeeded to the best of their ability because of this fellowship feeling, promoted by the puzzle aspect of the assignment. I hope some of these ideas have been of use to you. When I finally become a professor, I hope to use them in my own teaching work. Enjoy! -- The Contradictor Member HUP (Happily Unemployed Programmers) // Also // A Back at ODU to learn how to program better (after 25 years!) \\ // Happy \// Amigan! UUCP : kent@xanth.UUCP or ...{sun,cbosgd,harvard}!xanth!kent CSNET : kent@odu.csnet ARPA : kent@xanth.cs.odu.edu Voice : (804) 587-7760 USnail: P.O. Box 1559, Norfolk, Va 23501-1559 Copyright 1987 Kent Paul Dolan. How about if we keep the human All Rights Reserved. Author grants race around long enough to see retransmission rights recursively only. a bit more of the universe?