Nifty Assignments
Enigma Machine Simulator
Eric S. Roberts and Jed Rembold
In this assignment, students implement a simulator for the Enigma
encryption machine used by the Germans during World War II.
The project is organized into six
milestones,
each of which requires approximately 10-15 lines of code,
making it easily accessible to a CS2 audience familiar with
defining classes and standard dictionary and list structures.
What makes this project nifty?
- It works well in a CS2 course once students have covered classes,
lists, and dictionaries.
- The project decomposes nicely into small, easily understood
milestones.
- The project affords interesting extensions for students who are
progressing quickly.
- Students build a graphical application without having to learn a
complex package.
- The Enigma machine is an important part of the history of computing
and offers a dramatic way to introduce the life and work of Alan Turing.
- Implementations exist for both Python and Java.
- The web-based demos reveal none of the implementation details.
Resource links
- Project handout
[pdf]
- Additional background on the Enigma machine
[pdf]
- Starter files for the Python version
[zip]
- Starter files for the Java version
[zip]
- Demos for each milestone
[demo]