ARCH-2347 2014 Fall

Course ARCH-2347
Date 2014/09/14
Learning Objectives
  • Instructor
  • Time and Place
  • Course Description
  • Objectives
  • Computational Tools
  • Evaluation
Uses Tool(s)


Joy Ko

Time and Place

  • Weekly Class: Monday, 9:40PM-12:40PM, BEB Rm 319
  • Office Hours: by appointment in BEB Rm 324

Course Description

In architectural practice, a working knowledge of design computation has gone from "nice to know" to "need to know", and yet many academic and professional institutions struggle to keep pace. At best, resourceful architecture students and practitioners piece together their computational skill sets in an ad-hoc manner, adopting fragmented sources developed in contexts unrelated to architectural design. This course is designed to address this unmet need by teaching foundational computational concepts tailored specifically towards architectural design. An understanding of the fundamental structures of design computation -- including the structure of code and algorithms for computational geometry- will prepare students to survive in the new reality of digital practice. The specific content of this course will be carried through a discussion of practical situations that architects commonly encounter, and in which computation has proven to be a powerful ally to generate effective solutions. These topics will evolve based on existing technology and challenges in practice, and will be drawn from topics such as aggregation, decomposition, complexity, optimization, fabrication, interoperating, exploration and collaboration.


  • Introduce the foundational computational (and mathematical) principles from an architectural design point of view.
  • Engage in code, which is the language to convey process in computation. Understanding and engaging code is a challenging task for many and it requires a specific mind-set.
  • Motivate these concepts using practical situations that architects commonly find themselves in practice where computational literacy has proven critical.

Computational Tools

  • Rhino - 3D Modeling Environment. Students are expected to have a good working knowledge in this environment before entering into this class.
  • Grasshopper - Visual Programming Environment Plugin for Rhino. This environment effectively transforms Rhino into a reasonably powerful parametric modeler.  This will only be used for in-class demos and will neither be taught nor supported; however, this is a well-documented environment and could be a good step up to scripting for some students.
  • Python Scripting – General Purpose Scripting Language. This language is a good entrée into code, since it has high-level constructs; moreover, it is now possible to script in multiple CAD environments using Python.
  • (Python) Library - Geometric Library for Python Scripting. This is a library (developed with Kyle Steinfeld) with functionality specific to computational design in architecture. Scripts can be opened either as standalone scripts in Rhino or as Grasshopper definitions.


Evaluation will be based on active participation, the completion of all assignments, and the successful implementation of the midterm and final assignment. A significant portion of the material for this course will be presented only in class, so students are expected to regularly attend lectures.

Grading will be broken down as follows:

  • Class Participation and Weekly Assignments 25%
  • Midterm Project 25%
  • Final Project 50%.


Lectures and in-class workshops will be posted on the Class Dropbox.

In addition here are some online sources:

  • Documentation for Python at
  • Documentation for can be accessed at
  • How to Think Like a Computer Scientist: Learning with Python .PDF