Writing a method using MIPS code
Isn't the program supposed to automatically increment the stack pointer after every instruction? 


No. You're confusing the stack pointer with the program counter. The PC is incremented after every instruction.


  I don't really know why the stack pointer is decremented by 1 word size


To make room on the stack for the local variable f.


  and then its value loaded into the f variable, if you look at the subtraction statement you will notice that the value of f is then overwritten by the result of the subtraction so what was the use? 


None. It's redundant. An optimization flag would probably have removed that.