Wireless Sensor Networks (WSN) provides an effective means to monitor physical environments. The computing nodes in a WSN are resource constrained devices whose resources need to be used sparingly. The main requirement of a WSN is to operate unattended in remote locations for extended periods of time. Physical conditions, environmental conditions, upgrades, user preferences, and errors within the code can all contribute to the need to modify currently running applications. Therefore, reprogramming of sensor nodes is required.