A bug is an error in a computer program or hardware. While usually the result of programmer error or oversight, bugs can also be introduced into a program through compiler error, incorrect assumptions about hardware or software interfaces, or can be intentionally coded into software to create obfuscated interfaces or back doors. While bugs often cause software to crash or produce unexpected results, certain types of software bugs can be exploited to gain unauthorized access to otherwise secure computer systems.