I have a few questions about writing my master thesis on computer science. The topic is "Automated generation of planar geometry olympiad problems". In short, it's about a piece of software that can generate geometry problems that could be proposed to International Mathematical Olympiad.
My main issue is regarding what I should or should not write. I have a GitHub page where all the code is and I intent to gradually add detailed documentation about the code and how to run it. This brings one question:
(1) To what extent should I describe this implementation also in the thesis? For example: Should I mention what programming language I used? Should I have any actual code in there?
Then there is this thing: I use analytic geometry to represent and find geometry problems. It is somewhat well-known, in fact, used heavily in computer graphics etc. I needed to figure out a few things that aren't generally common, for example finding the coordinates of the circumcenter of a triangle. I'm not sure how to write about it. My main concern is that it would take up lots of pages and from some point of view it's an implementation thing.
(2) Should I describe analytic geometry, i.e. well-known things plus all potentially interesting helper procedures?
Then there is yet another implementation detail. I verify theorems numerically. Therefore, theoretically speaking, my algorithms are probabilistic, but the real probability of them being correct is very close to 100% due to the fact that 64-bit floating numbers are precise enough for my purposes (though I can't formally prove this statement). To have the ability to compare numbers and correctly implement
HashCode of my analytic objects I use a custom IEEE 757 bit-level rounding algorithm.
(3) Should I describe this custom implementation-detail algorithm in the thesis?
There is a lot to talk about, because the main algorithm is split into a few other algorithms (Generator, Theorem Finder, Theorem Prover, Theorem Ranker, Theorem Simplifier,...), so if I choose to write everything I would end up having 100+ pages.
I also have a helper utility program that generates MetaPost figures of the generated problems, to get an actual visual result. It is not part of the main algorithm. But there are some interesting details, for example, it is able to automatically position labels so that the figure looks pretty. Again, the question is the same:
(4) How should I describe this drawing program? Should I describe the implementation of this drawing utility?
(5) Who am I writing this for? Should a thesis be just a review of what has been done without going too much into detail? Or should it be the best detailed description of the work?