Navigation
A. Understanding Project 1
With the project due in about 2 weeks, it's a good idea to try to make progress as soon as you can.
Understanding the Spec
Here is a mix of questions to help you gauge your understanding of the spec. You may want to discuss them with a partner, like the person sitting next to you. For better understanding of the design/operation of an Enigma machine, after reading the spec, it may also help to look at the Wikipedia article or YouTube videos on the topic.
Assume we are using these components:
- Moving rotors I, II, III, with III in the rightmost position
- Non-moving rotor "Beta"
- Reflector "B"
- A plugboard
- In terms of the above components (there are 6 of them), what is the path that an electric signal would take when a user presses a key on the machine?
- In the simplified version of the rotors from the spec where we used the letters A,B,C and 4 rotors — Why does the position
AABC
rotate toAACA
? Why does the positionAACA
rotate toABAB
? Given this rotor descriptor in a configuration file:
VI MZM (AJQDVLEOZWIYTS) (CGMNHFUX) (BPRK)
- Does this rotor move? If so, where are the notches on this rotor?
- For a signal going from the left side of this rotor to its right side, what would this rotor convert the letter X to?
Given this settings line in an input file:
* B BETA III IV I JAVA (IS) (ME)
- What is the initial position of the 4th rotor?
- If we typed the letter E, in the first step of traversing the Enigma machine, what letter would it be converted to?
Understanding the Code
This section is mainly for if you plan to use the skeleton we have provided. Be sure to also read the last section titled "Advice" in the spec.
See if you can draw out the hierarchy of the classes and their subclasses in the skeleton. For each class in this hierarchy, it may help to think about and write out answers to the following questions:
- What features do I need to define in this class?
- For each of these features, should I write it out via overriding a superclass method, should I write it as a new method, or would it already have been inherited at this point?
- How would I test the correctness of the finished version of this class?
There is nothing to submit for this lab.