How to find irreducible representation of a group from reducible one? I was reading this document to answer my question. But after teaching me hell lot of jargon like subgroup, normal subgroup, cosets, factor group, direct sums, modules and all that the document says this, 

You likely realize immediately that this is not a particularly easy
  thing to do by inspection. It turns out that there is a very
  straightforward and systematic way of taking a given representation
  and determining whether or not it is reducible, and if so, what the
  irreducible representations are. However, the details of how this can
  be done, while very interesting, are not necessary for the agenda of
  these notes. Therefore, for the sake of brevity, we will not pursue
  them.

(>_<) 
I want to learn to do this by hand and then write a program. Please don't ask me to learn GAP or any other software instead.
How to find irreducible representation of a group from reducible one? What is that straightforward and systematic way? 
 A: I do not believe that there is a straightforward way of doing what you want for complex representations. Probably the best way is to first compute the character table of the group. There are algorithms for that, such as Dixon-Schneider, but it is not something you can just sit down and program in an afternoon. Then you can use the orthogonality relations to find the irreducible constituents of your representation. There are then algorithms you could use to construct the matrices of the representations from its character - there is one due to Dixon, for example. This method is indirect in that you are not computing the irreducible constituents directly, but you are using the full chaarcter table, but I don't know any better way of doing it.
Strangely, this problem is a little easier for representations over finite fields, where there is a comparatively simple algorithm known as the "MeatAxe" for finding the irreducible constituents directly. (But programming it efficiently would still take a lot fo effort.)
A: (This might get more traction on math.stackexchange.com, rather than physics.stackexchange.com)
One can easily answer some of these questions with the concept of the character of a representation.
A (linear) representation is a homomorphism from group elements to linear transformations of a vector space.  The character of a representation is a map from group elements to the trace of this linear transformation.  A representation that is a direct sum of other representations has a character that is the ordinary sum of the characters of these other representations.
One can define an inner product on characters $x$ and $y$ by doing a normalized sum or integral of $\overline{x(g)} y(g)$.  Irreducible characters are orthonormal. This lets you test for irreducibility -- the character of the representation must have an inner product of 1 with itself.  If you have a list of the irreducible characters (which may be easier to construct than the list of irreducible representations), you can use this inner product to count how many times each irreducible character appears in a given character (and hence how many times an irreducible representation appears in a representation).
Of course, you do need the list of irreducible characters and representations to do this.  For finite groups, simple counting arguments plus orthogonality can get you an exhaustive list of irreducible characters, which will then tell you quite a bit about the corresponding representations. For continuous groups, other techniques are required.
A: 0) Find all irreducible representations of the group. Better learn GAP or another computer algebra system specially designed for algebra (in mathematical, not common sense). Or use character tables if you have well-known finite group.
1) Find a number of irreducible representations in the one you have using orthogonality relations for the characters (sum over group of the product of characters of elements from two representations equal to number of elements multiplied by number "times one representation may be find in another")
2) Now, if you want to derive a connection between your reducible representation and irreducible ones, you should find Clebsch-Gordan coefficients. Just pick any algorithm  -- it is hard to find a good description of one, I could not actually. 
If you want to take reducible representation and by some diagonalization-like procedure turn it into irreducible ones, there is no such algorithm. 
