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 
                       
		       Grade: 
		       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