Buffer Overflow Intro. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle.  http://sfsecurity.pr.erau.edu
Glossary

Compiled – A compiler takes the source code a programmer has written and turns it into code text that a computer can easily execute.  Code text is a sequence of instructions for the computer stored in memory.
Instruction – An instruction tells the computer what to do, but it is very low-level.  Unlike source code, it works at the microprocessor level telling the computer what elementary steps to take to execute the program.
Source code – this is the code that the programmer writes in a high-level language like Java, BASIC, or, in this case, C.  A high-level language is one that humans can easily read and understand.
Execute – To execute the program means to “run” it.  The two terms can be used interchangeably.  To execute an instruction means to do it.  It is the process of seeing what the instruction is, and then doing it.
Jump – A jump occurs when the computer is told to start executing instructions somewhere else besides the next instruction after the current one being executed.
Program counter – The instructions are stored as a sequence of numbers in the computer just like anything else.  The computer usually executes one instruction after another unless it is told to jump somewhere else.  The program counter keeps track of what instruction in memory is being executed at any given time.
Subroutine – Good programmers break they’re program up into smaller steps called subroutines.  A program to make coffee could be broken up into preparing the filter, putting water in the coffee maker, and turning the coffee maker on.  Each of these subroutines can be broken down into more subroutines.  Putting water in the coffee maker could be broken down into get a cup, turn on the sink, put the cup under the sink, turn off the sink when the cup is full…