Guidelines for writing a diploma, master or PhD thesis
In this article I will try to briefly explain how to organize the contents of your thesis, mainly the outline what should be each chapter (or section) about. The guidelines in this article are mainly relevant to Computer Science, Computer Engineering, Computer Architecture subjects but I guess they can apply for other engineering (such as Electrical Engineering, Mechanical Engineering) and science disciplines.
The structure of you thesis is good to follow the following structure:
You should be very careful choosing a title for your thesis. It should exactly describe what your thesis is about. You should avoid long title because it is difficult to remember. Also the title shouldn’t be too short and mention just about a general problem or a field. Example title might be “Dynamic Thread Scheduling in Heterogeneous Multi Processors” or “Static Analysis for Unprotected Concurrent Memory Accesses” or “Detecting and Executing Parallel Code in GPUs”.
Write to whom you dedicate you thesis if any. For example “I would like to dedicate this thesis to my mother and father…”
It’s good to acknowledge the people who helped or participated in direct or indirect way to your thesis. Here is the place to thank to your supervisor and colleagues.
Abstract is very important part of the thesis. It will be most read by people and should be written with a great care. The abstract should mention:
· About the problem you want to solve
· about your solution – how you solve the problem
· highlights about how good is your solution (e.g. achieves 70% better performance) referring to the results you obtained in your experiments (e.g. achieves 70% better performance).
· possible impacts of your work into the field (e.g. “The proposed solution can be used to offload the CPU by executing data parallel computation intensive code on GPUs and thus obtaining additional speedup for no cost”).
5. Table of Consents
6. Table of Figures
7. Table of Tables
8. Table of Abbreviations
Put a table of the abbreviations you used throughout the text.
This section should contain a little about everything. Introduction should be an overview of the contents of your thesis. The introduction should contain:
· Information/introduction about the topic of your research (e.g. what you will talk about in your thesis – Compilers, CPUs, optimizations etc.)
· The practical and theoretical value of the topic (how and why this topic is important)
· The motivation for your thesis (State with at least one sentence the problem you attack in your research work, why did you choose this problem and how it is interesting. State with at least one sentence your solution for the problem).
· If you are basing your work on currently existing work, mention it here.
· Mention the limitations of your solution (design and implementation – e.g. applies for real time systems, has error factor 25%)
· Include information about your key results – e.g. we improve the performance with 70% in the general keys.
· Finish the chapter with an overview about the contents of your thesis.
10. Motivation (or Problem Definition and Proposed Solution)
In this chapter you have to concisely explain the problem that you want to solve and the goal of your solution. This part should contain:
· Detailed analysis of the problem and its limitations (e.g. what is the bottleneck and difficulties).
· Your research methods – how did you identify these problems (e.g. tools used)?
· You should clearly state and explain your goal and objectives. You should provide analytical study (mathematical model) of your solution (What is the upper and lower bound of your performance or improvements). You should also mention about the qualitative benefit of your solution such as easy programming etc..
If necessary you may divide this chapter in sections and subsections.
11. State of the Art (or Related Work or Literature Review)
In this section you should present the theoretical basis of your work and overview of the existing solutions. When discussing on the exiting solutions you should relate and qualitatively compare them with yours. This chapter should contain:
· The theory and concepts of your work. For example, if you work on compiler you can mention about how compiler works without getting much into detail.
· Existing state of the art solution. For example, if you implement an optimization pass, you should mention about existing optimization passes that are relevant with yours. You should emphasize the commons and differences with your solution and with the existing ones.
You may divide this chapter in sections (e.g. each for the different exiting solution).
12. Background overview (optional)
If your work builds on top of an existing one, this is the place to describe the existing work in more detail, pointing out the parts that you extend or improve and why you extend or improve these parts.
13. Design and Implementation
You can divide this chapter in two sections: Design and Implementation.
a. Design – in design section you should describe your approach to solve the problem. The high level design of your solution and the modules, data structures and algorithms that you use.
b. Implementation – in implementation section you should mention the tools that you use to implement, the target environment (e.g. linux, windows). Limitations (e.g. buffer sizes, connections number).
If necessary you can add additional sections such as Discussion to discuss or emphasize on the interesting design points.
14. Experimental Results and Analysis
This chapter is better to be divided in the following sections:
a. Experimental Methodology – in this section you should describe the environment where you did the experiments, tools you used (compilers, libraries, profilers, simulators) and benchmarks that you used. Here you should tell what is your evaluation criteria (e.g. speedup) and metrics (e.g. throughput). Anything important that was made to conduct the experiments should be here (e.g. preparing traces for reproducing deterministic executions). If your experimental methodology has limitations you should mention them here (e.g. when using simulator you used small data input sets).
b. Experimental Results and Analysis – in this section you should show the quantitative results – charts and tables. Analyze the results by explaining and highlighting what is important on them in terms of your goals and what is bad. You should explain the strange results too.
15. Additional Discussion (optional)
If you experienced technical problems conducting your research and these are important to be known you may dedicate a separate chapter for them. You can organize this chapter in sections, one for each problem. Problems may be relevant to changing your tools (e.g. profiler was crashing and your workaround, compiler was producing wrong binary and your workaround etc.) Also, in this section you can discuss an aspect from your solution that is very important.
This chapter should conclude on your contribution. It should highlight the key results from the research work. In this section you should avoid mentioning new terms and statements not discussed throughout the main text. Also general aspects of the research work shouldn’t be repeated here. Conclusion shouldn’t be the abstract written in past tense. The conclusion should derive the important facts out of your work and results that you obtained.
17. Future Work
What left unfinished from your work? What are you future plans to develop better your work?
Put a list of references.
At the end of your thesis you can attach resources such as source code (or something like ASCII code table) that would improve the completeness of your thesis.
Copyright © 2008 Ferad Zyulkyarov. All rights reserved.