The course is an introduction to fundamental concepts, methods, and practical techniques in design computation with emphasis on a systems perspective. We take a view that computational design requires the designing of systems instead of forms/geometries directly and that the quality of such systems reflects the success of the design outcome.
A system can be understood as a set of detailed procedures to achieve a specific objective, which takes input data/signal and transforms it into output/feedback. To design a computational system, it is necessary to adopt a particular way of thinking: identifying, abstracting, and decomposing a design goal. In addition, the data and procedures to achieve the goal require the use of logical and numerical constructs. On the contrary to such a reductionist approach, it is important to note the output of a design system needs to be accessible to human thoughts for holistic and intuitive evaluation. In other words, the system perspective helps elucidate the different modes of thinking embedded within the use of the digital medium for design.
The course will be comprised of three learning segments: (a) computational and geometric notations, (b) data organization and algorithms, (c) data flow and design control; introduced through a series of asynchronous lectures and exercises as well as synchronous workshops. Students will create, analyze, and evaluate computational and geometric constructs within the design-as-a-system thoughtparadigm. Simultaneously, the course provides students with the basis for developing critical thinking towards computational tools through working on a series of design exercises and a final project. We will use Rhino, Grasshopper environment, and C# where we expect the students to be familiar with 3D modeling in Rhino. It is designed for architecture students with little programming experience who are interested in understanding the underlying principles of computational tools and customization of design processes using the tools.