Snowplow Programming

Matrix Multiply Parallelization icon-external-link-12x12 was the second project for the Summer 2013 semester class CS61C: Great Ideas in Computer Architecture (Machine Structures) icon-external-link-12x12 at UC Berkeley. This was the first time that people were allowed to work in pairs, as all previous assignments were intended for individual completion. The project itself was broken up into two parts that were to be submitted separately. Part one had two objectives: write code that efficiently computes matrices of varying sizes, and write code that is optimized for computation of a base-case 36×36 matrix.

The person with whom I had been studying for homework assignments neglected to tell me that she paired up with another classmate; I didn’t find out that I needed to get a new partner until the day we were supposed to submit our pairings to the teacher’s assistants. As a result, I ended up with a very questionable fellow who didn’t seem at all like the type of student I expected to find at UC Berkeley. Even more interesting was that I met many more like him in the days following our introduction.

I elected to write the code for handling matrices of varying sizes and suggested that he handle the base case. I did this for two reasons: 01) I saw an opportunity to apply what I had learned in my Linear Algebra studies to a challenging programming exercise, and 02) I didn’t at all feel comfortable letting him take responsibility for this more delicate part of the program. During the next week, we hardly worked together, which was one of the most unusual mixtures of relief and disappointment that I have ever experienced in my life.

As I was finishing up our project submission icon-external-link-12x12 , I decided to check in with my partner to see how his work was coming along. I was not very surprised to discover that he figured out a way to get everything done and that our program’s performance for the base case was at the top of the scale. Fortunately we weren’t nabbed for any funny business, but we should have been. I would be willing to bet that we got full credit on part one of the project, but honestly, I never bothered to check.

It’s interesting to note that my part of the program was only worth 20 points (~36.4%), while my partner’s part was worth 35 points (~64.6%).