In this paper the semantics of the programming language POOL is described. It is a language that integrates the object-oriented structure of languages like Smalltalk-80 with facilities for concurrency and communication like the ones in Ada. The semantics is described in an operational way; it is based on transition systems. By using a way of representing parallel processes that is different from the traditional one, it is possible to overcome some difficulties pertaining to the latter. The resulting semantics shows a close resemblance with the informal language description and at the same time there are good prospects that it can serve as a secure guide for the implementation of the language. Also a variant is given in which more and maximal parallelism can be expressed in a very natural way.