I began to use Mathematica a few days ago. My problem is: how do I expand expressions like $(a+b)\ast(a+b)$, where the multiplication is noncommutative? Can Mathematica do this?
The package NCAlgebra does exactly what you want.
NCExpand[(a + b) ** (a + b)] (* a ** a + a ** b + b ** a + b ** b *)