 Before we talk about the design of complex systems, let's start by thinking a bit about design itself and our traditional approach to it. Design and engineering are very broad and fundamental human activities, and there are a lot of different definitions for them. But at the heart of many of these definitions is design as a process. That is a process where we conceive of an original or improved solution to achieving some desired, optimal end state. We then identify the set of factors and constraints within the given environment, and lastly, developing a model for the arrangement of a set of elements to achieving this desired end state, that is, the design. Thus, whether we are engineering a bicycle, new production process for our factory, or designing some healthcare service, we can say design is about the arrangement of elements within a system in order to achieve some optimal global functionality. Within engineering, this optimal functionality is typically talked about and quantified in terms of systems efficiency. A design paradigm, then, is an overarching approach that consists of a set of basic assumptions and theories about how the world we want to engineer works, coupled with a complementary set of principles and methods with which to approach this design process. Like many other areas, our modern engineering paradigm inherits its theoretical foundation from modern science, and in particular, classical physics. A key method employed by both is that of reductionism. Reductionism holds that a complex system is nothing but the sum of its parts, and that an account of it can be reduced to accounts of its individual constituents. The reductionist approach results in a vision of the world that is made up of isolated components that interact in a predetermined linear fashion. What is sometimes called the clockwork universe. As we put our reductionist goggles on, everything starts to look like little deterministic cogs in a vast machine. Thus, the reductionist approach applied to engineering results in the decomposing or breaking down of whole systems into discrete components that can be isolated and modeled using linear equations. The overall functionality of the system is then achieved by defining an overarching top-down plan as to how all these components will fit back together. In order to achieve this overall functionality of the system, it is important that the elements can be constrained, that is to say, they are relatively static and their behavior can be predetermined and thus controlled. The reductionist approach has worked well in the engineering of bridges, airplanes, and skyscrapers. These systems are designed to be, and we want them to be, stable, predictable, and reliable. Reductionism works well when we are dealing with systems with a low level of interconnectivity and interdependencies where the components are static, controllable, and the environment relatively unchanging. But what happens when this is not the case? When we have to design information systems where the components are highly interconnected and interdependent, when we have to build sustainable cities with multiple stakeholders that all have their own agendas or infrastructure systems that will have to operate in a changing, uncertain future environment created by climate change? In this case, our basic assumption or design paradigm has to shift to one that is more focused upon the connections that integrate diverse components into systems as opposed to our traditional component-based paradigm, and this is where complex systems design comes in. So let's talk about the key features to this new design paradigm, all of which will be major themes throughout the rest of the course. Firstly, complex systems are open systems. In traditional design and engineering, we are dealing with things like chairs, bridges, and buildings. They have well-defined boundaries. We can fully control all the elements within these boundaries and fully design the system. This makes them orderly and predictable. With the design of complex systems, what we're dealing with instead are open systems. Think of electrical power grids, cities, or the Internet itself, a massively modular, distributed system. It has no defined boundaries, people and devices couple and decouple from the system. It is not random, but this world of complex systems is not so orderly. It is, to use the catchy phrase, edge of chaos. No one is in control and no one fully understands or can fully design these open systems. Next, connectivity and networks. Whereas our traditional approach is very much focused on components, that is to say designing things, complex systems design is about connecting these things together and networks are the platforms through which we connect things into systems that deliver functionality. Instead of focusing on the properties of things, that is, how to make them bigger, faster, and better, the primary focus here is on how to design the protocols and interactions so that diverse components can work together. Think about smart power grids. What we are designing here is a network through which multiple diverse components, meters, power generators, and different electrical devices can communicate and interoperate through a standardized set of protocols. Next, self-organization. What we're used to designing are monolithic technologies. They are controlled by one master plan that is imposed on all elements in a top-down fashion. One monolithic design constrains all the components within the system. This is how we make buildings, cars, and airplanes, and it works well until the components of the system are autonomous. When we try to apply this approach to designing something like whole cities, the results can be disastrous. A massive waste of resources and hugely alienating and disengaging environments. In these complex systems, the real capacity to act, to deploy capability, lies on the local level. Think of social networks. A social network without its users is essentially nothing. It is, at the end of the day, the users that really create the value of the system. Trying to control the network will likely end in overburdening it with system-level constraints. Users will become disengaged and simply opt out. In complex engineered systems, global functionality emerges from self-organization of elements on the local level. Therefore, we do not seek to design the system in all its details, but focus instead on configuring the context and the local interactions that may lead to effective global coordination. Lastly, adaptation and evolution. In classical engineering, the components to the system are specifically held static so as to coordinate the system as a whole. This requires prediction of the environment in which the system will operate, the conditions it will face, and the tasks it will be required to perform. In complex engineered systems, the components have a high degree of autonomy. Whether we're talking about websites on the Internet, where people choose to build their houses or invest their money, the elements are adapting to their local environment and thus the state of the system is a product of the evolutionary process that results from this. Their capacity of adaptation and evolution allows for these systems to operate in more complex and volatile environments where complete knowledge of the system and its environment is impossible. To summarize, we can say complex systems design represents an alternative paradigm to our traditional design engineering approach. This traditional paradigm is focused upon the development of discrete, well-defined objects by breaking them down into individual components and then coordinating these components within one top-down global design. These systems are designed to be static, stable, and operate predictably within well-defined parameters. Examples of these are cups, washing machines, bridges, houses, and cars. In contrary, we have seen how the paradigm of complex systems design is focused on the development of open systems that integrate diverse components through dynamic networks and that global functionality emerges from the bottom up as elements interact, adapt, and evolve over time. Classical examples of these complex engineered systems are the Internet and cities, but also healthcare systems, electrical power grids, financial portfolios, logistics networks, and transportation networks.