Welcome to IFT6095

Computational Design
for Digital Fabrication

Scroll Down


In order to resolve scheduling conflicts, the class on Fridays has been shifted from 13:30 to 11:30. The class on Fridays is now from 11:30 to 13:29 in room P-318, pavillon Roger-Gaudryous.

About this Course

This course provides an introduction to the field of Computational Design for Digital Fabrication. Students will learn about both hardware and algorithmics aspects of various 3D printing processes and other digital fabrication technologies. As the central part of this course, students will learn about simulation- and optimization-based design approaches. We will cover simple forward design methods based on mass-spring systems as well as inverse design methods based on advanced finite-element models of solids, shells, and rods. The theoretical underpinnings of these approaches are formed by numerical linear algebra, unconstrained and constrained optimization, as well as various topics from computational mechanics. The material introduced in class will be richly illustrated using examples from, e.g., mechanical, industrial, and architectural design. The lectures are accompanied by programming exercises, in which students will implement some of the concepts taught in class, as well as by practical exercises on digital fabrication hardware.


Whether the course will be taught in English or French will be decided during the first class based on language proficiency of the attendees.

Times and Locations

There will be two classes per week, on Wednesdays and Fridays, each two hours long.

Day Time Location Start Date End Date
Wednesdays 13:30 - 15:29 1175 Pav. André-Aisenstadt 09/06/2017 12/06/2017
Fridays 11:30 - 13:29 P-318 Pav. Roger-Gaudryous 09/08/2017 12/08/2017

Can't Wait?

Here are some example projects to browse. More can be found here .

Mechanical Automata

Coros et al. Computational Design of Mechanical Automata. ACM SIGGRAPH '13.


Skouras et al. Designing Inflatable Structures. ACM SIGGRAPH '14.

3D Printing on Stretched Fabric

Perez et al. Computational Design and Automated Fabrication of Kirchhoff Plateau Surfaces. ACM SIGGRAPH '17.



09/06/2017 PDF
The course will start off with an overview of the field, and by answering important questions such as 'what is computational design?' and 'what is digital fabrication?'.

3D Printing 101

09/08/2017 PDF
We will take a deep dive into Fused Deposition Modeling (FDM), the most widespread process for consumer-level 3D printing. We will discuss parametric modeling of solid objects using OpenSCAD, an open source, scriptable CAD software. We will also have a look at G-Code, which is the de facto standard language used for FDM printers.

Simulation Basics I

09/13/2017 PDF   GradDesc1D.m

As a fundamental part of virtual prototyping and forward design, this class covers some basic concepts of numerical simulation. Using simple spring networks as an example, we will have an in-depth look at gradient-based function minimization.

Simulation Basics II

09/15/2017 PDF   Matlab

This class will introduce more powerful minimization methods, in particular Newton's method, that leverage second order derivative information of the objective function for faster convergence. In this context, we will also talk about how to solve linear systems, and some of the things that can go wrong when trying to do so.

Simulation Basics III

09/20/2017 PDF

This class will look at the meaning, significance, and structure of Hessian matrices that contain the second partial derivatives of the systems potential energy. We consider sparse matrix representations and linear solves that can take advantage of the properties that energy Hessians typically exhibit. Finally, we also discuss cases in which some of these properties are lost.

Optimization Basics I

09/22/2017 PDF

Having covered the basics of simulation for forward design and virtual prototyping, we will now turn to design automation and inverse design. The mathematical framework for this purpose is constrained optimization, and this class will introduce some of the basic concepts.

Optimization Basics II

09/27/2017 PDF

First order optimality (KKT) conditions, second order sufficient conditions. Numerical solution of the KKT system. Lagrangian. Quadratic programs with equality constraints.

Optimization Basics III

09/29/2017 PDF

Inequality constraints. Active set method. Nonlinear programming. Line search and Wolfe conditions. Merit functions. Sequential Quadratic Progamming (SQP).

Sensitivity Analysis I

10/04/2017 PDF

Sensitivity analysis. Steepest descent.

Sensitivity Analysis II

10/06/2017 PDF   Assignment3

Sensitivity analysis. Newton's method. Explanation Assignment 3.

Continuum Mechanics I

10/11/2017 PDF

Strain, stress, material laws, and strain energy density in 1D. Green strain, Cauchy strain, Cauchy stress in 3D.

Continuum Mechanics II

10/13/2017 PDF

Finite element discretization.

Continuum Mechanics III

10/18/2017 PDF   Matlab file

Deformation gradient.

Continuum Mechanics IV

11/01/2017 PDF   Maple sheet

Nonlinear elasticity, materials models, parameter fitting, experimental measurements.

Mechanisms I

11/03/2017 PDF

Planar mechanisms, multi-body kinematics, constraints, mobility, singularities.

Mechanisms II

11/08/2017 PDF

Spatial mechanisms, mobility, spatial four bar linkages. Planar and spatial examples.

Mechanisms III

11/10/2017 PDF

Mechanism design using sensitivity analysis.

Thin Shells I

11/15/2017 PDF

Introduction to Kirchhoff Love thin shells, first and second fundamental curves, curvature.

Thin Shells II

11/17/2017 PDF

Subdivision surfaces, thins shell discretization with subdivision finite elements.


The accompanying programming exercises are meant to deepen the concepts covered in class. For each programming sheet, we will provide a C++ code framework with basic functionality already in place. This allows you to get straight to the point and implement only the technically interesting and relevant parts. The framework is based on Microsoft Visual Studio 2017 (freely available from here ), as well as GLFW.

Assignment 1

Hand out: September 8
Hand in: September 22 (11:30AM)

Assignment 2

PDF   Code
Hand out: September 22
Hand in: October 6 (11:30AM)

Assignment 3

PDF   Code   Solution
Hand out: October 12
Hand in: November 01 (1:30PM)

Assignment 4

PDF   Code
Hand out: November 19
Hand in: December 15

Assignment 5

Slides   Papers
Hand out: November 12
Hand in: December 15


75% of the final grade will be determined by the exercise grades, 25% will be determined based on an extended review of a scientific article (list to be posted).