Links
Course Documents
     Main Page
     Assignments
     Contact Information
     Course Announcement
     Schedule and Syllabus
     Course Participants
     Discussion Forum
     Swiki Chat Area
     Lecture Material
     Independent Research
     Project
     Questionnaires
     Previous Course
Swiki Features:
  View this Page
  Edit this Page
  Printer Friendly View
  Lock this Page
  References to this Page
  Uploads to this Page
  History of this Page
  Top of the Swiki
  Recent Changes
  Search the Swiki
  Help Guide
Related Links:
     Atlas Program
     Center for LifeLong Learning and Design
     Computer Science Department
     Institute of Cognitive Science
     College of Architecture and Planning
     University of Colorado at Boulder
[spacer]
HW 4 by Jun Chen and Sarah Kim-Warren

1. Two most interesting and important things/concepts are (1) hierarchy and evolution and (2) near decomposability.

1.1. Hierarchy is a very important way to understand complex systems by reducing the complexity and making things more comprehensible. We (particularly Sarah) found that the term "evolution of complex systems" is described in a way that is interesting but hard to agree with. We (particularly Sarah) believe some of the examples that are included in the chapter describe development(s) or increasing productivity instead of "evolution". The near decomposability theory points out a further interesting point along with hierarchy. We strongly agree with the sections in the chapter that many complex systems have a nearly decomposable of the hierarchic structure. This is a major facilitating factor enabling us to understand, describe, and even "see" such systems and their parts. This reminds us of many principles and methodologies we are using in engineering school. Hierarchy may not be the whole truth, but it is definitely an important part. Most importantly, it helps us to understand some complex systems.

1.2. These concepts are very much related to computer science students and are helpful in understanding and functioning within a big organization. Software systems, in general, are hierarchical. When programming, we use modules and objects as sub-systems to encapsulate the complexity and details. The weak interactions between these subsystems are supported via the interface of these sub-systems. As the article explains, a small group of people makes a department, a few departments makes a division, a few divisions make a region, and all the regions together make one big corporation. Each small group is inter-related, and functionalities of departments or divisions are different. Even so, they have to work together as one corporation in order to succeed in this world.


2. The Mutilated "8x8" Matrix

2.1. We tried a few ways to put the domino blocks into an "8x8" matrix but failed to find the answer. We have tried a few different ways to find a solution for this problem. This problem may have a solution, but the search space is large. The basic idea is to search through the space to find a path towards the goal. There are many states in this problem, each presenting one possible matrix with some domino blocks in it. The matrix with zero domino blocks is the initial state, and the matrix with 31 domino blocks is the goal state. Starting with the initial state, we can build a search tree where the initial state is the root and each child is a state that starts with the parent state and has one more domino block. Leaves are either the goal state or the state that can't have one more domino block. For every leaf that is a goal state, we can specify a path telling how to get the goal state from the initial state.

2.2. We made a few copies of the homework printout and used pencil and paper methods to mark each domino block.

2.3. We started with the first row, filled up all the spots with the domino blocks, and then moved to the row below it. However, every time we reached the last row, we couldn't find a way to fill the last two squares without breaking the last domino block.

2.4. We tried a different way to fill the domino blocks each time. For example, we laid the first three domino blocks horizontally then one vertically. That forced the next line to follow the same pattern. At the end, we found that we could not lay down the last domino block without breaking it in half.

2.5. Computers could be very useful in solving this problem because a computer has a much faster computing capability than the human mind. Finding the solution to question 2.2. is very time consuming. We tired several possible ways. However, the computer can be quicker to find an answer.

2.6. When we are unsure how to solve a problem like the mutilated "8x8" matrix, we search for possible solutions by the trial and error method. If there are known heuristics to a problem, we apply them. They can help make the search more efficient.

2.7. When a search space is very big, it can be very difficult for the human mind to find the path to the goal. We may work our ways to break down the problem to smaller pieces. If we can find a solution to each pieces and heuristic of the solutions, we may use computer(s) to compute the results.

View this PageEdit this PagePrinter Friendly ViewLock this PageReferences to this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide