SlideShare a Scribd company logo
ARCH A4845
Generative design
Columbia University GSAPP
ARCH A4845: Generative design
Introduction to
computational design
Columbia University GSAPP
ARCH A4845: Generative design
1. Computers in design
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Steven Coons and the Computer-Aided Design Project at MIT (1959-1967)
1963
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Ivan Sutherland and the Sketchpad system (1963)
Ivan Sutherland’s Sketchpad system is demonstrated on the console of the TX-2 at MIT (1963).
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Ivan Sutherland and the Sketchpad system (1963)
Steps for drawing straight lines and circle arcs Manipulation of complex geometry
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Ivan Sutherland and the Sketchpad system (1963)
Geometric relationships and constraints
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Timothy E Johnson and Sketchpad III (1963)
Sketchpad III, a computer program for drawing in three dimensions.
Generalized space allocation program, showing plan view, two perspectives, and two constraints.
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Lawrence Roberts
Compound object construction (1963) Camera transformation (1963)
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Nicholas Negroponte and the Architecture Machine Group (1969)
SEEK (1969-70)URBAN 5 (1969)
Columbia University GSAPP
ARCH A4845: Generative design
Origins of CAD - Nicholas Negroponte and the Architecture Machine Group (1969)
Columbia University GSAPP
ARCH A4845: Generative design
“There are three possible ways of having machines assist the design
process:
1. Current procedures can be automated
2. Existing methods can be altered to fit within the specifications and
constitution of a machine
3. The process, considered as being evolutionary, can be introduced
to a mechanism (also considered as evolutionary), and a mutual
training, resilience and growth can be developed
NICHOLAS NEGROPONTE, TOWARDS A HUMANISM THROUGH MACHINES (1969)
Columbia University GSAPP
ARCH A4845: Generative design
2. Design by algorithm
Columbia University GSAPP
ARCH A4845: Generative design
Victor Vasarely at work in 1948 Caopeo, 1964
Algorithms in art
Columbia University GSAPP
ARCH A4845: Generative design
Yoko Ono, Instruction Paintings, 1961
Algorithms in art
Columbia University GSAPP
ARCH A4845: Generative design
Sol Lewitt, Wall Drawing (1974)
Algorithms in art
Columbia University GSAPP
ARCH A4845: Generative design
Sol LeWitt, Wall Drawing #960 being executed at Site Gallery, Sheffield, 8 May 2010
Algorithms in art
Columbia University GSAPP
ARCH A4845: Generative design
Christopher Alexander, Notes on the Synthesis of Form (1964)
Algorithmic design
Columbia University GSAPP
ARCH A4845: Generative design
D’Arcy Wentworth Thompson, On Growth and Form (1917)
Morphogenesis in nature
Columbia University GSAPP
ARCH A4845: Generative design
Ernst Haeckel, Embryos (1870)
Morphogenesis in nature
Columbia University GSAPP
ARCH A4845: Generative design
Michael Hensel and Achim Menges (eds.) - AD Morphogenetic design series (2004, 2006, 2008, 2012)
Morphogenesis in design
Columbia University GSAPP
ARCH A4845: Generative design
Mark Burry, Sagrada Familia (1994)
Mark Burry, Architecture and Practical Design Computation. In
“Computational Design Thinking” (Achim Menges, Sean Alquist, ed.) 2011
Morphogenesis in design
Columbia University GSAPP
ARCH A4845: Generative design
Morphogenesis in design
Mark Burry, Sagrada Familia (1994)
Mark Burry, Architecture and Practical Design Computation. In
“Computational Design Thinking” (Achim Menges, Sean Alquist, ed.) 2011
Columbia University GSAPP
ARCH A4845: Generative design
3. Algorithm design
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable
2. Conditional
3. Loop
4. Function
5. Object (Class)
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
2. Loop
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
2. Loop
3. Conditional
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
2. Loop
3. Conditional
4. Function
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
def myFunction(input1, intput2):
# do something
return output
c = myFunction(a, b)
2. Loop
3. Conditional
4. Function
5. Object
“encapsulation”
5 elements of computation
Columbia University GSAPP
ARCH A4845: Generative design
1. Data-mapping (Grasshopper)
2. Procedural (scripting)
3. Object-oriented (OOP)
Types of programming
Columbia University GSAPP
ARCH A4845: Generative design
GH - single variable
Columbia University GSAPP
ARCH A4845: Generative design
GH Node
(“function”)
inputs outputs
GH system
Columbia University GSAPP
ARCH A4845: Generative design
Variable
geometry from Rhino
Variable
data in Grasshopper
Function
transform
geometry
Function
create
data type
“data flow”
GH system
Columbia University GSAPP
ARCH A4845: Generative design
Function
transform
geometry
Function
create
geometry
Function
create
data type
GH system
Columbia University GSAPP
ARCH A4845: Generative design
Function
transform
geometry
Function
create
geometry
Function
calculate
data
Function
create
data type
display data
GH system
Columbia University GSAPP
ARCH A4845: Generative design
GH - multi-data streams
Columbia University GSAPP
ARCH A4845: Generative design
Function
create list
of numbers
single data
multi-data
GH - multi-data streams
Columbia University GSAPP
ARCH A4845: Generative design
Inherent loop
(executes once on
each piece of data)
GH - multi-data streams
Columbia University GSAPP
ARCH A4845: Generative design
Conditional
(creates “pattern” of
True/False booleans)
Conditional
(separates data based
on pattern)
GH - multi-data streams
Columbia University GSAPP
ARCH A4845: Generative design
GH - data trees
Mode Lab - Grasshopper Primer V3.3 [http://grasshopperprimer.com/]
Columbia University GSAPP
ARCH A4845: Generative design
GH - data mapping - one to one
Columbia University GSAPP
ARCH A4845: Generative design
GH - data mapping - one to many
Columbia University GSAPP
ARCH A4845: Generative design
GH - data mapping - many to many (flat list)
Columbia University GSAPP
ARCH A4845: Generative design
GH - data mapping - many to many (flat list)
Columbia University GSAPP
ARCH A4845: Generative design
GH - data mapping - many to many (data tree)
Columbia University GSAPP
ARCH A4845: Generative design
Limitations of Grasshopper
1.	Hard to deal with variables having data structures beyond a 1-d flat list
2.	Can’t make arbitrary loops (only data mapping)
3.	Complex conditionals get messy because each one requires separate conditional and
dispatch nodes
4.	Can’t create custom functions
5.	No support for classes or object-oriented programming
Columbia University GSAPP
ARCH A4845: Generative design
Python in GH
Columbia University GSAPP
ARCH A4845: Generative design
What is a programming language?
HARDWARE
PROGRAMMING
LANGUAGE
USER
INTERFACE
SOFTWARE
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
2. Loop
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
2. Loop
3. Conditional if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
def myFunction(input1, input2):
# do something
return output
c = myFunction(a, b)
2. Loop
3. Conditional
4. Function
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
class MyClass:
def __init__(self, input1):
self.localVar = input1
def myMethod(self, input2):
# do something
return output
classInstance = MyClass(a)
c = classInstance.myMethod(b)
2. Loop
3. Conditional
4. Function
5. Object
def myFunction(input1, intput2):
# do something
return output
c = myFunction(a, b)
“encapsulation”
Columbia University GSAPP
ARCH A4845: Generative design
Elements of computer programming
1. Variable x = 1
y = ‘hello world’
myList = [1, ‘b’, 3]
myDict = {’a’: 1, ‘b’: 2}
for i in range(10):
# do something 10 times
for element in myList:
# do something for all elements
if x > 10 and y > 10:
# do something
elif x > 5 or y < 5:
# do something else
else:
# do something else
2. Loop
3. Conditional
4. Function
5. Object class MyClass:
def __init__(self, input1):
self.localVar = input1
def myMethod(self, input2):
# do something
return output
classInstance = MyClass(a)
c = classInstance.myMethod(b)
def myFunction(input1, intput2):
# do something
return output
c = myFunction(a, b)
Columbia University GSAPP
ARCH A4845: Generative design
4. Computational design strategies
Columbia University GSAPP
ARCH A4845: Generative design
Control types
1) Morphological
AdvantageDisavantage
2) State-change 3) Rule-based 4) Behavioral
•	 good top-down control over
design
•	 can create discontinous
design spaces
•	 control over individual
elemenst
•	 L-system, shape grammers,
1d CA (single-state)
•	 object-oriented, agent-based
behavior models (dynamic)
•	 continuous measures •	 choices, categories
•	 reduced number of inputs
(abstraction of inputs into
rule sets)
•	 can create complexity
•	 reduced number of inputs
(abstraction of inputs into
agent behaviors)
•	 can lead to emergence
•	 only top-down control
•	 can’t control individual
behavior
•	 can’t create emergence
•	 potentially redundant or
incomplete design space
•	 little intuitive control over
macro design
•	 potentially redundant or
incomplete design space
•	 can usually only generate
simple and design spaces
•	 many inputs (each element
needs to be controlled
seperately)
Columbia University GSAPP
ARCH A4845: Generative design
ARCH A4845/52
Generative design
Columbia University GSAPP
ARCH A4845: Generative design

More Related Content

PDF
01 Computational Design and Digital Fabrication
PPT
Introduction of Ironmongery in Interior fitting out project
PDF
Exploration and diversity in recommender systems
PDF
Generative Design - Week 3 - Working with data in Grasshopper
PPTX
Indoor Air Quality for Buildings
PPTX
STEEL DOORS AND WINDOW'S FITTINGS
PDF
Raj,1 Year Residential Design Diploma
PDF
FAQ: Guidlines on Gated Community & Guarded Neighbourhood
01 Computational Design and Digital Fabrication
Introduction of Ironmongery in Interior fitting out project
Exploration and diversity in recommender systems
Generative Design - Week 3 - Working with data in Grasshopper
Indoor Air Quality for Buildings
STEEL DOORS AND WINDOW'S FITTINGS
Raj,1 Year Residential Design Diploma
FAQ: Guidlines on Gated Community & Guarded Neighbourhood

What's hot (11)

PPTX
Styles of Interior Design
PPTX
Aluminium Metal - in Interior Design
PDF
Generative Design - Week 1 - Introduction to Generative Design
PDF
Daylighting
PPS
Eco Friendly Interior Materials
PPT
Sustainable design
PDF
Human Dimension and Interior Space A Source Book of Design Reference Standard...
PPTX
le Corbusier
PDF
GREEN SUSTAINABLE INTERIOR
PPTX
ARCHINT: Late Georgian (Interior Design + Furniture Design)
Styles of Interior Design
Aluminium Metal - in Interior Design
Generative Design - Week 1 - Introduction to Generative Design
Daylighting
Eco Friendly Interior Materials
Sustainable design
Human Dimension and Interior Space A Source Book of Design Reference Standard...
le Corbusier
GREEN SUSTAINABLE INTERIOR
ARCHINT: Late Georgian (Interior Design + Furniture Design)
Ad

Similar to SP18 Generative Design - Week 2 - Introduction to computational design (20)

PDF
SP18 Generative Design - Week 8 - Optimization
PDF
SP18 Generative Design - Week 5 - Introduction to simulation
PDF
PDF
Coates p: the use of genetic programming for applications in the field of spa...
PPT
Computational geometry
PDF
ML+Hadoop at NYC Predictive Analytics
PDF
NYAI #9: Concepts and Questions As Programs by Brenden Lake
PPT
cs344-lect11-resolution-robotic-knowledge-representation-29jan08.ppt
PDF
Monads and Monoids by Oleksiy Dyagilev
PDF
Scala Collections : Java 8 on Steroids
PDF
Narjess Afzaly: Model Your Problem with Graphs and Generate your objects
PDF
PPTX
Cape2013 scilab-workshop-19Oct13
PDF
SP18 Generative Design - Week 6 - Design space design
PPTX
Functional Design Explained (David Sankel CppCon 2015)
PDF
HOP-Rec_RecSys18
PDF
Studio 4 - workshop introduction
PPTX
Functional programming
PDF
Igraph
PPTX
Using Git, Pointers in Rust
SP18 Generative Design - Week 8 - Optimization
SP18 Generative Design - Week 5 - Introduction to simulation
Coates p: the use of genetic programming for applications in the field of spa...
Computational geometry
ML+Hadoop at NYC Predictive Analytics
NYAI #9: Concepts and Questions As Programs by Brenden Lake
cs344-lect11-resolution-robotic-knowledge-representation-29jan08.ppt
Monads and Monoids by Oleksiy Dyagilev
Scala Collections : Java 8 on Steroids
Narjess Afzaly: Model Your Problem with Graphs and Generate your objects
Cape2013 scilab-workshop-19Oct13
SP18 Generative Design - Week 6 - Design space design
Functional Design Explained (David Sankel CppCon 2015)
HOP-Rec_RecSys18
Studio 4 - workshop introduction
Functional programming
Igraph
Using Git, Pointers in Rust
Ad

More from Danil Nagy (8)

PDF
Generative Design - Week 6 - Designing with inputs, objectives, and constraints
PDF
Generative Design - Week 5 - Introduction to optimization
PDF
Generative Design - Week 4 - Scripting in Python
PDF
Generative Design - Week 2 - Parametric modeling in rhino and grasshopper
PPTX
SP18 Generative Design - Week 7 - GD case studies
PDF
SP18 Generative Design - Week 4 - Computational control strategies
PPTX
SP18 Generative Design - Week 1 - Introduction
PDF
Data Mining the City - A (practical) introduction to Machine Learning
Generative Design - Week 6 - Designing with inputs, objectives, and constraints
Generative Design - Week 5 - Introduction to optimization
Generative Design - Week 4 - Scripting in Python
Generative Design - Week 2 - Parametric modeling in rhino and grasshopper
SP18 Generative Design - Week 7 - GD case studies
SP18 Generative Design - Week 4 - Computational control strategies
SP18 Generative Design - Week 1 - Introduction
Data Mining the City - A (practical) introduction to Machine Learning

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Big Data Technologies - Introduction.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Machine learning based COVID-19 study performance prediction
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Machine Learning_overview_presentation.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Approach and Philosophy of On baking technology
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
cuic standard and advanced reporting.pdf
Unlocking AI with Model Context Protocol (MCP)
A comparative analysis of optical character recognition models for extracting...
Big Data Technologies - Introduction.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Machine learning based COVID-19 study performance prediction
MYSQL Presentation for SQL database connectivity
Per capita expenditure prediction using model stacking based on satellite ima...
Empathic Computing: Creating Shared Understanding
Machine Learning_overview_presentation.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
A Presentation on Artificial Intelligence
Approach and Philosophy of On baking technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Electronic commerce courselecture one. Pdf
Assigned Numbers - 2025 - Bluetooth® Document
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
20250228 LYD VKU AI Blended-Learning.pptx

SP18 Generative Design - Week 2 - Introduction to computational design

  • 1. ARCH A4845 Generative design Columbia University GSAPP ARCH A4845: Generative design
  • 2. Introduction to computational design Columbia University GSAPP ARCH A4845: Generative design
  • 3. 1. Computers in design Columbia University GSAPP ARCH A4845: Generative design
  • 4. Origins of CAD - Steven Coons and the Computer-Aided Design Project at MIT (1959-1967) 1963 Columbia University GSAPP ARCH A4845: Generative design
  • 5. Origins of CAD - Ivan Sutherland and the Sketchpad system (1963) Ivan Sutherland’s Sketchpad system is demonstrated on the console of the TX-2 at MIT (1963). Columbia University GSAPP ARCH A4845: Generative design
  • 6. Origins of CAD - Ivan Sutherland and the Sketchpad system (1963) Steps for drawing straight lines and circle arcs Manipulation of complex geometry Columbia University GSAPP ARCH A4845: Generative design
  • 7. Origins of CAD - Ivan Sutherland and the Sketchpad system (1963) Geometric relationships and constraints Columbia University GSAPP ARCH A4845: Generative design
  • 8. Origins of CAD - Timothy E Johnson and Sketchpad III (1963) Sketchpad III, a computer program for drawing in three dimensions. Generalized space allocation program, showing plan view, two perspectives, and two constraints. Columbia University GSAPP ARCH A4845: Generative design
  • 9. Origins of CAD - Lawrence Roberts Compound object construction (1963) Camera transformation (1963) Columbia University GSAPP ARCH A4845: Generative design
  • 10. Origins of CAD - Nicholas Negroponte and the Architecture Machine Group (1969) SEEK (1969-70)URBAN 5 (1969) Columbia University GSAPP ARCH A4845: Generative design
  • 11. Origins of CAD - Nicholas Negroponte and the Architecture Machine Group (1969) Columbia University GSAPP ARCH A4845: Generative design
  • 12. “There are three possible ways of having machines assist the design process: 1. Current procedures can be automated 2. Existing methods can be altered to fit within the specifications and constitution of a machine 3. The process, considered as being evolutionary, can be introduced to a mechanism (also considered as evolutionary), and a mutual training, resilience and growth can be developed NICHOLAS NEGROPONTE, TOWARDS A HUMANISM THROUGH MACHINES (1969) Columbia University GSAPP ARCH A4845: Generative design
  • 13. 2. Design by algorithm Columbia University GSAPP ARCH A4845: Generative design
  • 14. Victor Vasarely at work in 1948 Caopeo, 1964 Algorithms in art Columbia University GSAPP ARCH A4845: Generative design
  • 15. Yoko Ono, Instruction Paintings, 1961 Algorithms in art Columbia University GSAPP ARCH A4845: Generative design
  • 16. Sol Lewitt, Wall Drawing (1974) Algorithms in art Columbia University GSAPP ARCH A4845: Generative design
  • 17. Sol LeWitt, Wall Drawing #960 being executed at Site Gallery, Sheffield, 8 May 2010 Algorithms in art Columbia University GSAPP ARCH A4845: Generative design
  • 18. Christopher Alexander, Notes on the Synthesis of Form (1964) Algorithmic design Columbia University GSAPP ARCH A4845: Generative design
  • 19. D’Arcy Wentworth Thompson, On Growth and Form (1917) Morphogenesis in nature Columbia University GSAPP ARCH A4845: Generative design
  • 20. Ernst Haeckel, Embryos (1870) Morphogenesis in nature Columbia University GSAPP ARCH A4845: Generative design
  • 21. Michael Hensel and Achim Menges (eds.) - AD Morphogenetic design series (2004, 2006, 2008, 2012) Morphogenesis in design Columbia University GSAPP ARCH A4845: Generative design
  • 22. Mark Burry, Sagrada Familia (1994) Mark Burry, Architecture and Practical Design Computation. In “Computational Design Thinking” (Achim Menges, Sean Alquist, ed.) 2011 Morphogenesis in design Columbia University GSAPP ARCH A4845: Generative design
  • 23. Morphogenesis in design Mark Burry, Sagrada Familia (1994) Mark Burry, Architecture and Practical Design Computation. In “Computational Design Thinking” (Achim Menges, Sean Alquist, ed.) 2011 Columbia University GSAPP ARCH A4845: Generative design
  • 24. 3. Algorithm design Columbia University GSAPP ARCH A4845: Generative design
  • 25. 1. Variable 2. Conditional 3. Loop 4. Function 5. Object (Class) 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 26. 1. Variable 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 27. 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} 2. Loop 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 28. 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements 2. Loop 3. Conditional 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 29. 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else 2. Loop 3. Conditional 4. Function 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 30. 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else def myFunction(input1, intput2): # do something return output c = myFunction(a, b) 2. Loop 3. Conditional 4. Function 5. Object “encapsulation” 5 elements of computation Columbia University GSAPP ARCH A4845: Generative design
  • 31. 1. Data-mapping (Grasshopper) 2. Procedural (scripting) 3. Object-oriented (OOP) Types of programming Columbia University GSAPP ARCH A4845: Generative design
  • 32. GH - single variable Columbia University GSAPP ARCH A4845: Generative design GH Node (“function”) inputs outputs
  • 33. GH system Columbia University GSAPP ARCH A4845: Generative design Variable geometry from Rhino Variable data in Grasshopper Function transform geometry Function create data type “data flow”
  • 34. GH system Columbia University GSAPP ARCH A4845: Generative design Function transform geometry Function create geometry Function create data type
  • 35. GH system Columbia University GSAPP ARCH A4845: Generative design Function transform geometry Function create geometry Function calculate data Function create data type display data
  • 36. GH system Columbia University GSAPP ARCH A4845: Generative design
  • 37. GH - multi-data streams Columbia University GSAPP ARCH A4845: Generative design Function create list of numbers single data multi-data
  • 38. GH - multi-data streams Columbia University GSAPP ARCH A4845: Generative design Inherent loop (executes once on each piece of data)
  • 39. GH - multi-data streams Columbia University GSAPP ARCH A4845: Generative design Conditional (creates “pattern” of True/False booleans) Conditional (separates data based on pattern)
  • 40. GH - multi-data streams Columbia University GSAPP ARCH A4845: Generative design
  • 41. GH - data trees Mode Lab - Grasshopper Primer V3.3 [http://grasshopperprimer.com/] Columbia University GSAPP ARCH A4845: Generative design
  • 42. GH - data mapping - one to one Columbia University GSAPP ARCH A4845: Generative design
  • 43. GH - data mapping - one to many Columbia University GSAPP ARCH A4845: Generative design
  • 44. GH - data mapping - many to many (flat list) Columbia University GSAPP ARCH A4845: Generative design
  • 45. GH - data mapping - many to many (flat list) Columbia University GSAPP ARCH A4845: Generative design
  • 46. GH - data mapping - many to many (data tree) Columbia University GSAPP ARCH A4845: Generative design
  • 47. Limitations of Grasshopper 1. Hard to deal with variables having data structures beyond a 1-d flat list 2. Can’t make arbitrary loops (only data mapping) 3. Complex conditionals get messy because each one requires separate conditional and dispatch nodes 4. Can’t create custom functions 5. No support for classes or object-oriented programming Columbia University GSAPP ARCH A4845: Generative design
  • 48. Python in GH Columbia University GSAPP ARCH A4845: Generative design
  • 49. What is a programming language? HARDWARE PROGRAMMING LANGUAGE USER INTERFACE SOFTWARE Columbia University GSAPP ARCH A4845: Generative design
  • 50. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} Columbia University GSAPP ARCH A4845: Generative design
  • 51. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements 2. Loop Columbia University GSAPP ARCH A4845: Generative design
  • 52. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements 2. Loop 3. Conditional if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else Columbia University GSAPP ARCH A4845: Generative design
  • 53. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else def myFunction(input1, input2): # do something return output c = myFunction(a, b) 2. Loop 3. Conditional 4. Function Columbia University GSAPP ARCH A4845: Generative design
  • 54. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else class MyClass: def __init__(self, input1): self.localVar = input1 def myMethod(self, input2): # do something return output classInstance = MyClass(a) c = classInstance.myMethod(b) 2. Loop 3. Conditional 4. Function 5. Object def myFunction(input1, intput2): # do something return output c = myFunction(a, b) “encapsulation” Columbia University GSAPP ARCH A4845: Generative design
  • 55. Elements of computer programming 1. Variable x = 1 y = ‘hello world’ myList = [1, ‘b’, 3] myDict = {’a’: 1, ‘b’: 2} for i in range(10): # do something 10 times for element in myList: # do something for all elements if x > 10 and y > 10: # do something elif x > 5 or y < 5: # do something else else: # do something else 2. Loop 3. Conditional 4. Function 5. Object class MyClass: def __init__(self, input1): self.localVar = input1 def myMethod(self, input2): # do something return output classInstance = MyClass(a) c = classInstance.myMethod(b) def myFunction(input1, intput2): # do something return output c = myFunction(a, b) Columbia University GSAPP ARCH A4845: Generative design
  • 56. 4. Computational design strategies Columbia University GSAPP ARCH A4845: Generative design
  • 57. Control types 1) Morphological AdvantageDisavantage 2) State-change 3) Rule-based 4) Behavioral • good top-down control over design • can create discontinous design spaces • control over individual elemenst • L-system, shape grammers, 1d CA (single-state) • object-oriented, agent-based behavior models (dynamic) • continuous measures • choices, categories • reduced number of inputs (abstraction of inputs into rule sets) • can create complexity • reduced number of inputs (abstraction of inputs into agent behaviors) • can lead to emergence • only top-down control • can’t control individual behavior • can’t create emergence • potentially redundant or incomplete design space • little intuitive control over macro design • potentially redundant or incomplete design space • can usually only generate simple and design spaces • many inputs (each element needs to be controlled seperately) Columbia University GSAPP ARCH A4845: Generative design
  • 58. ARCH A4845/52 Generative design Columbia University GSAPP ARCH A4845: Generative design