Here are your projects for the board exams in CA for the year 2014-15. Each project must be
- User-friendly (proper prompts and announcements to the user and good error-handling)
- Reader-friendly (documentation in code about what each class, method, data member is for or does)
- Generic (should apply to as many cases within the problem as possible, in other words assume the least)
- Object-Oriented (instead of making one long class, make many classes to properly hide data and keep things simple)
- It must be compiled as an app (albeit CUI-based) to run on any windows system. Different compiles may be needed for 32-bit and 64-bit systems.
You can team up in numbers up to 3 for each project, singles are also allowed. You get a week from this announcement to submit the source code and its compiled object code in a zip file (which includes any special libraries you may have created / used) as an email to me.
A. Spy Messenger - This app should be able to encode and decode messages using any of the methods given below. The app if used by the encoding spy should allow him to convert the message into a cryptic one using the method of his choice. Then he can pass the message by normal (not in the app) means to the other party. (say email / sms / ...) The decoding spy should be able to try different methods to decode the message back to its original form.
- Caesar Cipher - Take a sentence and shift each syllable by a certain number of positions in the alphabet to create the encoded message. i.e. if shift is to be done by +2, then A becomes C, B becomes D and Z becomes B. If the shift is a -1 then, A becomes Z, B becomes A and Z becomes Y. Spaces and other punctuation is to be left untouched.
- Null Cipher - Introduce a null letter (i.e. dummy letter) between each nth syllable as defined by the encoder. So "This is Nice" with a null "e" after every 2 letters becomes "Theise ise Niecee".
- Number Cipher - Each letter becomes a certain number as defined by the encoder. The sequence of numbers follows through the alphabet. So, if user specifies 56, A becomes 56, B becomes 57 and so on. To differentiate between alphabets, each alphabet is followed by a hyphen (-) and the punctuation marks are totally removed. (The decoder can interpret) Hence is user specifies 1, "Hello guys!" becomes "8-5-12-12-15-7-21-25-19"
B. Catch-Me-If-You-Can - This app is a small game of dice where both players are walking on a path after starting from the same point. Both throw dice in turn and move as many number of steps as the dice indicates. Naturally one player is ahead of the other. If the player A is behind player B and if player A covers the same number of total steps as B then player A wins. (A caught-up with B) If player B finishes the path (certain number of pre-defined steps, say 50) before A can catch up, then B wins. The game may get over within a few steps or go on for many as per the dice being thrown. Either player should get a chance to throw their dice, i.e. it gets thrown only when a player types in a command (say "throw"). After this play, the player gets a notice about the positions of both players and if any has won.
C. Number Systems Calculator - This app helps the user (who is apparently a CA student) to convert numbers between different number systems, i.e. Binary, Octal, Decimal and Hexadecimal. So the user enters the number, the system in which the number is and the system to which to convert to. The calculator then does the conversion and responds with the answer.