Open for Enrollment

You can also start immediately after joining!
Join Now

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Go at your own pace
5 Sessions / 8 hours of work per session
Premium membership $20/month (Preview session 1 free)
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Programming, Scripting, Python, Algorithmic-design, Form
Open for Enrollment

Computing Form and Shape: Python Programming with the Rhinoscript Library

Open for Enrollment
You can also start immediately after joining!

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Go at your own pace
5 Sessions / 8 hours of work per session
Premium membership $20/month (Preview session 1 free)
Included w/ premium membership ($20/month)
Skill Level
Video Transcripts
English, Spanish; Castilian, Chinese, Portuguese
Programming, Scripting, Python, Algorithmic-design, Form
Course Description

This course explores the role of computation in the conception and representation of form and shape. Learn Python programming language as a creative medium for design, architecture, art and beyond. Learners will develop, analyze and critique algorithmic approaches to digital drawing, modeling, and projection. Specifically, the powerful and robust Python Rhinoscript library will be introduced and explored in detail. This library allows Rhinoceros, the popular 3D graphics and computer-aided design (CAD) modeling software to be scripted with text-based code. Scripting in this manner can automate existing processes and can lead to novel kinds of relationships, and orders of shape and form.

Architects, sculptors, and any artist or designer interested in either fabrication or communication of form and shape will recognize the importance of projection–the the transformation of three-dimensional geometry onto a two-dimensional picture plane, cut sheet, paper, or screen. As a result, this course focuses not only on the generation of geometry, but the output of geometry.

In parallel to extending learners' technical proficiency, this course will touch on the conceptual and theoretical implications of algorithmic design. Each of the five lessons will build upon each other to develop an understanding of the Python language, algorithmic strategies, and digital geometric craft (the interrelated structures and topologies that make up digital models).


This course is in adaptive mode and is open for enrollment. Learn more about adaptive courses here.

Session 1: Procedural Points, Python Basics, and Rhinoscript (October 6, 2023)
Why design algorithmically? Answer this question and learn the basics of Python syntax and organization of the Rhinoscript library in this session. Create, run, and edit your first Python script while learning all about point coordinates and point objects through real-world demonstrations where we'll create procedural point spirals, gradient point clouds, and more.
11 lessons
1. Introduction, Welcome and Resources Available
2. How to Create and Run a Script from Rhino
3. First Python Script: Variables, Math, Code as Sequence of Operations
4. Comments, Calling Functions and the Rhinoscript and Random Libraries
5. Algorithm for Automation: A Counting Loop
6. Conditional Statements and Logic Equations
7. Incorporating Geometric Parameters With Conditions and Loops
8. Logical Adjustments to Loop Algorithm (Premium Exclusive)
9. High-res Image Output and Project Advice (Premium Exclusive)
10. What Lies Ahead, Example Images
11. Reflecting on this Session
Session 2: Curves vs. Curvature (October 13, 2023)
What is the nature of a curve? In this session you'll learn multiple methods for creating and editing curves. You'll also explore concepts such as the “blip”, and the capacity of a set of curves to collectively define space. Example tutorials will show you how to create interpolated curves of various degrees before and after sorting; best fit circles; curve parameters, evaluating curves, and extraction of curve points for the purse of editing curves with looping.
11 lessons
1. A Deeper Dive into Python Random Library (Premium Exclusive)
2. Random Seeds and Other Random Functions (Premium Exclusive)
3. Lists and Touples in Preparation for Rhinoscript Curve Functions (Premium Exclusive)
4. Using a “for” Loop to Step Through Lists, Element by Element (Premium Exclusive)
5. Creating Simple Curve Objects with Random Values Using “addInterpCurve” Function (Premium Exclusive)
6. Nesting Loops to Create Many Curves with Random Values (Premium Exclusive)
7. Creating Functions: Curves Within a Volume and Flat Curves (Premium Exclusive)
8. Two “Blip” Strategies (Premium Exclusive)
9. A Third “Blip” Strategy: Modifying a Curve After Creation (Premium Exclusive)
10. Exporting Perspective Image to Adobe Illustrator for Formatting (Premium Exclusive)
11. Session Two Conclusion (Premium Exclusive)
Session 3: The Depth Of A Surface (October 20, 2023)
What is the nature of a surface? In this session you'll learn techniques for creating and editing surfaces beginning with the Rhinoscript functions that correspond with the most commonly used surface tools in Rhinoceros: loft, sweep1 and networksurface. Example tutorials will go into lofting and list-management and rebuilding surfaces in sequence.
7 lessons
1. Who is the “User” and Why Would we Program for the “User” in Mind? (Premium Exclusive)
2. Using “GetObjects” Function to Incorporate User Input; Extruding Curves (Premium Exclusive)
3. Extrude Curves to Create Consistent Surface Areas (Premium Exclusive)
4. Comparing Curves from Two Sets for Lofting and Checking User Input (Premium Exclusive)
5. Using “zip” Sorting to Find the “Best” Match between Curves and Target Points (Premium Exclusive)
6. Algorithmic Strategy: Adjust Until Geometric Condition Met, Creating a Striated Surface (Premium Exclusive)
7. Session 3 Conclusion, Advice for Project (Premium Exclusive)
Session 4: Deconstruction Of Surfaces, The Genesis Of Lines (October 27, 2023)
How can a surface generate lines? How can lines represent a surface? This session begins with an important premise: a surface is a 2-D space organized in terms of 'U' and 'V' axes that can be treated similarly to 'X' and 'Y' axes in Cartesian space. This allows drawing “in” a surface, trimming a surface based on U/V domains and the evaluation of surfaces based on 2-D parameters. Demonstration: Growing lines based on surface normals; surface to surface lines.
10 lessons
1. Session Overview: The Nature of Digital Surfaces (Premium Exclusive)
2. Primacy of Lines: Learning from Engraving and Cartography (Premium Exclusive)
3. Thinking of Surfaces as 2-D Space, Functions for Evaluating Surfaces (Premium Exclusive)
4. Evaluating Surface using U and V Coordinates (Premium Exclusive)
5. Constructing a Grid on a Surface (Premium Exclusive)
6. Curves at Surface Normal, aka Porcupine Surface (Premium Exclusive)
7. Recursive Algorithms and the Design of a Tree Function (Premium Exclusive)
8. Roaming Lines, Random Paths Along a Surface (Premium Exclusive)
9. Note About Assignment: Export Vector Formats for Editing (Premium Exclusive)
10. Conclusion: Authorship and Creativity (Premium Exclusive)
Session 5: The Project Of Projection (November 3, 2023)
How can projection serve as a creative act? In this session you'll explore methods for geometrically constructing perspective computationally and use projective methods for the creation of new forms and shapes. Example tutorials will include constructing a set of perspectives using surface-plane intersection.
9 lessons
1. Re-framing the Term, “Representation” (Premium Exclusive)
2. Geometric Perspective (Premium Exclusive)
3. Thinking about and Preparing for Scripting Perspectives (Premium Exclusive)
4. Algorithmic Strategy for Scripting Linear Projectors and Surface (Premium Exclusive)
5. Managing Layers with Respect to Geometric Information (Premium Exclusive)
6. Mapping from One Surface to Another (Premium Exclusive)
7. Extra Example: Cylindrical Projection Using Rail to Receive Lines (Premium Exclusive)
8. Notes and Advice on Project: Take Charge of Your Methods (Premium Exclusive)
9. Congratulations, Now Keep Coding! (Premium Exclusive)
Show off your Certificate of Accomplishment

Verify Your Achievements
Whenever you complete a course as a premium member, you can earn a verified Certificate of Accomplishment. These certificates are proof that you completed an online course on our platform.

Easily Shareable
Using its unique link, you can share your certificate with everyone from future employers and schools, to friends, family, and colleagues. It's the perfect tool to help you land that new job or promotion, apply to college, or simply share your achievements with the world.

Learning Outcomes

Below you will find an overview of the Learning Outcomes you will achieve as you complete this course.

Instructors And Guests
What You Need to Take This Course

Students should be comfortable with Rhinoceros modeling software. No computer programming knowledge is required, though students who are proficient in another programming language or have dabbled in Python will find most of the content new and useful.

  • Software:
    • Rhinoceros modeling software (latest build, version 5.x) is required with either an education or professional license on either Mac or Windows operating system.
    • If using Mac OS, an external text editor is required.
    • A programming-specific text editor is recommended: Komodo Edit or SublimeText are excellent options.
    • Rhinoceros is packaged with Iron Python automatically. No additional installation of Python is required.
Additional Information

Please note: Taking part in a Kadenze course as a Premium Member, does not affirm that the student has been enrolled or accepted for enrollment by Rhode Island School of Design.

Peer Assessment Code of Conduct: Part of what makes Kadenze a great place to learn is our community of students. While you are completing your Peer Assessments, we ask that you help us maintain the quality of our community. Please:

  • Be Polite. Show your fellow students courtesy. No one wants to feel attacked - ever. For this reason, insults, condescension, or abuse will not be tolerated.
  • Show Respect. Kadenze is a global community. Our students are from many different cultures and backgrounds. Please be patient, kind, and open-minded when discussing topics such as race, religion, gender, sexual orientation, or other potentially controversial subjects.
  • Post Appropriate Content. We believe that expression is a human right and we would never censor our students. With that in mind, please be sensitive of what you post in a Peer Assessment. Only post content where and when it is appropriate to do so.

Please understand that posts which violate this Code of Conduct harm our community and may be deleted or made invisible to other students by course moderators. Students who repeatedly break these rules may be removed from the course and/or may lose access to Kadenze.

Students with Disabilities: Students who have documented disabilities and who want to request accommodations should refer to the student help article via the Kadenze support center. Kadenze is committed to making sure that our site is accessible to everyone. Configure your accessibility settings in your Kadenze Account Settings.