I scored the exam out of 35. The actual scores are 35 34 32 31 29x2 26 25 24x3 23x3 22x3 21 19x2 18x3 17x2 16x3 15x4 14x4 13x3 12x3 11x3 10 9x3 8x2. The mean is 18 and the median is 16. I will discuss the scores with the other two instructors on Friday 13 November or Monday 16 November, and then I'll say something more definite about the impact. Section 3 had similar scores. Don't panic yet.
To my surprise, you had a harder time with the higher-order/lambda questions than with recursion. I will look for a good time to review that material.
o
and (o)
are not at all the same
thing, so I didn't give credit for that sort of approximation. A few
people made the same mistake repeatedly, and I accumulated a partial
credit of about 1 point for 4 approximate answers. square
is not defined by Scheme or by Simply Scheme, so
``error'' is a correct answer for the 3rd item. I also gave credit if
you assumed that square
was defined, and calculated the
list (2 4)
.cond
with 4 branches, including the else
branch. The key to simplicity is to check for divisibility in the
order 400
, 100
, 4
. There are
shorter solutions, and they all got full credit, but the 4-branch
solution is the clearest, and the easiest to adjust if you use
leap-year?
in a larger program.accumulate
and every
, respectively. I only
gave partial credit for substantial progress toward the solutions with
accumulate
and every
. A lot of people gave
the simple solution:
for Question 4. I gave no credit for this. The point of the problem is an exercise in the use of(define (name-game wd) (se (wd 'b (bf wd)) (wd 'f (bf wd)) (wd 'm (bf wd))))
every
. You should recognize
that the collection of things to which you do the same thing is
(b f m)
, and look for a solution of the form
Aside from the requirement of the exam question, this is the right way to solve the problem. You would not be satisfied with the simple(define (name-game wd) (every (lambda (let) body) '(b f m))
name-game
function defined above, and you would want to
add the refinements of the real song: omit the first consonant when it
is already one of b
, f
, m
(so
mary
produces (bary fary ary)
), don't remove
initial vowels, remove all initial consonants, instead of
just one. You are much better off with the solution using
every
when you make such refinements.1
.