# Confusing notation in concatenation of error correcting codes

Define an $$(m,q,d,k)$$-(block) code $$C$$ to be a code with block size $$m$$, alphabet $$0\ldots ,q-1$$, and (non-relative) rate $$k$$. Meaning: $$k=log_q (|C|)$$ (if we think of $$C$$ as a set of legal codewords) ($$d$$ is the distance which isn't important for this particular question). Such a code could also be thought of as a function: $$C:[q]^k\rightarrow[q]^m$$ As it takes a word of length $$k$$ over $$[q]$$ and encodes it into a word of length $$m$$.

To my understanding, given an $$(m,q,d,k)$$ code $$C_{out}$$ and an $$(m',q',d',k')$$ code $$C_{in}$$ such that $$q'^{k'}=q$$, we can define the concatenation of $$C_{out}$$ with $$C_{in}$$ to be a code which takes an input for $$C_{out}$$, encodes it using $$C_{out}$$, and then encodes each letter of the resulting word using $$C_{in}$$. If this is how a concatenated code truly works, then if we denote the concatenated code $$C'$$ it should be thought of as a function: $$C':[q]^k\rightarrow [q']^{m*m'}$$ However, the common notation for such a codes (as can be seen here, for example) is: $$C_{out}\circ C_{in}$$ Which is exactly in the opposite order to what we would expect if we think about the concatenated code as a composition of functions.

Is there a problem with my understanding of concatenated codes, or is the notation simply confusing? And if my understanding is good, is there a reason the aforementioned notation is common?

The notation $$(C_{out}\circ C_{in})(m)$$ means: "take m, encode it with $$C_{out}$$ and then encode each symbol with $$C_{in}$$." From the point of view of the channel, $$C_{in}$$ is "closer", hence the inner one; see the figure in the wiki page you refer to.
The confusion is probably because you think of composition of functions, where the common notation $$(g\circ f)(x)$$ means $$g(f(x))$$. But here we don't have function composition but instead code concatenation, so the $$\circ$$ operation has a different meaning - it means $$C_{in}(c_1), \ldots, C_{in}(c_n)$$ with $$(c_1, \ldots, c_n) = C_{out}(m)$$.