Would it reasonable to ask students to prove one or two properties of their solutions, for some of the simplest exercises? We would increase their difficulty rating at the same time.
Possible examples:
reverse-string
length A <= 1 implies reverse A = A
reverse (A ++ B) = (reverse B) ++ (reverse A)
difference-of-squares
difference 0 = 0
difference (n+1) = difference n + n (n+1)^2
hamming
(length A = length C and length B = length D) implies hamming (A ++ B) (C ++ D) = (hamming A C) + (hamming B D)
matching-brackets
matching-brackets A implies matching-brackets '(' A ')'
(matching-brackets A and matching-brackets B) implies matching-brackets (A ++ B)
Would it reasonable to ask students to prove one or two properties of their solutions, for some of the simplest exercises? We would increase their difficulty rating at the same time.
Possible examples:
reverse-string
length A <= 1 implies reverse A = A
reverse (A ++ B) = (reverse B) ++ (reverse A)
difference-of-squares
difference 0 = 0
difference (n+1) = difference n + n (n+1)^2
hamming
(length A = length C and length B = length D) implies hamming (A ++ B) (C ++ D) = (hamming A C) + (hamming B D)
matching-brackets
matching-brackets A implies matching-brackets '(' A ')'
(matching-brackets A and matching-brackets B) implies matching-brackets (A ++ B)