top of page

Algorithmic Design 

2013 - 2014: Processing


Immanuel Koh


The course introduces the basics of scripting in Processing; followed by the use of Object-Oriented Programming (OOP) approach to facilitate more complex algorithmic design. We would create time-based and rule-based systems in the production of self-organisational spaces and forms; eventually documenting these as video-graphical animations.

(Team-Based Tasks) :

Session 1: Programming Basics & OOP with Processing

Session 2: Processing with Processing/Java libraries for 3D

Session 3: Self-organisation systems with Processing  

Session 4: GUI & Documentation with Processing




Generative Design

2013 - 2014: Python 


Immanuel Koh


The course would first introduce scripting in Python via the RhinoScripting Editor within Rhino and then using the knowledge to attempt in writing custom GH definition in the production of a series of highly differentiated design prototypes.

(Team-Based Tasks) :

Session 1: Using Python with Rhinoscript Syntax --- Procedural Modeling

Session 2: Using Python with RhinoCommon --- OOP Modeling

Session 3: Making Custom GH Definition with RhinoPython GH plug-in

Session 4: Final Design Production




Collective-Intelligence II (Interactive Objects)

2013 - 2014: Grasshopper/Processing/Arduino


Immanuel Koh


The course would introduce the Arduino microcontroller and a selected array of sensors/actuators to explore the use of data as potential inputs/outputs of a proposed physical urban system. Basic electronic concepts and techniques would also be covered as students work in teams building interactive physical systems.

(Team-Based Tasks) :

Session 1: Basic Sensors/Actuators & Electronics with Arduino & Fritzing

Session 2: Programming Arduino using Firmata in Processing/ Firefly in GH

Session 3: Prototyping & Designing an autonomous actuating/sensing object

Session 4: Prototyping & Designing a collective actuating/sensing system



Collective-Intelligence I (Systems Thinking)

2013 - 2014: Processing


Immanuel Koh


The course aims to introduce the basic building blocks for scripting ruled-based systems from scratch in Processing. Unlike the primer course in Term 1, which covers the syntax, techniques, workflow and geometric documentation with Processing & Java, using examples of self-organisational models; here the focus is the design of intelligent systems themselves. Each session will survey a specific system and students would learn ways of strategically implementing them within an urban context.

(Team-Based Tasks) :

Session 1: Agents

Session 2: Cellular Automata

Session 3: Genetic Algorithms

Session 4: Graph/Network Algorithms





2013 - 2014: Grasshopper/Processing/Arduino/Python/Kinect/UR10


Immanuel Koh


This course would utilize the Universal Robot (UR10) to explore the potential in using articulated robotic arm for urban morphological design processes. Processing & GH plug-ins would be used as both robot simulator and code generator to facilitate our exploration and production.  Students will work in teams while designing and implementing their own robotic systems (i.e. tool-paths planning, end-effectors design, IO logic, code generation/communication protocols...etc). Related aspect of physical computing (e.g. Arduino...etc) would be used accordingly for the actuation of the end-effectors.  A team from each cluster will be assigned each week to present and implement their system with the robotic arm.

This course is compulsory for all UD2 and students should either attend the morning sessions or the afternoon sessions.


(Team-Based Tasks) :

Session 1: UR10 robot control overview (esp. Script Mode, IO control and URScript.). Related GH & Processing exercises.

Session 2: GH plug-ins (simulation & code generation). End-effector Prototyping and IO design implementation.

Session 3: Processing (simulation & code generation). End-effector Prototyping and IO design implementation.

Session 4: Further Material & Robot Lab Test for all projects.



© 2014 MArch UDII | BPro UCL. All rights reserved

bottom of page