Arduino is an open source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, students, engineers, teachers and anyone interested in creating interactive objects or environments. Software is written in Arduino programming language, which is similar to C language. The software used to program Arduino is Arduino IDE, which can be downloaded free of cost from www.arduino.cc/en/Main/Software. Select the correct board and COM port before uploading the code. This software makes it easy to write code and upload it to the board. It runs on Windows, Mac OS X and Linux.
ATmega328 on Arduino comes with a boot loader that allows you to upload a new code to it without the use of an external hardware programmer. It communicates using STK500 protocol. You can also bypass the boot loader and program the microcontroller through the in-circuit serial programming (ICSP) header, but bootloader programming is quicker and easier. Source-code-related files pertaining to the various projects are available at http://efy.efymag.com/sourceissueif.asp?id=12, and will help you copy the codes to your PC directly without typing them.
The only prerequisite is that you should have basic knowledge of electronics, including digital electronics with some basic programming language, to understand working of the projects and Arduino boards described here.