A term describing a program whose input and output are interleaved, like a conversation, allowing the user's input to depend on earlier output from the same run.
The interaction with the user is usually conducted through either a text-based interface or a graphical user interface. Other kinds of interface, e.g. using speech recognition and/or speech synthesis, are also possible.
This is in contrast to batch processing where all the input is prepared before the program runs and so cannot depend on the program's output.