The end-user is a popular concept in software engineering, referring to an abstraction of the group of persons who will ultimately operate a piece of software (i.e. the expected user or target-user).
This abstraction is meant to be useful in the process of designing the user interface, and is therefore built on a relevant subset of any user's characteristics which may include which computer interfaces he/she is comfortable with (having used them before or because of their inherent simplicity), his/her technical expertise and degree of knowledge in specific fields or disciplines, and any other information which is believed to be relevant in a specific project.
When little constraints are imposed on the end-user category, i.e. when writing/publishing programs for the general public, it is common practice to expect minimal technical expertise or previous training in the use of computer interfaces. This is also the general meaning associated with the term end user (see also Luser). In this context, intuitive GUIs (possibly with a touch interface) are usually preferred over more sophisticated command line interfaces for the sake of usability.