Topic Selection & Research

You can make your project on any topic of your choice, as long as some portion of your project is implemented with Python. If you’re working in a team, your project will also be expected to represent enough work for the number of team members. For a one-person project, I expect the amount of work to be somewhere in between the effort needed to create Assignment 3 and Assignment 4. Not necessarily as intensive as 3, but more so than 4. You’re welcome to choose a more intensive project, if you’d like.

When selecting a topic, emphasize ideas that are interesting or that might be practical. On that second point, if you’re doing something for a studio or another course that you’d like to address with some sort of programming, I don’t mind if you’d like to do that for your final project. As part of your writeup, you’ll be expected to explain why you chose your topic.

In addition to selecting a topic, you’ll need to do some research to find any existing precedents or related projects that could be inspiration or references when implementing your project.

Topic Selection Assignment

Due: Monday, March 10, 2025

You’ll need to submit something on Canvas that describes your selected topic, highlights your research on any existing precedents or related projects, and your tentative plan on how you’re going to implement it. What you submit is up to you, but because you’ll need to present on your selected topic on Monday, March 10 in addition to submitting it on Canvas, you might want to do a slideshow.

I’ll use your submission and your presentation to provide feedback and suggestions, and, if necessary, request additional implementation goals to bring the workload up to an appropriate amount.

Selected Topic Description

Weight: 1%

Explain the problem and why you’d like to do it.

Make sure you include information about the goals of the project. What do you want your implementation to be able to do? It can be a good idea to create some milestones if you have multiple goals for the project.

Research Highlights

Weight: 2%

You’ll need to do some preliminary research when you have your topic selected. This could look like pictures or papers, whatever you’d prefer, but you need to show me that you’ve looked around for inspiration or insight. You’ll likely want to do more research as you complete your project, so this doesn’t have to be the same research you’ll present in your writeup at the end of the semester.

Implementation Plan

Weight: 1%

I don’t need specifics here about what sorts of variables you’re going to make or exactly how you intend to accomplish your goal. Broadly, I want to know what order you think you might try to do things in. It doesn’t have to be super complete, mostly just an outline. Your plan will likely change as your work on the project, but having some details in mind is a good way to start, and thinking about it before working on anything can be very helpful.

This could be a good opportunity to try to do something by hand, like we talked about in Week 7.

Identifying Where to Use Python

Weight: 1%

Additionally, you’ll need to talk about what portion of the implementation you think you’ll use Python for. Again, this could change once you start working on your project, but I want to see that you’re thinking about where to use programming from the start, even if it’s something as simple as introducing randomness. Your project could be possible entirely with Grasshopper alone, but you will need to choose a part of it to do in Python. This will be important in determining if the scale of the project is sufficient. If there’s anything you think you might want to try to find an open-source library for, here is where you’ll mention that. This is also a good opportunity to talk about any Grasshopper plugins you intend to use.

Topic Suggestions

Here’s a handful of topics that I think would be good projects. You’re welcome to have other ideas, as long as you can meet the criteria above.

Generative Systems

Generative systems are a fun way to use programming to support creating a wide range of results.

  • Cellular Automata

    • Creating 3D forms

    • Using more states than “on” and “off”

    • Experimenting with stochastic (randomized) cellular automata

    • Take a look at some of the things that the artist group Troika has done

  • L-Systems

    • Creating the turtle interpreter

    • Applying the replacement process

    • Experimenting with stochastic (randomized) L-Systems (see this example)

  • Wave Function Collapse

    • Implementing the collapse algorithm with your own ruleset

    • Using a pre-made collapse algorithm to create design variations

Digital Fabrication

Students interested in digital fabrication will likely be using a decent amount of Grasshopper, in tandem with Python.

  • Pattern replication

    • Think Assignments 2 and 3

  • Mapping 2D geometry to a surface

  • Form creation

    • Height maps

    • Gradient noise layering

    • Randomly sampling points to interpolate

    • Studio Gang and BIG have some interesting things that could be inspiration for programmatically creating forms and modular facades.

Studio Work

If you’re doing something for a studio that you’d like to explore with Grasshopper and Python, you’re more than welcome to. Design automation can be very rewarding.

Data Visualization

Although we haven’t spent time talking about data visualization this semester, programmatic design can be a useful tool for dataviz.

  • Site analysis

  • Circulation simulations

  • Light simulations/analysis

  • Exploration on how we perceive different representations of data