The second major theme of the point system stems from the fact that these are lower division courses, where students do not have the experience required to accurately judge the difficulty or expected time requirements for an assignment. Hard deadlines mean that if the student misjudged, they are very likely to turn in what they have finished for partial credit, and not finish the remainder of the assignment. Our goal as educators is to educate, which means finishing ought to be more important than finishing by an arbitrary time. In an upper division course there needs to be more requirement on hard deadlines to mimic the behavior of the corporate world, but the goals in the lower-division sequence should be simply to teach the students a language and give them the time and experience necessary to become proficient in programming with that language. The students in CS 14 were generally fluent in C++, the skills they were sadly lacking were the general programming skills: abstraction, logical thought, program design, understanding the problem, debugging, reading compiler errors, etc. These are activities that are best learned when not frantically fighting against a deadline. Further, we want the students to learn to take care and pride in their work. Work that is done with an impending deadline is far less refined, and represents a much more superficial knowledge, and can in some case brew resentment against the instructors for forcing ``boring'' and ``pointless'' work on the students.
With these goals in mind, the following system was developed:
Over the course of the session, of the student course grade was
allocated to ``programming points.'' At the end of the quarter, a
total of 200 programming points were needed to earn the full
,
meaning that each point was in actuality one tenth of a percentage in
the final grade. Ten points were available for each lab assignment,
with average student scores of between eight and ten for each
assignment. The remaining 100 points for a perfect score were
available through assignments, which were usually worth 20 points
eachB.1.
Each assignment had a ``due date'', if the assignment was turned in on
that date then it was graded out of the full point value. For each
half-week (full week if this were a regular quarter course) early an
assignment was submitted, the points possible rose by
B.2 Similarly, for each half-week late, the
points possible decreased by
, as the assignments were generally
timed to coincide with expected knowledge and experience in the
course.
At the end of the course, when it was becoming more obvious that many of the students did not have the programming proficiency that was required to be successful, I also introduced a set of programming ``Exercises'' worth a small number of points (about six to eight). These covered some basic CS 10/12 material, writing simple functions and composing them together to perform more complicated tasks. These were intended as a remedial step, not a substitute for performing the actual course work, and thus the number of these points for each student was capped at 25.
The result of this allocation of points was that the average student
needed to attend all ten lectures and complete five assignments on time
for an 'A+' score in that of the course grade. Actual behavior
ranged wildly:
Students evaluations of the point system are unanimously in favor, they value the ability to choose what to work on and to not have their schedules entirely dictated to them. Even the appearance of some form of choice in their education appealed to them. There were some complaints about the relative closeness of due-dates, which comes mostly from having twice as many possible assignments as required assignments. Students mentioned that it takes a little bit of adjustment to allow a deadline to go by without beginning an assignment. This could perhaps be lessened by introducing the system under different terminologyB.4 in the future.
Overall, the course average was nearly 3.72 assignments successfully
completed per student -- submissions that were drastically incomplete
were sent back for resubmission. This is statistically more than were
completed during the Spring session of CS 14, which had four
assignments of which one was drastically too difficult for the
students, which caused the average student to fail that assignment
with less than credit. This is approximately equal the Spring
2002 offering of CS 14, which also had four assignments, although the
difficulty level of the Summer-Session assignments was a bit more
challengingB.5. In addition, the average student completed two
to three additional exercises to help shore up gaps in their
proficiency. The help that these really gave is probably negligible
-- the real benefit of the exercises was in improved student morale
and in my learning to write assignments of that type, which will
hopefully be appearing in CS 10 and 12 in future offerings.
Through the early and mid section of the course, until about the
mark, students were generally behind the expectation, and
showed little sign of overcoming that inertia. During the last two
weeks, and especially the last week, the lab was populated throughout
every day with CS 14 students working on one assignment or another.
The final days were a frenzy of activity, many students doubling their
number of completed assignments. On one hand I regret this, as it
means that those students were likely not putting in the time and
effort to really work as craftsmen/craftswomen on their projects. On
the other hand, I think it does demonstrate that a thirsty horse will
eventually drink.
Final analysis of the point system shows that the student average was
172 points, of which 18 were from exercises, for a CS 14 total of 154
points: a . The histogram distribution of the point totals
approximates a normal reasonably well (difficult to be truly normal
with only 22 measurements), requires no re-centering or rescaling, and
gives the average student a solid C grade. Combined with
of the
course grade going to Style for producing good, readable code, and
going to practical exams on which all non-cheaters should
average eigth to ten; the average lab total was a B-.
Considering the makeup of the CS 14 summer section, which likely has more low-end students retaking the course than any other section proportionally, I find it difficult to interpret these results as anything less than successful.
One further note about the point system is its possible effects on cheating. When deadlines are not strict, there is greater chance for social pressures to cause cheating. One instance during this summer found a boyfriend turning in an assignment on time and a girlfriend failing toward the end of the quarter and resubmitting a modified version of the same assignment. The other noted instances of cheating this session (three of them) were all students resubmitting sample solutions of code from the previous quarter. This is something that we will have to address as our curriculum moves toward less variability from offering to offering, but hopefully enough publicity for those that are burned by it will reduce the rate of such occurrences.