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? 

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.)
