I've always done them "by hand" (I learned all this in the years "B.C."- Before Calculators!). The 'algorithm' I preferred was : Divide the first row by whatever number was in "first row, first column"(the "pivot"). Now look at each succeeding row. You can get a 0 there by "multiply that new first row by the number in first column, nth row and subtract from the nth row". Once you've done that your first column has a 1 at the "pivot" and 0's below. Now move on to the second column. Divide the second row by whatever number is in the "pivot" (second column second row). For every succeeding row (you can ignore the first row and first column) multiply the second row by the number in "second column nth row" and subtract that from the nth row. Once you done that the second column has a 1 in the "pivot" and 0s below. Work your way across the columns that way.
Of course, if, at any time, the "pivot" is 0 so that you CAN'T divide the row by it, you will need to swap that row with a lower row. If, at any time, a "pivot" and all numbers below it in that column are 0, you are DONE. You CAN'T get that matrix is "upper triangular" form.