Defaults are statements in natural language that generalise over a particular kind of objects or over what a particular kind of objects does. Defaults are very useful in human communication since we often do not have complete information about the world, but we must be able to draw conclusions about what is normally the case. However, these conclusions are only tentative and sometimes we have to withdraw them and revise our theory if new information becomes available. In this paper, we propose the use of a controlled natural language as a high-level specification language for modelling commonsense reasoning problems. We investigate how defaults and exceptions can be incorporated into an existing controlled natural language and what kind of formal machinery is required to represent and reason with them in a non-monotonic way. Our controlled natural language looks completely natural at first glance since it consists of a well-defined subset of English but it is in fact a formal language that is computer-processable and can be translated unambiguously via discourse representation structures into an executable answer set program. Answer set programming is a relatively new logic-based knowledge representation formalism and is well-suited to solve commonsense reasoning problems.