

Randell Rivadeneira
Homework 4
1. Name the two most important things/concepts which you learned from the reading the chapter “The Architecture of Complexity”
1.1. Give a one paragraph explanation why you consider these concepts important
The first concept that I learned from this chapter was that Hierarchical Systems serve to simplify complex systems. The reason why I consider this an important concept is because of the innate desire to understand complex systems. By understanding this concept, I can formulate a simpler way to understand complex systems or in my case, complex concepts. I will be able to create a hierarchical scheme such that I could decompose a complex concept in smaller concepts that build the more complex concept. Hence, following the watchmaker analogy I could in theory be interrupted while assembling a complex concept and not have to reread, or relearn all the concepts learn so far.
The second concept I found very interesting is Nearly Decomposable Systems. It explained in a thorough manner how most of the hierarchical systems tend to interact. That is, there is a strong interaction within subsystems and less, but still present, interaction among the subsystems. This concept is a very true and important view of society and how we tend to organize ourselves. Within a workplace, workers are separated into groups, where individuals tend to collaborate more with members of their own group. But as a whole, you would like for the groups to collaborate with each other as well.
1.2. Are the concepts relevant to your work, to your interest, if yes, why?
Both concepts are relevant to my work in two manners. First, my work requires the elaboration of complex systems, where if we apply (and we do) a hierarchical structure, the elaboration of this complex system becomes easier. We work in the small subsystems first, and then as they are completed we start joining them to create a complex system. Second, my workplace requires the interaction presented in Nearly Decomposable Systems. That is, the work done in groups requires for the members in this groups to interact with each other in a daily basis. Yet the interaction should not stop there, we need to be aware of other group of developers that are working in other subsystems. Hence, we need to acknowledge that subsystems interact at some level, and hence we as groups of developers should also interact in order to create highquality software systems.
2) The Mutilated “8x8” Matrix
1. Try to find an answer to this problem! ‡ document briefly your thinking — including all the important intermediate steps and failing attempts (i.e., create a “thinkaloud protocol”)
The solution for this problem was that there was no solution. First I attempted to establish the problem. I drew the 8x8 matrix in a paper, and saw what happened when I took the 2 corners out of the matrix. It was immediately the case that 2 holes appear in the mutilated matrix, hence in order to solve this problem the idea was to bring these to wholes together so that I could put a domino piece in such place. Therefore my first attempt was to shift the dominoes so that the spaces will end up together, after several attempts this was not possible. And I had another idea, which was to first think of the mutilated matrix as an empty box and add the dominos pieces one at the time. Eventually I found my self doing some trial an error of how I could put in the pieces. This gave no result, so I ended up attempting several patterns. Like placing the dominos in spirals, in diagonals, shifting the dominos and so on. None of the approaches gave good results. I always ended with two holes in the mutilated matrix, with no apparent option of moving domino blocks to make this two holes come near each other.
I decided to come to the website and look at the discussion forum and some of the homework already submitted. I found that none so far had come with a solution. Although some had suggested two possibilities, putting the domino block in diagonal and splitting the domino block. I found the latter suggestion as not possible, since the problem statement was clear of how a domino block is, and splitting it would be out of the question. The first suggestion was dismissed by some of the classmates as cheating the problem. Then I read that someone thought of the problem as being a checkers board and that gave me an idea.
Think that each domino piece contains an X and O at opposite sides. Then, for any type of arrangement, you can have domino pieces arranged where an X is NEVER adjacent to another X, and an O is never adjacent to another O. If you arrange domino pieces where X ‘s or O’s are adjacent, then you can flip the domino piece that creates a conflict until you have the case mentioned above. Now given this statement I started placing X’s and O’s in the mutilated matrix (just like a checkers board). When finished I decided to count the number of X’s and O’s. If I came with same amount of X’s and O’s, then there is a solution for this problem. But to my surprise I had 32 X’s and 30 O’s. Meaning, that I could not have domino block’s arranged in such a way to produce this result.
Hence my conclusion was that there is no solution for the problem. But again, I could be wrong and my proof that there is no answer could be invalid. If so, then I would be excited to find out the solution and find where my reasoning went wrong.
2. which resources did you use to solve the problem?
I used Swiki to read what other people in the class found. And I used a lot of scratch paper. First I was making a lot of 8x8 matrices, and then decided to make a permanent 8x8 matrix and use pencil to erase and use the same matrix. The first gave me the ability of looking at previous attempts, but I had to draw too many matrices. The second solve the problem, but I ended some times forgetting my previous attempts.
3. which process did you use?
At first I tried trial and error. Then used some patterns to solve the problem (some algorithms learned in Computer Science). I finally attempted to create a prove that an answer existed or did not.
4. which practice (of you or others) did you use?
I used hands on approach at first. Then I reflected on what I had done so far and continued to improve on previous attempts.
5. could computers be useful to solve this problem?
Yes, very useful. I could have elaborated a program to exhaust all possible combinations and that would be a formal prove that an answer exists or not.
6. what have you learned solving the problem: in general and for our course?
I learned how there are different approaches to tackle a problem. That the most obvious could not necessarily be the correct approach, and through time new and different approaches are chosen based on the previous failed ones.
7. what have you learned not being able to solve the problem: in general and for our course?
That when the more obvious approaches fail, one starts to getting frustrated. To take some time off will give you the ability to come with new ideas to solve the problem. And finally when everything else fails, I started to think of proving that there was no answer to the problem.

