This thesis presents approaches to computationally creative natural language generation focusing on theoretical foundations, practical solutions and evaluation. I defend that a theoretical definition is crucial for computational creativity and that the practical solution must closely follow the theoretical definition. Finally, evaluation must be based on the underlying theory and what was actually modelled in the practical solution. A theoretical void in the existing theoretical work on computational creativity is identified. The existing theories do not explicitly take into account the communicative nature of natural language. Therefore, a new theoretical framework is elaborated that identifies how computational creativity can take place in a setting that has a clear communicative goal. This introduces a communicative-creative trade off that sets limits to creativity in such a communicative context. My framework divides creativity in three categories: message creativity, contextual creativity and communicative creativity. Any computationally creative NLG approach not taking communicativity into account is called mere surface generation.I propose a novel master-apprentice approach for creative language generation. The approach consists of a genetic algorithm, the fitness functions of which correspond to different parameters defined as important for the creative task in question from a theoretical perspective. The output of the genetic algorithm together with possible human authored data are used to train the apprentice, which is a sequence-to-sequence neural network model. The role of the apprentice in the system is to approximate creative autonomy.Evaluation is approached from three different perspectives in this work: ad-hoc and abstract, theory-based and abstract, and theory-based and concrete. The first perspective is the most common one in the current literature and its shortcomings are demonstrated and discussed. This starts a gradual shift towards more meaningful evaluation by first using proper theories to define the task being modelled and finally reducing the room for subjective interpretation by suggesting the use of concrete evaluation questions.