Most computer programs presently being executed are actually objects produced by compilers of high level languages. Therefore the ``quality`` of the object code produced by compilers has been studied extensively. This quality is usually stated in terms of execution time and memory requirements. In this thesis, a compiler model with an emphasis to code optimization phase and various important optimization algorithms are studied. And a software, CODE-IMPROVER, has been designed as a means of experimentally testing effectiveness of various algorithms. The CODE-IMPOVER depends in additon to the original high level language on the characteristics of an intermidiate language required. For this purpose, an intermidiate language called SIMPL-T has been studied.