Simple Cipher confusing/missing instructions

I don’t think this is unique to the Java track, but the instructions and tests for Simple Cipher are not great.

  • The instructions have Step 1 to do a Caesar Cipher, and Step 2 to do substitution with a key. However the tests want you to do this with a single class, so you have to create a hacky class that does both. You have to implement keys for Step 2, in order to complete Step 1. This is not obvious from the instructions.

  • The tests for Step 1 are very weak. I did placeholders for encode and decode that just returned their inputs. It passed. All you need to do to pass Step one is have getKey() return a long enough string of 'a’s. So you don’t have to do anything that it asks you to, and you do have to do something that it doesn’t.

Give that there is already a rotational-cipher exercise, I think it would make sense to drop Step 1 from this exercise.

I’m not sure about the java track and its test.
But for this exercise, I think step 1 is just pointing out the historical fact of the ceaser cipher as foundation, and the combination of step 1 and 2 is the goal of the exercise.
It is basically read as “this is ceaser cipher but instead of the usual fixed key, the key depend on a different string”

You might think it is not needed because you already saw the rotational cipher exercise, but what if somebody who didn’t see or solve that yet?

I do understand your gripe though, back when I did python exercise I encounter a couple of those as well, you solve one “harder” exercise and then realize there is one “easier” that basically was similar that eluded from you before.

Personally I think it would be great if some of the exercises that are that closely related are part of a chain, and you are unlocking later exercise after solving the first and continue using the first one’s code, a good candidate of this is the resistor exercises. Maybe in the future.

And also the instructions have a Step 3, but there are no tests for this.

In that case the introduction could be separated from the instructions. And all the tests could be moved into a single test class.