Compare the QuickSort algorithm written in three different languages of your choice; one prescriptive, one descriptive, and one functional. For example you might choose C or C# or any other prescriptive language with which you are familiar, Prolog or Concurrent Prolog as your descriptive language, and perhaps the famous Haskell “two-liner” as your functional program.
Useful reference listing QuickSort programs in more than 60 languages, so you do not need to write any programs:
[login to view URL]
Compare them on criteria from 1 to 10 (highest) for the following characteristics, but do define these characteristics as you understand them:
· Ease or simplicity of coding
· Time of coding
· Ease of debugging
· Clarity or readability
· Robustness, will it always work, or explain why not, regardless of data or user problems?
· Document-ability, e.g., can you document it well enough so that the rest of your life you will never be called back to explain or modify it?
Efficiency based on your estimate of runtime for, say 100,000, 20 character records
Conclude with a practical analysis of which program you would recommend using, assuming that all three languages you chose are available and supported in your employment IT environment.
2. Find or write a OuickSort program written in C and parallelize it using OpenMP pragmas. Submit the original program and your OpenMP modifications along with your rationale, for grading. If also (not required) you actually run both programs and compare their times to sort the same list of random numbers you generate, that will generate a guaranteed A grade in this course. If you choose this project and choose to run your code you may substitute this problem for the forth program that Kyle will assign.
3. Submit your answers to problems 6.1 through 6.4 on pp. 341, 2 as a project essay using the OpenMP option. For those who like thought problems.
4. Submit your answers to problems 6.5 through 6.7 on pages 342, 3 as a project using the OpenMP option. Also for those who prefer thought problems.
5. Alternatively, if you have a problem from your current job or past experience you would like to discuss as a parallel processing application using any of the textbook’s methods, please submit an email abstract for my approval and enthusiastic encouragement.