|What it is|| In CS: the organization of the software that implements a system.
In AI: The total system that has direct and independent control of the behavior of an Agent via its sensors and effectors.
|Why it's important||The system architecture determines what kind of information processing can be done, and what the system as a whole is capable of in a particular Task-Environemnt.|
|Key concepts||process types; process initiation; information storage; information flow.|
|Graph representation||Common way to represent processes as nodes, information flow as edges.|
|Relation to AI||The term “system” not only includes not only the processing components, the functions these implement, their input and output, and relationships, but also temporal aspects of the system's behavior as a whole. This is important in AI because any controller of an Agent is supposed to control it in such a way that its behavior can be classified as being “intelligent”. But what are the necessary and sufficient components of that behavior set?|
|Intelligence is in part a systemic phenomenon||Thought experiment: Take any system we deem intelligent, e.g. a 10-year old human, and isolate any of his/her skills and features. A machine that implements any single one of these is unlikely to seem worthy of being called “intelligent” (viz chess programs), without further qualification (e.g. “a limited expert in a sub-field”).|
| Nodes stand for identified causal factors, edges stand for the causal relationship between these.
a. Sparsely coupled system; b. Densely coupled system; c. Tightly coupled system; d. Loosely coupled system; e. System with multi-variable couplings; f. Densely coupled system with mixed loose and tight, and multi-variable causal chains.
|Pipes & filters|| Extension of functions.
Component: Each component has a set of inputs and a set of outputs. A component reads streams of data on its inputs and produces streams of data on its outputs, delivering a complete instance of the result in a standard order.
Pipes: Connectors in a system of such components transmit outputs of one filter to inputs of others.
|Object-orientation||Abstract compound data types with associated operations.|
|Event-based invocation||Pre-defined event types trigger particular computation sequences in pre-defined ways.|
|Layered systems||System is deliberately separated into layers, a layer being a grouping of one or more sub-functions.|
|Hierarchical systems||System is deliberately organized into a hierarchy, where the position in the hierarchy represents one or more important (key system) parameters.|
|Blackboards||System employs a common data store, accessible by more than a single a sub-process of the system (often all).|
|Hybrid architectures||Take two or more of the above and mix together to suit your tastes.|
|Point-to-Point||Dedicated connection between nodes, shared only by a node at each end.|
|Bus||A message medium, shared by all nodes (or a subset).|
|Star||Central node serves as a conduit, forwarding to others; full structure of nodes forming a kind of star.|
|Ring||All nodes are connected to only two other nodes.|
|Mesh||All nodes are connected to all other nodes (fully connected graph); can be relaxed to partially-connected graph.|
|Tree||Node connections forms a hierarchical tree structure.|
|Pub-Sub||In publish-subscribe architectures one or more “post offices” receive requests to get certain information from nodes.|
|reference||Network topology on Wikipedia|
| A functional hierarchy organizes the execution of tasks according to their functions. A product hierarchy organizes production in little units, each focused on a particular product.
Several types of markets exist - here two idealized versions are show, without and with brokers. De-centralized markets require more intelligence to be present in the nodes, which can be aleviated by brokers. Brokers, however, present weak points in the system: If you have a system with only 2 brokers mediating between processors and consumers/buyers, failure in these 2 points will render the system useless.
Notice that in a basic program written in C++ every single character is such a potential point of failure, which is why bugs are so common in standard software.
|What it is||The methods we use to study a phenomenon.|
|Why it's important||Methodology directly influences the shape of our solution - our answers to scientific questions. For this reason, and equally importantly, it directly determines the speed with which we can make progress.|
|The main AI methodology||AI never really had a proper methodology discussion as part of its mainstream scientific discourse. Only 2 or 3 approaches to AI can be properly called 'methodologies': BDI (belief, desire, intention), subsumption, decision theory. As a result AI inherited the run of the mill CS methodology/ies by default.|
|What it is||A constructionist methodology requires an intelligent designer that manually (or via scripts) arranges selected components that together makes up a system of parts (read: architecture) that can act in particular ways. Examples: automobiles, telephone networks, computers, operating systems, the Internet, mobile phones, apps, etc.|
|Why it's important||Virtually all methodologies we have for creating software are of this kind.|
|Fundamental CS methodology||On the theory side, for the most part mathematical methodologies (not natural science). On the practical side, hand-coding programs and manual invention and implementation of algorithms. Systems creation in CS is co-owned by the field of engineering.|
|The main methodology/ies in CS||Constructionist.|
|Constructionist AI||Methodology for building cognitive agents that relies primarily on Constructionist methodologies.|
|Key Limitation||Rests on the key assumption (on which CS - as a science - is built) that humans, or those with human-level intelligence, are the only ones that will create software systems.|
2016©K. R. Thórisson