second generation of programming languages; uses symbolic instruction codes
contains the instructions and variables that have specific names instead of being just binary numbers
gives instructions to cpu as fundamental operations written as alphabetic codes