I am not sure that this will bring you more than you already know. But
then, I may fail to understand the reasons that make you wonder about
term rewriting. It does help.
As you may know, grammars are string rewriting systems. At the top of
the Chomsky hierarchy, you have type 0 grammars, which define
recursively enumerable (RE) anguages, and have the computational power
of Turing machines.
So that tells you that rewriting systems in general have a lot do do
with expressing algorithms.
The problem with strings in general is that there is no obvious way to
attach semantics to them. It is a kind of amorphous rewriting.
What people are usually interested in is expressing algorithms in
specific domains that have structure and properties. Such domains are
often defined from elementary (atomic) entities, and closed by
various operations, possibly quotiented by equivalence relations, and
so on. These are often called algebras.
These domains are often abstract. But computations on their elements
can be expressed only on concrete representations. Terms are natural
represntation of these elements since they express how elements can be
obtained for other elements by application of operations, recursively
downto atomic elements (though general properties need not always go
all the way down). Terms are a kind of tree structure syntax that can
be manipulated to express algorithms (as for string). But the operator
operand structure of terms also allows associating to them semantics
in some abstract domain by means of homomorphisms.
Rather than take the very formal view of wikipedia and many texts on
this topic, just consider programs. It is usually recognized that a
convenient syntactic representation of programs is what is called
Abstract Syntax Tree (AST). But an AST is just a term to represent a
program object. Denotational semantics is a way of defining abstract
domains and associate values from these domains to AST (or AST
subtrees) by mean of homomorphisms. Programs in AST form can be
transformed or optimized by applying rewriting rules (I am not
asserting that all optimizations can or should be done that way).
Transformation of algebraic expressions for various purposes can be
expressed by term rewriting. For example, the simplification of some
expressions. Various types of computations can also be naturally
expressed as term rewriting, such as the computation of
derivatives. Term rewriting is also used sometimes to define canonical
forms in algebras, when the same semantic entity can have several
I do suggest that you look at the wikipedia article on this topic.