Introduction to Computational Design

This is an introductory course to computational design and the prerequisite for a spring course that deals with more advanced topics in the field.

The course introduces students to fundamental concepts and techniques in computational design. By the term “computational design” we mean an ad hoc set of methods borrowed from computer science, computational geometry and other fields, and adapted to specific design problems such as design development, fabrication, analysis, interaction and communication.

The fact that most design related fields [structural engineering, environmental engineering, fabrication etc..] rely increasingly on digital tools opens up the possibility for a cross disciplinary integration of techniques and data sets. This ability of numerical models to operate between disciplines will be addressed in the class both in terms of analysis of results coming from other fields as well as generation of appropriate outputs.

The goal of the course is dual:
a. to help students develop the skills necessary for creating or manipulating computational solutions for specific design problems. That includes geometry generation and manipulation, analysis of data from external sources, output of information and design evaluation.
b. to explain in simple terms how commercial software design environments works. This is important in order for students to become better informed users of digital tools understand what choices software developers have made on their behalf and be able to better use and at times question those design environments.

The students are expected to acquire some hands on experience in programming as this is the craft that underpins computational design. Therefore there will be small design assignments to be completed in groups in addition to the guided programming workshops on Thursdays.

Different programming environment will be introduced with simplified examples and workshops. These examples on occasion will be given in more than one programming language so that students understand the similarities and differences between different environments. Students will be able to customize their course [in terms of programming environment and content] depending on their interests [geometry, real time graphics and interactions, electronics or web based applications].

Mathematical concepts will be introduced in simple terms as needed. The first weeks are dedicated to building up programming skills as well as introducing fundamental concepts from analytical and computational geometry.