One could, of course, devise tessellations by directly colouring a single primitive cell to respect the symmetry constraints of a particular group and then reproduce this cell automatically as many times as required to obtain a repeating pattern with the desired symmetry. It is possible to obtain software to do this - and also "plug-in" modules to systems such as Photoshop and Gimp. Frank Farris provides a different route which in my view often tends to lead more pleasing results. A particular advantage of this approach is that it is easy to break the strict symmetry with straightforward modifications of the functions. I find that this often produces more artistically interesting effects.
I implement some of Dr Farris's methods in my Sketchbooks dealing with Wallpaper Symmetries which are employed to transform original photographic images into patterns displaying the desired amount of symmetry.
The process described by Frank Farris involves constructing a mathematical function (or map) that relates every pixel in the generated image to a pixel in the original image. The mapping is not, however, one-to-one: multiple points in the final image map back to the same pixel in the source image. We deliberately construct the mapping function so that the multiple mapped-to pixels have locations which display the desired amount of symmetry.
Following the logic of this approach requires learning some group theory. The final computational algorithms, however, tend to appear rather less complex since they amount to carefully choosing the coefficients that multiply terms in a summed series of sines and cosines, and you are not aware of the alternative choices that might have been made to give different symmetries. In practice, I have tended to restrict my experiments to rather few of the available wallpaper groups, partly though lack of time. (The code that finally emerges is generally relatively simple, but setting it up to achieve a particular mathematical expression of symmetry is delicate. One has to start from a good understanding of the mathematics.) However, I am also specifically interested in starting with transformed images showing more obvious symmetries (e.g. p3, p3m, p4, p4m and so on) and then deliberately breaking these symmetries in ad-hoc ways (for example varying the transformation parameters as a function of distance from the central point of the image).
The mathematical theory of symmetries (generally called Group Theory) has many applications beyond designing tiled floors, including solving the Rubik Cube, explaining how chemical molecules interact with electromagnetic waves, and guiding explorations of the fundamental structure of matter. Group theory is one of the main foundations of advanced mathematics, and it all starts from wondering "How may ways to tile a floor?"
Most patterns are patterns because they show various forms of symmetry, and we can invoke symmetry in the generation of new visual constructs (as they do in Islamic art). While many artists develop a good intuitive understanding of symmetry there are also times when it can be useful to have an more explicit understanding.