Grading Exams On A Microcomputer
Kenneth J. Freese
East Meadow, NY
The Microsoft version of this program contains REM statements showing the necessary changes for Apple, CBM/PET where specific commands are machine specific. Program 2 is for the Atari.
There is certainly nothing new about grading a short answer test with a computer. With the first programs I wrote for this purpose, however, I was frustrated by two problems. I found the usual serial input prompt method for entries much too slow and was unable to look back at previous entries to keep my place and check for accuracy. I developed this program primarily to correct these shortcomings. It is designed for exams with one-character answers. Multiple choice and true-false questions are ideally suited since all input (i.e. A B C D E, T F) can be done with the left hand when touch typing and full advantage of the speed of the program can be taken.
First an overview. The correct answers are placed in the string KEYANS$. Each student's answers are then entered into the string STUDANS$ and compared to KEYANS$ one element at a time. Errors for each student are then displayed and a score is generated. A tally is kept of the number of students getting each question wrong and then displayed after all exams are graded. A"#" is entered to end the answer sequence and, if you get things all fouled up and find yourself at the wrong place on an answer sheet, entering a "&" allows you to start that entry sequence all over again.
The following explains the important routines in the order they are implemented.
LINE 100–Opens the Keyboard (K:) for an input operation.
SUBROUTINE 3000 - Formats the screen.
SUBROUTINE 4000 and LINE 220 - Reads the keyboard without requiring depressing the RETURN key (see COMPUTE! September-October, 1980, #6 "Reading the ATARI Keyboard on the Fly") and creates the answer string ANS$.
SUBROUTINE 5000 - Places the answers entered onto the screen in the correct position.
LINES 340-380–Allows correction of erroneous entries one at a time.
LINES 390-580-Creates STUDANS$ and allows for corrections just as done for KEYANS$ above.
LINES 630-680–Compares STUDANS$ to KEYANS$ one element at a time.
SUBROUTINE 7000–Called each time an incorrect answer is encountered. Prints the student's incorrect answer and the correct answer on the screen.
LINE 640–When the total answer display will cause scrolling of the screen SUBROUTINE 8000 is called and allows the user to view blocks of data on command.
LINE 690–Calculates and displays student's grade.
SUBROUTINE 6000 - Utilized when "END" is entered for student's name. Displays on the screen the number of students getting each question wrong and prevents scrolling of the screen as above.