This will be a teaching program meant to allow students to learn the conventions of naming organic molecules given a drawing of the molecule, and drawing molecules given a name. It will help the programmer to know a little bit about organic chemistry, but the program will be designed so that the user is the one inputting data, and the program only acts as an error-checking framework. This is what the user should experience: The user starts the program. The user is prompted to input “new lessons.?? This will take the form of an easy-to-use GUI where the user can “click in?? the shape of a new functional group. For example, after clicking in a certain arrangement of carbon, hydrogen, and oxygen, the user will then input that this is an aldehyde group, and that the proper ending for this group is “-al.?? This new rule will be stored. When the user is done adding new rules for the session, the program will start the quizzing process. The program could possibly give the above described aldehyde group with a hydrogen attached to the loose end. Based on all stored rules, the program will know that this molecule is called “methanal,?? and will check the user input against this answer. The user may have typed “formaldehyde,?? which is the common name of methanal, and at this point the student can click a button telling the program to accept both “formaldehyde?? and “methanal?? as valid answers for this molecule in the future. The user may also be given the opposite type of problem; the user will be asked to draw methanal. Using the same click-in GUI as before, the user will click in the structure described above. The program will check for correctness. The program will continue to randomly generate molecules using all the rules previously stored in it. The program will repeat molecules that the user originally had difficulty with.
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
Windows XP, as many other versions of Windows as is reasonable, as well as Mac OSes.