the instructions the programmer has written in high-level language
the human-readable version of a program created in a high-level language by a programmer
non volatile storage which is stored electronically which can be erased and reprogrammed at any time. it is a type of eeprom but on a larger faster scale