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.
Download a zipped version of the Processing library template: here.
Follow the instructions for setting up and compiling the template (starting at option B) here.
Look at the example library provided on the course GitHub for reference here.
Student Examples from last year: Waveform library by Ari Gilmore, SoundBrush library by Sihwa Park
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.