This text covers Knowledge Acquisition and Representation Language (KARL), an operational specification language for knowledge-based systems and second-generation expert systems. It provides language primitives to represent knowledge according to the layers of a KADS-oriented model of expertise. The main features of KARL are: it provides epistemologically adequate modelling primitives that allow knowledge specifications at the knowledge level. Therefore, KARL allows a smooth transition from informal to formal specifications. KARL is a formal knowledge specification language. That is, it has a declarative semantics. It is an operational knowledge specification language that allows prototyping, i.e. knowledge evaluation by testing.