Computational design refers to techniques for representing, optimizing, and exploring spaces of designs. Though the majority of the papers we will cover will be related to geometric design, these concepts are generally applicable to multiple domains.

The core of this class is to explore how to combine machine learning and program synthesis to develop computational tools that assist in the design process. We will start by discussing design representations, focusing and learning-based and program-based approaches. We will then look at techniques for instantiating designs that are applicable to converting between representations and reverse engineering (e.g. going from a sketch to a vector graphics format). We will then discuss techniques for optimizing designs, focusing on key challenges that come up in multiple domains, such as multi-objective, bi-level problems, and techniques that speed up performance measurements. Finally, we will consider cases when performance objectives are hard to define and must incorporate human input (e.g. optimizing a shoe for aesthetic and comfort).


Time: Monday/Wednesday, 9:30-10:50am
Location: CSE2 271

30% Participation
10% Project Proposal
20% Mid-Quarter Report
20% Project Presentation
20% Final Project Report

Prelimiary syllabus (subject to change): [pdf]


Instructor: Adriana Schulz
TA: James Noeckel