a low-level computer programming language that uses simple commands and is translated into machine language by an assembler.
programming language that: - must be translated to machine language by a program called an assembler - is machine dependent
process whereby appropriate alternatives are weighed and one is ultimately selected