# Modules

## Fundamentals

- Static Form

Introduction to Processing. Basic syntax, sketch structure, function execution. Drawing methods.

**Structure 1. Shape 1. Color 1.**
- Parameterization

Data and state. What we know. Types and values. Variables. Mathematics to change state. Using variables to describe the data of a design proposition.

**Data 1. Math 1.**
- Rules and Decisions

Conditional logic and execution. State machines.

**Control 1.**
- Multiplicity

Loops and arrays. The naming problem. Indexing. Parallel arrays used to describe multiple properties.
- Dynamic Form and Associativity

Using pseudocode to describe computational processes. Breaking down problems into something computable. More mathematics. Tying states together so geometries are associated. Breaking down a process into repeated chunks of instructions. Giving names to procedures and sets of instructions.
- Multiplicity 2: Objects

Basics of creating and using classes and objects.
- Defining classes of objects.
- Referencing with variables and arrays.
- PVectors
- ArrayLists
- Inheritance
- Polymorphism

- Images and Typography
- Coordinate Systems
- Transformation methods
- pushMatrix() … popMatrix()

- 3D

Working in three dimensions.
- PeasyCam
- Geometry: beginShape() … endShape()

- Visualization
- Rendering techniques

- Files and Formats
- Reading and writing files
- Parsing existing file formats

## Intermediate

- 3D Geometry

Surfaces, meshes, mathematically driven surfaces, NURBS, operations to change, parameterization of, etc.
- Pseudophysics
- Particle Systems
- Spring + Point Mass Systems

- Cellular Automata
- Fractals
- Distributed Systems
- Agents
- Behavior

- Artificial Life
- Artificial Intelligence
- Processing Libraries
- Algorithms
- Sort
- Geometric

- Data Structures
- Trees
- Graphs
- Queues
- Lists
- Dictionaries

- Search
- Tooling

Interface design, making something presentable to the world.
- Intro to Computational Geometry
- Mesh Library (Voronoi, Delaunay, convex hull)

- Generative Form
- Growth rules
- Creating a semantic model

## Advanced

- Semantic Modeling
- Functional Programming
- Recursive Data Structures
- Physical Computing : Hardware
- Evaluation and Optimization
- Random Search
- Genetic Algorithms
- Simulated Annealing

- Neural Networks
- Advanced Computational Geometry