|
Codes are an important part of computing. Often the codes used at one level are completely different from those at the next level. For example, pages of raw HTML seldom resemble the page as rendered by a browser.
Of course, codes are not unique to computing. The human genetic code is a biological example. The telegraph introduced perhaps the first widely used binary representation of writing: the Morse code. Sending a telegram actually involved at least four levels of coding. First, the verbal message had to be written down (coded into letters). Then message was translated into upper case only, and all punctuation was replaced with special uppercase words. The result of that encoding step was then ready to undergo Morse coding. Finally, the abstract Morse coding itself was mechanically transformed into electrical impulses for transmission to a remote location. The first stage might be carried out by the end user or the operator; the second stage was a mental one, performed by the operator as he or she manually performed the third step. The last step was carried out mechanically by the telegraph equipment.
Sometimes people are better at coding tasks, and sometimes computers are. Sometimes the computer's role is simply to assist the human. For example, despite decades of research, translating text from one language to another is very difficult for a computer. For high-quality results, the best systems involve both a human operator and computer-based assistance. There are also some coding tasks so difficult that neither people nor computers can do them effectively.
In this project, we'll explore three environments in which a computer might assist a human in a coding task. You are invited to think of other applications and how they do or not fit this model of human-computer interaction.
Part 0 sample (Windows only). Try it out! Make yours at least as good. Deadline: Tuesday evening, 11:59pm, Feb. 12. Turn-in your work by using this electronic turn-in form. Hint: look at it now. Try using it once well before the deadline, in case of any problem.
See the Bulletin Board and the e-mail archive for hints and discussion. Sample solution code was distributed in lecture.
Part 1: Cryptographer's
Assistant
Original announcement:
Part 1Sample A, Sample B (Windows only). There will probably be other sample versions later. Unlike Part 0, this one is not quite self-explanatory. Also, your version doesn't need to do as many things as the sample. Try it out! See if you can get some ideas going. Due date Tuesday evening, Feb. 19. More information later.
In cryptography, the goal of coding is to disguise the message so that only its intended recipients can decode it. Crypto codes are very ancient. In recent years, cryptography has use advanced mathematics and the power of computers to create seemingly unbreakable codes.
In our project, we will use a long-known technique of "substitution". Some versions are called a "Caesar Cipher" because Julius Caesar is said to have used this technique. [Anybody want to find out the historical truth and report to us??]
The idea is that each symbol in the original text is replaced by another letter or symbol. The table of substitutions is called the "code book." The original, uncoded message is referred to as "clear text." For our project, we will translate all characters to upper case first, and do no substitution of non-letter symbols. That is, spaces, number, punctuation, etc. will be passed through without change. This would have been fine for Julius Caesar. In his day, words were generally written all in upper case, without punctuation, and frequentlywithoutspacesbetweenthewords.
Your task in Part 1 of the assignment is to build a VB application to help Caesar cipher.
Your solution should have the following for close to full credit:
have suitable controls, arranged for convenience and ease of use
have a valid code book:
must map each character to some other symbol, taking care not to reuse symbols
in the VB program, maintain the code book as a Collection, whose keys are the uppercase letters "A", "B", ... "Z"
show the full code book on the form
Allow Caesar to enter cleartext messages and have the Assistant correctly encode and display the results:
All letters, upper or lower case, should be translated according to the code book
All other symbols should be placed in the output message without change.
Allow Caesar to clear the input message and start over from scratch.
If you have those features, you will get close to full credit.
To get the last little bit of credit, you must also:
Provide a way for Caesar to change the code book, letter by letter.
To get SBR (Special Bragging Rights; no extra credit, just glory), you must also:
Provide a way to re-encode the message after the code book has been changed.
There is already one sample version available to play with. It meets all of the basic requirements except one: its code book is not valid, because each letter is mapped to itself.
There will be a form for electronic turn-in. Please do not use the Part 0 turn-in form. You are encouraged to turn in whatever you have completed by the deadline, even if everything is not working perfectly.
BACK TO TOP |
|