What is the essential difference between the terminologies "associative" and "semi-group". 
Can only a map 
  $$*:S\times S\rightarrow S$$
  be associative? 

If I look at 
$$(a* b)* c=a* (b* c),$$ 
then it seems I have to rule out the more general case 
$$*:A\times B\rightarrow C.$$ 
But $A=B=C$ is really the only restriction for a binary operation to be a magma. Hence, if my assumption is true, for a relation to be associative is the exact same thing as being a semi-group. This redundancy in notation (one could just state that a relation together with its set is a semigroup) just surprised me.
(Here is a previous thread about a related point.)
 A: Let me make a general philosophical point about definitions. A mathematical definition is much more than just its bare semantic content. A definition also carries an implicit intent which must be understood from the way it is used in practice. 
For example, the mathematical definitions of directed (multi)graph and quiver are equivalent. So why do some people say directed (multi)graph and others say quiver? It is the intent behind the term: people who say directed (multi)graph want to do graph theory of some kind, whereas people who say quiver specifically want to study quiver representations, quiver varieties, etc. 
There are also various examples in category theory of constructions which, on the level of category theory, are formally equivalent (e.g. pullback and fiber product) but which are named after special cases which occur in different contexts. Choosing to use one name over the other evokes a particular context and activates certain intuitions related to whatever you're going to use the construction for. 

So, back to your question: strictly speaking the word "associative" is (in my experience) only used to describe a property of a map $S \times S \to S$, so saying "$f$ is associative" is formally equivalent to saying "$f$ defines a semigroup." But these two words occur in different contexts. When you want to talk about a given operation being associative, it is usually in the context of potentially several other operations (e.g. addition in the context of multiplication), whereas when you want to talk about a semigroup, you are usually only talking about the one operation. Failing to recognize this difference in intent will make it very difficult for people to understand you in practice even if you are, on a formal semantic level, saying the correct thing. 
A: Supplementing Qiaochu's answer:
Formally, if $f:S\times S\to S$, then saying "$f$ is associative" and "$(S,f)$ is a semigroup" convey the same information.
However, if you say the "$(S,f)$ is a semigroup" then you set up the reader to expect that if you later speak about "homomorphisms" and/or "isomorphisms", then what you're talking about semigroup morphisms. If $S$ has some structure in addition to $f$ (for example, it might be a ring or a Boolean algebra or whatever), then once you mention two different structures on the same base set you'll be obliged to specify which of these structures you mean each time you mention a homomorpism/isomorphism/whatever. That get very tedious quickly.
Therefore it is extremely convenient to have a way to speak about associativity as a property of the operation, rather than a property of the entire structure the operation is part of.
A: All sorts of things are associative. If we have functions
$f:A \rightarrow B$
$g:B \rightarrow C$
$h:C \rightarrow D$
they satisfy $(f \circ g)\circ h = f\circ (g\circ h) $ where the operation is composition of functions. And this enables us to see that all sorts of constructions are associative. It can, for example, be used to prove the associativity of matrix multiplication.
In an Algebra, multiplication by a 'scalar' associates with with the Algebra multiplication.
