**PA Individual
Extra Credits (need to be submitted before midnight 08/29/14)**

Problem I (20 points for each substantially improved implementation; improvements of Scheme, ML, Haskell implementations count separately). Mark’s website contains programs with timing experiments done on textbook’s Scheme, ML, Haskell implementations of merge-sort. Submit an improved implementation or improved implementations of textbook’s merge-sort, together with the data demonstrating that the improvement/improvements was/were achieved.

Problem II (40 points). Implement
in Scheme, ML or Haskell the Fast Fourier Transform in two versions ([W] 2.5):
dyadic size ([W] p.53) and any size ([W] p.55). Verify correctness of your
implementations by comparing the results of your program with the results
obtained with FFT's of standard mathematical packages. Symbol [W] refers to the
book *Algorithms and Complexity* by Herbert Wilf:

http://www.math.upenn.edu/%7Ewilf/AlgoComp.pdf

Problem III (40 points). Implement CYK algorithm of figure 7 of lecture 11 in
any programming language of your choice. Submit your solution together with the
data demonstrating that your code works properly. The CYK algorithm is also
described on pages 290-291 (3^{rd} edition), 262-263 (2^{nd}
edition) of Michael Sipser’s book *Introduction to the Theory of Computation*
(copies of both editions are available in CLC).

Problem IV (40 points for each problem). Work out solutions of
the following SICP programming problems related to the SICP query language:
4.67, 4.75. Submit your solutions together with the data demonstrating that
your code works properly.

Submit your code following the submission rules for PA 1 – PA 3.