Grasshopper

algorithmic modeling for Rhino

Hi everybody, we are about to start in Paris the DESIGN by DATA Advanced Master next Tuesday.

In my past years of teaching computational design with grasshopper, I've found that data trees is always a critical point to be correctly integrated by students, especially if they are new to algorithmic thinking and computation.

Do you have any example or definition or video that are particular efficient in order to teach DATA TREES concepts?

If you are interested, here are some I've been using for a while:

http://www.immaginoteca.com/data-trees-initiation-au-parametrique/

But as I am asking the question, I am not satisfied with them.

Please let me know.


Francesco

Views: 778

Replies to This Discussion

I don't recommend using the FAQ post about this as instruction material, but I do think the example it uses (breps, faces, contours, points) is an understandable one that shows the sort of complexity you have to deal with when designing algorithms.

A completely different approach would be to not try and justify the existence of data-trees at all, but merely state that data is organised in lists (where all the data inside a single list is considered to belong together) and then you can have any number of lists, each of which is identified not by a textual name or a single number, but by a string of integers {0}, {0;5}, {5:0;0;0;3;12}. These integers can/should be used to describe how various lists relate to each other. The more integers two lists have in common, the more related they are.

I do prefer to explain why things exist and are the way they are, datatrees are frustratingly complicated enough without having to deal with them in lieu of any fundamental understanding.

I found it just takes some time and doing a lot of examples, trial and error and so on, before I "got" how data structures work and a little bit longer to actually manage them as needed. In the beginning its good to a) use simplify whereever possible to keep things tidy and b) use panels everywhere to see whats happening.

I quite liked the Intro to Grasshopper series by Daniel Christev (https://www.youtube.com/playlist?list=PLXekJiZsSipBXda0RJF-wJVHNPKT...) and the essentials series by the friendly folks at ReseArch (http://www.rese-arch.org/bundle/essentials), which go really in-depth (3hrs just on data trees!). 

In the end I believe there is no quick explanation of data trees or at least not in a one-stop-solution way to work with them in all situations. Sometimes things just get really complicated and our brain cant think in so many dimensions, so it needs some time of working with it.

Best of Luck with the course, Franceso, hopefully I can join next year ;)

The efficacy of the explanation depends on the student's background, their capacity of abstraction and the metaphors they are able to grasp.

In the case of people with little to none previous experience in programming I found that the best way to explain data structure is a real-life case scenario (even pretty mundane) where you actually need a tree to organize things (no matter what those things are, it is their organization that matters in this case), and then show how and why it is important in the articulation of data inside Grasshopper.

Typically I make the case of a restaurant. It's quite verbose (sorry for the long post that follows), but hopefully didactic enough.

Let's say that you open a new restaurant and want to start small, so you can serve one client at the time: keeping track of his/her order is easy, it's just one (case of single data). The client is satisfied, the buzz spreads so you are able to afford to serve a single table with n clients. To keep track of the clients orders you now need a list (case of single list - of which the single data is a particular case). Things are going well. So now you can afford other two tables. How do you keep track of the orders? You number the tables {0}, {1} and {2}, each table with its separately processed list of orders. So now you know that if you need to look for the order of a particular client you first need to look for the right table number and then the client number at that table.
Either you're in luck or you're really good: now you can expand your restaurant in a second room, with 4 more tables. So now, you'll have the tables in room {0} and the ones in room {1}. Respectively: {0;0}, {0;1}, {0;2} and {1;0},{1;1}, {1;2}, {1;3}. Welcome to data trees (of which a list is a particular case of a tree with a single branch, of which....).

Ok, I think you get the idea..... next step would be opening on another building, with 3 rooms, each of which has..... (and so on and so forth). Turns out you are a famous franchise or something like that.

The important things about this example (besides talking about food - so you immediately get everyone's attention) in my opinion are:

. it grows from simple to complex, allowing the metaphor to grow along in the learner's mind before goin into a visual reference

. it teases the necessity of a tree structure to organize data, rather than imposing it without any basis

. it has a grasp to a real-life case, so people can relate to it

The complex operations require practice in order to become fluent with data trees, and that depends only on how much practice one needs to acquire the required fluency, but I believe this simple example can give a good foundation on the basic concepts.

Hope this was helpful!

Nice, I really like the restaurant analogy! It can be taken much further with mathematical operations for each table (like splitting the bill between all people at a table) or simply calculating the sum of all orders (using mass addition). Then you could move to actually visually building something that is still related, like building a graph in 3D that maps spending or even transforming some chairs around a table depending on how many people at each table (coming from random range).

Must remember this if I finally get to teach some Grasshopper!

I like it! Now I'm hungry...

Hello,

Great analogy and example.

For the introduction to data trees i was using the phone agenda example, where A phone numbers are {0}, B {1} and so on. To continue to branch paths depth, each letter, would be partitioned to close friends, relatives, work etc, having 0;0, 0;1..., 1;0.,1;1..

Next would be a city, with blocks, roads, addresses, buildings, flats, occupants and encouraged students to suggest trees.

Along with some diagrammatic sketches I am sticking with the restaurant from now on. It seems logical, to have to organize data through this analogy.

Thank you for sharing this.

best

alex

ps. It seems also that physical phone agendas are not popular nowadays, thanks to mobiles.

Sending this to my students now!

The most successful instructors are those that have gained some real world experiences. Particularly if you are able to use those experiences and weave them into the fabric of the subject you are teaching. If you want to know why a generalized education has failed. Take a look at You tube, do a search for: John Taylor Gatto

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service