Week 7: Abstraction

Thursday, February 18th Overview


  • Reading Discussion: 3:30-4:20

We'll first go around the group. Each participant will share 1 principle that most strongly resonated with you, either because you felt it was a powerful design practice, or because you felt there were limitations to it. Principles are listed below:

Construction Kits for Kids:

Design for Designers

Low Floor and Wide Walls

Make Powerful Ideas Salient – Not Forced

Support Many Paths, Many Styles

Make it as Simple as Possible – and Maybe Even Simpler

Choose Black Boxes Carefully

A Little Bit of Programming Goes a Long Way

Give People What They Want – Not What They Ask For

Invent Things That You Would Want to Use Yourself

Iterate, Iterate – then Iterate Again


This paper focuses on making programming languages that are learnable for young people. What role does learnability play in the process of creating visual art and design? How might these principles change if they focused on supporting art and design rather than making programming easier to learn?

The reading focuses on the relationship between designing programming abstractions and designing an environment through which to express those abstractions. How (if at all) did these readings alter your perspective on user-interface design as discussed in last week's class?

Break: 4:20-4:30

Computational Abstractions for Creative Expression: 4:30-5:10

Walking through setting up a Processing Programming Library Template

Download and install the Eclipse Java IDE. It should run on Mac, Windows and Linux OSes.

  • Introduce week 5 assignment: 5:10-5:20


Assignment

  • Create a Processing library: due by 6pm on February 25th

Create a new processing library that is targeted at helping people to perform a specific task or series of operations. You can choose to extend one of your previous course assignments into a library (e.g. a color picker library that enables people to incorporate your color picker into their projects, or a patterning design library that enables the creation of different tilings or repeating patterns). You can also design a library with entirely new functionality if you choose.

The library should contain at least one class with a set of public functions and properties.

Your library also must contain at least 2 example files with comments demonstrating its applications.

After completing your library, write a short reflection touching on the following questions:

  • What is are the goals of your library? (What is it intended to help people do and why?)

  • What approaches do you provide for people to accomplish those goals (i.e. what are the methods you expose to the person using the library)?

  • What key terminology did you use for your library (i.e. function, class, and property names). How did you select this terminology?

Upload your library and reflection to Github by 6pm on February 25th.