Nowadays, using PCG gains more and more importance, and PCG plays an increasingly important role in various areas. Particularly in game design and development where PCG have made a qualitative leap forward, especially in recent years. In fact, PCG is a very broad discipline. Investigating of this matter is so interesting, and satisfaction is guaranteed. This thesis mainly reviews the primary techniques, approaches and algorithms that are usually used in PCG. Most of the studied approaches and techniques are considered state-of-the-art. This thesis goes beyond the classical way of demonstrating how PCG techniques works unlike any traditional research about this subject. The primary focus is on the practical side rather than purely theoretical matters. To experience how PCG works in action, over 20 different techniques will be demonstrated, implemented in code line by line and tested. After running each algorithm, the results will be discussed and a comparison with other techniques will be done if that makes sense. At the end of this thesis, the strengths and the weaknesses of each technique will be highlighted. At the end of this thesis, an infinite terrain will be implemented as a practical part of PCG.