User:Yeem/BE.180 notes/4-25

From OpenWetWare
Jump to navigationJump to search

Drew Endy: So far, we've talked about controlling systems in time & space.

  • One extreme: can run autonomously
  • Other: runs entirely on external input

Last class: couple different examples of languages

  • "Growing point language"
  • "Origami language"
  • "Crop circle language"

Today, we're going to cover "growing point language". On Thursday, we'll probably do the crop circle language.

Growing point language

Figure 1

Person responsible: Daniel Coore, head of computer science in Jamaica

Randomly distributed cells (see figure 1)

  • two dimsensional surface
  • independent agents
  • local information: cell can sense surrounding area r away, but not really far from itself
  • want them to make a pattern

Challenge: invent a programming language that allows you to make patterns like this


Figure 2

How would you imagine wanting to write such a program, in English? (figure 2)

  1. Arbitrarily initiate/start at the leftmost point
  2. Create line (L to R)
    1. Material (line)
    2. Phermones (signal)
  3. Create lines (up/down), with length
  4. etc.

Three points of external information:

  1. Point 1 (red)
  2. Line 1 (blue)
  3. Line 2 (orange)


Figure 3: directions

Actual program for how "tip" point should move:

(define-growing-point(orient-poly length))
(material polymer)
(size n-width) #controls thickness of line as it grows
and(dia top-rail)(dia bot-rail)
(when(length<1=terminate) #stops program when length = 0
(default(propogate;length=length-1) #default behavior; propogates and decrements length
(signal name phermone)



  • Memory/logic/state
  • Communication
  • time