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.