In computer science, operational semantics is one of the approaches to give meaning to computer programs in a mathematically rigorous way (see semantics of programming languages).

An operational semantics for a particular programming language describes how any particular valid program in the language is interpreted as sequences of computational steps. These sequences then are the meaning of the program. In the context of functional programs, the final step in a terminating sequence returns the value of the program. (In general there can be many computation sequences and many return values for a single program, because the program could be nondeterministic.)

One of the most common ways used to rigorously define an operational semantics is to provide a state transition system for the language of interest. Such a definition allows a formal analysis of a language, permitting the study of relations between programs. Important relations include simulation preorders and bisimulation. These are specially useful in the context of concurrency.

Defining an operational semantics through a state transition system is usually done by giving an inductive definition of the set of possible transtions. This usually takes the form of a set of inference rules which define the valid transitions in the system.

Operational semantics is related to denotational semantics through the concept of full abstraction.