PhD Dissertation

As many of my lab mates are graduating, I decided to share my files here with them.

Since all of my papers were written using MS Word, I wrote my dissertation with MS Word as well. I had to learn some tricks to do the required formatting. To save your time, I am sharing my source file so you can use them for formatting*.

Dissertation in PDF

Dissertation in DOCX*

Dissertation Presentation in PPT

Here are some comments about the final things that needs to be done:

  • Prepare a co-author letter and collect signature from all co-authors. The sample letter is in the formatting booklet. Take it to the exam and collect the signatures. It makes life much easier.
  • The main content of dissertation is you papers. But you need to add introduction section and conclusion sections. The conclusions should have some future works as well.
  • Use animations in your presentation. Specially for describing the algorithms. It really helped me to improve my presentation (slides 48-65). You can also look at my qualifying exam slides for another example of animations for algorithms (slides 19-24, slides 25-29, and slides 31 and 32).
  • Use some graphical slides for overview of dissertation in the beginning of the presentation.
  • Re-use that overview slide when transitioning from chapter to chapter and emphasize on the new subject. You can see how I did it in my dissertation slides.
  • You don't need to repeat your whole research in the final exam. The whole presentation should be 45-50 minutes. About 10-15 minutes should be the summary of what you did up to your qualifying exam and the rest should be what you did after your qualifying exam!

Good luck 🙂


*The source file can only be used as formatting guide, any other uses such as copying or reformatting for printing is prohibited.

Posted in PhD

Old Black Computer Magazine

The logo of old Persian Computer Magazine

The logo of Farsi Computer Magazine in Iran - Courtesy of

This is the logo of my beloved computer magazine, written in Farsi, that I used to read when I was in middle school. Back then I only knew some BASIC programming that I learned from my Commodore 64 manual.

This magazine had sections full of short codes that do funny stuff and mostly written in C and Pascal. Every so often I could find some BASIC codes there and used to try them.

The fact that I had no idea about Pascal programming and I didn't speak English either and reading Pascal code was absolutely meaningless to me! did not stop  12 years old me from just typing those codes into an editor and hoping for a miracle to happen and codes would run! But whenever I tried the amazing codes that were supposed to draw a rainbow or fireworks, they all failed. I were almost sure the codes in the magazine are wrong and they have typos in their publications. In the end, I gave up on the magazine and stopped buying them!

A couple of years later, I realized why the magazine codes would not work on my old Intel 286 IBM PC compatible machine. I had a CGA monitor/graphics and those codes at least required EGA monitor/graphics. When I realized that my monitor is capable of showing only 4 colors, I felt betrayed and I cried for weeks until my parents bought me an Intel 486 PC with VGA graphics! I could even run Windows 3.1 on it!


Quality of CGA image from Wikipedia

Robot Move Question: Facebook Interview

The question that I found here says:

A robot has to move in a grid which is in the form of a matrix. It can go to
1.) A(i,j)--> A(i+j,j) (Down)
2.) A(i,j)--> A(i,i+j) (Right)

Given it starts at (1,1) and it has to go to A(m,n), find the minimum number of STEPS it has to take to get to (m,n) and write
public static int minSteps(int m,int n)

For instance to go from (1,1) to m=3 and n=2 it has to take (1, 1) -> (1, 2) -> (3, 2) i.e. 2 steps


The shortest steps comes when moving diagonally meaning right-down-right-down... or down-right-down-right... . However, depending on m and n best answer may need to start from right or down. the easiest way is to do both and find the minimum. Here us my Java method:

    public static int minSteps(int m, int n){
        int x,y;
        int stepsDownFirst=0;
        boolean downDirection=true;
        for(x=1, y=1;x<m || y<n;stepsDownFirst++){
        int stepsRightFirst=0;
        for(x=1, y=1;x<m || y<n;stepsRightFirst++){
            return stepsDownFirst;
            return stepsRightFirst;

After some thoughts I realized I can make it simpler so I wrote this short C++ code:

int minSteps(int m, int n){
    int x,y;
    bool downDirection=true;
    int steps=0;
        if (downDirection)
    return steps;

PhD : Permanent Head Damage

The first time I learned about PhD, I was about 8-9 years old. I had no idea about English Language and asked some one, who I thought has a PhD, about its meaning. He told me it means "permanent head damage". Well, I thought he is not taking me serious and is just making fun of my curiosity as a kid!

Years passed and I learned he was not able to finish his PhD. Now that I am in this path my self, I can see how hard it can be. I give people the right to leave it and get back to their life. Because if PhD is not a pile of [shit] higher and deeper, it definitely brings you a permanent head damage.