When I was working as a professional programmer I was asked to do that many times. It really takes experience to estimate accurately but if you break down the task into as many small pieces as you can and then estimate each one separately the total shouldn't be too far off. BTW, it's better to overestimate the time then to underestimate.