In order to produce a good thesis, you must understand what good means in this context. Should you implement something? What about a formal proof? Is an extensive literature survey necessary? An empirical evaluation? If so, which type?
There is no universal answer to these questions. Each computer science area (and each research group in it) has its own expectations of what makes a good thesis. The importance of certain ingredients thus depend on the area the thesis originates from.
In this sense, theses are a lot like beer. While they look similar from the outside, their content varies substantially. In Germany, for example, the purity law limits ingredients to water, yeast, barley and hops. In other countries, it’s hapitual to use corn or rice instead of barley or add spices or juices to influence the flavor. Does that make the beer better or worse? This primarily depends on the origin (and thus expectations) of the beer lover making the call.
What is universal, however, is that beer lovers don’t like their expectations to be disappointed. If I order a Weizen and get a belgian cherry-flavoured Gueuze instead, I probably won’t receive it well—independent of the quality of the Gueuze.
For a thesis, the area of computer science sets the expectations. In software engineering, many theses include an implementation and an empirical evaluation. On the other hand, formal proofs are very uncommon. In contrast, in areas like temporal logic or theorem proving, expectations are reversed: proofs are common, empirical evaluations not so much.
Just as for beer, breaking with existing expectations does not increase chances of a good reception.
It is thus essential that you gain an understanding of the expectations and habits of the area you write your thesis in. Ask your supervisor for his expectations and skim through past theses he and his colleagues have supervised. If you have more than one supervisor (e.g. one in academia, one in industry), do this for each one. Furthermore, attend a meeting in which other students present their thesis results.
In addition to understanding expectations, you often pick up tools or techniques that are useful for your own work, too.
Sometimes, seeing other student’s final results when you just start can feel intimidating. When this happens, keep in mind that the other student would probably feel the same if roles were reversed; the result of a thesis is often larger than you thought when you started.