Refining Design Computation

"Computational design" and "design computation" seem more like a curious play on words than a meaningful distinction, but I think it's worth unpacking.

In particular, building up a consistent theoretical and practical framework for design computation could help it absorb new technologies like artificial intelligence and thus enable new methods of engaging spatial design problems. I like thinking about these things so here's the latest attempt.

In relation to computational design…

Perhaps more obvious is that "computational design" denotes a field of design, analogous to "graphic design" or "product design." As such, computational design (compdes) still aims to thoughtfully create innovative solutions for the world's problems, or at least a meaningful subset of them.

However, unlike "graphic design," which is functionally and descriptively about designing graphics (for communications like advertisements, posters, and books), computational design isn't really about designing computations. In a creative context, compdes is about deploying computational methods and techniques to invent and craft communications, objects, systems, experiences, and so on.

I suppose one could argue all such terms are really methodological, i.e. "architectural design" meaning deploying architectural means rather than designing architectures. Or maybe it's both.

Is "spatial design" about designing spaces, or is it about deploying spatial methods to design … anything? Eh, probably both.

In any case, this means a computational designer still approaches similar challenges as other designers do. They still discover and synthesize problems faced by particular audiences; they develop personas; they gather input from stakeholders; they ideate on potential solutions; they engage the classic struggle of form versus function (and I'd assert also feasibility, fashion, finance, and fitness).

And more definitively, computational designers adopt methods characterized by computational affordances. Leveraging the benefits of automation, interaction design, commercial software applications, code, and data, they have an impressive repertoire of methods available for their practices (mapping, generative methods, parametric methods, etc.).

Design computation, reprised.

As opposed to a field of design, design computation (descomp) is a subfield of computation that cultivates the computable techniques needed for the specific methods employed by computational design.

Aspirationally, as a set of enabling technologies, design computation can still produce even more innovative ways of approaching design problems, from the analytic to the critical to the generative, especially in this new age of artificial intelligence facilitated by large language models, text-to-image models, etc.

Design computation is the study and invention of computational techniques that facilitate the automated and semantic design of systems, communications, experiences, objects, and spaces.

Techniques of design computation.

The design computation's technical catalog is comprised of a variety of techniques, some of which can be directly associated with compdes methods.

For example, generative methods deploy parametric techniques, computational geometry, and performative evaluation.

Sixty-four variations of a rectilinear lattice.

Closely related to generative methods, evolutionary methods might deploy techniques like simulated annealing or genetic algorithms. Descomp contributes the means of computing genotypes, evaluating candidate phenotypes, modeling genetic crossover, and introducing mutations.

Agent-based simulations pose a rich area of exploration as well. Descomp contributes algorithms for path generation, way-finding, decision-making, and the like.

Mapping methods might utilize projection, graph traversal, and graphic transformations, some of which could be augmented by descomp.

A vaulted structural grid with a single point load, colorized according to von Mises stresses and rendered with an exaggerated deformation at the point load.

Optimization inhabits a peculiar place in computational design, although in a controversial neighborhood. On one hand, those who most value human elements of creativity criticize "optimization" as a mundane fixation on quantifiable aspects of design. On another, technically savvy designers may over-rotate on daylighting and environmental analysis as primary and necessary applications of computational methods.

There is a productive neutral zone for optimization, however, and spatially-aware search algorithms in design computation certainly cover this area. I believe the more we consider optimization for its practical and latent creative uses amidst a larger portfolio of creative techniques, the better off we'll be.

The aforementioned compdes methods and associated descomp techniques certainly aren't an exhaustive list; there is much work to do to expand this catalog. But it gives us a place to start.

Computational design and design computation thus depend on each other. The latter enables the former's collection of methods, and the former's aspirations establish the need for research in the latter.

Next step – spatial primitives.

And that leads to the next step to establish a more formal design computation, what I call "spatial primitives." These comprise a canonical set of computable building blocks specifically tuned for design problems in architecture, urbanism, environments, buildings, and spatial experiences, both real and virtual.

These building blocks are algorithms, data structures, and concepts, some adapted from mathematics or other fields, such as mappings, grids, graphs, trees, topologies, etc. Once we author a critical mass of foundational blocks, we can consistently compose and develop them. As with any other "building blocks" paradigm, we'll be able to build even more robust and advanced techniques, and thus enable more capable computational design methods. More on spatial primitives to come in another post.

The future – design computation for spatial AI.

Not only could we enable more compdes methods with such primitives, we could explore entirely new techniques enabled by machine learning and artificial intelligence.

This would imply a kind of design or spatial artificial intelligence.

Such models could enable an entirely new computational design, something more fluid, interactive, and conceptually rich.

The next goal – semantic models.

As I've written before, I believe a major goal of design computation is to enable a kind of semantically rich modeling. That is, instead of writing individual lines of code for geometry or algorithmic tuning, we could use natural language to describe design relationships, essentially models that mimic our thinking with less counterproductive intermediation, and thus collaborate with (rather than command) our machines to understand and explore our proposed solutions.

Imagine being able to discuss the dynamics of housing density in a residential neighborhood given a set of formal constraints, or even a geometric language engendered by available construction techniques. What if we could just ask the algorithm to increase the density and provide us options? What if we could appreciate and improve the abstractions associated with our ideas? Maybe our machines would become worthy assistants, rather than dumb implements.