## Welcome and Introduction; Practical Computation; "Hello Rhino-Python"

We will give an overview of the class, frame the topic of practical computation by introducing the concepts of algorithm and data structures through the use of a simple toolkit, and set up the infrastructure to begin coding in Rhino-Python.

Week 1

## Algorithmic Thinking; Structure of Code I

We continue using the geometric constructions using a simple toolkit of compass and straightedge to illustrate algorithmic thinking. The structure of code topics covered will include control flow statements, code organization structures, and lists. We will then return to the compass straightedge constructions and understand how to translate that into code.

Week 2

## Vectors; Transformations

We will start with the geometric constructions of planar transformations to illustrate some of the difficulties translating the functionality of this simple toolkit into code. We will introduce vectors and show how this can help us represent a large class of transformations.

Week 3

## Lines, Planes; Structure of Code II; Midterm Project

We will continue our treatment of vectors and to see how they can be used to represent the objects of lines and planes. In the workshop, we will look more in depth at properties of lists and how they interact with loops and within functions. Lastly, the midterm project will be described.

Week 4

## Structure of Code III; Midterm Project Check-in

The structure of code workshop will introduce the basics of reading and writing to a file. We will then focus specifically on how to parse tabular data files, understood as reading a given file and producing a data structure required to accomplish a larger goal.

Week 5

## Midterm Review; Curves and Surfaces

In this class, we will be learning how to parametrize curves more generally in 3D. We will also learn how to control a drawn curve in Rhino by accessing its parameters. We will start the topic of parametrizing surfaces by looking at the specific class of surfaces called graphs. Then we will introduce cylindrical and spherical geometries and expand the surface representation to those parametrized with those coordinate geometries.

Week 6

## Other Coordinate Geometries; Surfaces

We continue our treatment of surfaces, showing how other coordinate geometries can often simplify a parametric description to one that includes a rectangular domain. We will also show a number of examples of surfaces including graphs, planes and other non-graph surfaces. The in-class exercise will involve modeling and panelizing surfaces, which will illustrate how different ways of modeling determines different parametrizations and therefore different panelizations given by the isocurves.

Week 7

## Structured Meshes; Aggregation and Tiling

We will start our treatment of meshes by providing specific examples of situations in which structured meshes play a role. In particular, we will revisit transformations and see how the concepts of basis, coordinates and coordinate systems underly most strategies for aggregation and tiling.

Week 8

## Unstructured Meshes; Delaunay Algorithms and Implementation

We continue our treatment of meshes, and discuss situations in architectural practice where structured and unstructured meshes play a significant role. We introduce the key property of the Delaunay triangulation and algorithms which center on achieving this property through iteration (Bowyer-Watson and Lawson). An implementation of Delaunay triangulation will focus on how to build supporting classes.

Week 9

## Final Deliverables; Course Evaluation

The Final Stretch