Need Help with COM2001 Advanced Programming Techniques Assignment in Breaking the Enigma Code in Haskell Programming language
Question - University of Sheffield
Department of Computer Science
COM2001: Advanced Programming Techniques
Assessment 2013-14
Assignment 3: Breaking the Enigma Code
This assignment counts as 25% of the assessment for COM2001.
It’s based on the ‘Bombe Case Study’ which you have separate notes for.
What you must do
1. Write Haskell code to implement the Bombe simulation following the design explained in
the case study, assuming the simplifications made there: ‘ that the choice of rotors and
reflector is always the same: referring to the assignment 2 spec the left rotor will be RI, the
middle rotor RII and the right rotor RIII. The reflector is the standard one (which was called
reflector B).’
You may m
...Read More
ake changes to the design, but be sure to explain them if you do.
You may make use of the code you submitted for assignments 1 and 2, or you may use mine
(which is on MOLE).
2. Show that your code works for the examples given in ‘BombeTesting.hs’ on the MOLE site.
3. 1 and 2 above count for 70% of the credit for this assignment. The remaining credit is
reserved for extensions to the simulation. Here are some suggestions: you don’t have to
implement them all and you are free to do your own thing provided you explain what it is..
i. A crib works best if you start with the longest plain->cipher->plain … chain. Can you find
this chain automatically?
ii. A given Crib contains many chains. Amend the code so that they are all used, rather
than just the longest.
iii. How long does a chain need to be before the Stecker based on it produces a correct
decript?
iv. Remove the simplifications made in (1).
Marking Scheme
70% for 1 & 2 above. Of this, 60% for the code, 20% for documentation, 20% for testing. It’s too
complicated to divide the marks between individual functions, but the breakdown according to the program
structure will be
ï‚· top level: search all offsets (breakEnigma, breakEA) 15%
ï‚· search for a Stecker given the offsets ( findStecker) 15%
ï‚· follow implications from an initial Stecker (chaseImplications, followConnections, followConnection)
50%
ï‚· Bottom level: findConnections and steckerAdd 20%
30% for your extensions (3 above).
Testing
Some tests and messages to decode are given in BombeTesting.hs on MOLE. You may want to try more.
Decrypting the final test gives you entry to the Christmas treasure trail (no extra marks but a prize for the
first to complete).
What to hand in
a) Your commented code, as one or more .hs files ready to run. Give your name in an initial comment.
Make sure you include everything you are importing, e.g. from assignment 1 and assignment 2,
b) Test results for the functions you’ve written (cut and paste from the console window),
c) If you’ve attempted (3) above, an explanation of what you’ve done.
How to hand in
Hand in by MOLE.
DEADLINE: Friday 20th December (Week 12) ...Read Less
Solution Preview - No Solution Preview Available