BASICS
First you should require a compiler which converts your program into the hex code of the avr microcontroller. If you use C for programming Avr then you can use
WinAVR,
CodeVision AVR,
ImageCraft AVR,
BASCOM AVR for programming in BASIC,
AVRStuidio for programming in assembly.
But here we are talking about C programming. we will use WinaVR200X for all these programms compilation. you will get an IDE programmers notepad. Same code is valid for AVRGCC in Linux. Second requirement is a programmer which transfers the .hex code(machine code for AVR) into the chip. That is a Programmer which burns the chip. we will use BSD programmer for that.