First, I thank God, the Gracious and the Merciful, for His countless blessings.I am truly honored and fortunate to have been advised by Prof. Ian D. Marsland. This thesis would not have been possible without his guidance and support. He has been a constant source of inspiration, knowledge, and creativity. I feel I am one of the few lucky persons whose supervisor is a guide and teacher put together. His doors were always open for discussions which range from coding theory to programming tactics. I would also like to acknowledge his efforts to improve my writing skills which were non-existent before. For all the above and many other reasons I would like to express my deepest gratitude and appreciation to him.