Title: Programming For Artists
1MFA Computational Studio Arts
Programming For Artists Term 2
2- This term will predominantly be about your
personal projects. - Defining your project and identifying solutions
- Discovering
- WHAT you are going to do
- And HOW you are going to do it.
3- A project brief (in on 1st February)
- A project (finished and presented last PFA class
of the term) - A 500 word report on the project
- (hand in and put on web by last session)
4Software project and a 500 word report.
On the following pages Ive written an idea for a
project. This project is called Museum. its
shows questions you might ask to kick start a
project. Whatever you do, all of you are required
to write a 500 word report (by the last day of
term) and a 1 page brief stating what your
project is about and stating broadly how you
intend to achieve it. You must complete this
brief by week 3. (1st Febth) This term is short
so you need to work efficiently and rapidly.
5Museum
  What does the word home mean to you? How
can you relate its meaning to others in terms
of words, interactive gestures, sounds or
symbols? The museum project (or any other
project you choose) will consolidate the skills
you have acquired so far. You can complete the
project in Java or Processing, (Or Arduino if you
have the skills), or a combination of these if
you can link them effectively. Â Does the
notion of the museum suggest something personal
or political to you how can you express this?
6Â Â How often do you visit museumss? Did you
visit them a s a child\? Will that experience
inform your work? Â Would you consider linking
your work to world events, could you use data
from news or statistics relating to the objects,
ideas, cultures and countries represented in the
museum to somehow inform and define the
program? Â Will your final piece be a story, a
digital museum, a virtual installation, a new
sort of collage? A documentary work, a game? Will
you use random elements, images grabbed from the
web or images you have generated
algorithmically? Â Have a look at the Processing
reference pages could you tackle a 3D
project? Â Casey Reas (co initiator of
Processing) advises his students do the
following
7Explore ideas and compositions on paper and/or
software tools such as Photoshop and Illustrator
before beginning to code. 1. Make lots of
thumbnail sketches of your ideas2. Make refined
drawings from sketches (on paper or in
software)3. Create rough media elements
(drawings, photographs etc) 4. Realize the
sequence in code, isolate each element and add
one by one5. Refine the media elements and
code 6. Hand these in with your finished work
8Your code should be clear and well documented
throughout. Acknowledge the authorship of any
code you have used from another source.
9500 word project report
Â
Write a 500 word explanation of your work,
covering its technical and cultural aspects.
Describe the challenges you met and any other
artists or projects that informed your piece.
Include a bibliography citing your sources (both
paper and electronic). Hand in your project
report on paper on presentation day the last
class of this term, also, please put this report
on the web with a link from your PFA page, as
well as a link to an applet, with code ( if your
project does not work in applet form please
provide a link to your code and some supporting
images)Â .
the bibliography is not counted as part of the
500 words but dont forget it
10- Term 2 will consist of
- quick Tutorials and interim presentations
-
- shorter taught elements
- This is the general outline for term 2
11 Week I programming with sound/ rapid
essence piece/discuss projects Week 2 field
trip to Horniman Museum Week 3 Group Tutorial /
present any ideas, show trip materials recap of
drawing in Java/simple buttons. Week 4 Quick
interim presentations project briefs must be
ready/Java GUIs/ threads --------------------- -
Reading Week 5 ?-need to verify?? Week 6
GroupTutorials//Java Documentation/ Week 7
interim presentations/getters/setters/ Week 8
Tutorials/databases intro/ Week 9 Interim
presentations/ Week 10 Tutorials /get on with
projects Week 11 Final presentation Hand in
work (and written work)
12Your Project
- Week 3 First interim, project brief and
presentation - Tell us
- What your project is about
- How you are going to do it (this may be a broad
description at this point) - What you have done so far
- Show any sketches, source materials, plans,
- inspirations etc
- Hand in no more than a one page brief with
- this information.
13Analysis and design
Beginning to design your software
Last term (ppt 2) we touched upon the UML or the
Unified Modelling Language, a general-purpose
modelling language that includes a graphical
notation used to create an abstract model of a
system, referred to as a UML model. This can be a
useful way for you to conceptualize your progam.
14Name of class
Bike
colour size speed gear
State Which we can think of as attributes or
qualities
Behaviours These are called Methods in Java and
functions in Processing and C
break() changeGear() speedUp() changeColour()
This is a UML diagram
15Before we created a UML diagram we first
thought About the sort of object we were
modelling, in the previous case this was a
bicycle. Most of your projects will not be of one
simple real world object like a bicycle, but you
can still break your project down into the
qualities it will have and the behaviours it will
trigger. First you might find it helpful to
brainstorm, to generate broad Ideas, list them
and then sift from the general to the specific
16Once you have uncovered a clearer idea of your
project from your brain storming session, you can
write a description of What you want to do. This
is an example Id like to create some
software that shows a map of London, Somehow
users will be able to click on the map and see
all the places I have ever lived in. A picture
might appear of a house or some text describing
the place. This is like a MISSION STATEMENT
or high concept for your program. Like a
Hollywood film pitch you should be able to
describe it in one or two sentences. Drawing
rough sketches should help you to visualise how
this process might really work.
17link
http//cmap.ihmc.us/
18This can be a useful tool for brainstorming And
looking at your ideas in a different way
19Once you have an idea you are happy with, the
next stage could consist of narrowing down the
functionality you want for your system. Some
books describe this as identifying Nouns and
Verbs. Go back over your description and see if
you can identify the nouns and the verbs, nouns
are descriptions of things, such as a
map, verbs describe actions, such as
shows. Nouns
Verbs
Map Image Place/location House Text
Displays Click Appear Describing moves
20Even if you make a couple of errors (it is
sometimes difficult to work out if something is
an attribute or an action) your list should make
it easier to begin designing the software. Nouns
are described as approximating classes,
Verbs Help us to see the sort of methods we need.
We are still getting a general picture, perhaps
some of the things in my list are actually the
same like Image and Map?
21MapImagePlace/locationHousetextWhen I look
at my description and my list of nouns I think
that the Map is actually serving a different
purpose from the images that will represent my
various homes, for starters I know that the map
will not changebut the images of my homes will,
so I will keep that separation, however house
is covered by the images, and texts, so I will
not have a class called House.
22MapImagelocationtext
This is now a more concise description, I can
begin to think About what these classes will do,
I could even write down CRC cards for each
class.. CRC stands for Class/Responsibilities/Col
laborators, It is a system for establishing
interactions between Classes. In the case of
really complicated programs these cards are
sometimes used by developers to support role
play, different user scenarios are enacted to
work out the activity that a class has to
support.
23Template for a CRC card
Collaborators
Class name
Responsibilities
24Collaborators
Class Name
Map
Collaborators means classes that will use this
class, I think the map will just be a base image,
I dont see it interacting With other classes so
I will leave this blank for now. At this point
Im not convinced I need a separate class for
this
Responsibilities
will display a map of London
25Collaborators Will work with the Image and
Text Classes. Location objects will be on top of
the Map but not interacting with it.
Class name Location
Responsibilities Will trigger the display of
images and texts
26Some books recommend actually using real world
(yes real!) Index cards for each class if it
helps to clarify things why not give it a whirl?
If it makes you feel stuck and overly confused
dont use it! The best advice I can give you is
to start simply and add functionality one stage
at a time, see class 4, term 1 on designing
methods, the same principals will help you (at
this stage) in designing a whole program, start
simply and design iteratively.
27To save time now Ive just written down the
class names and their responsibilities
(I could also put them in a concept map. It may
make things clearer)
28Map will display a map of London, a method I
will call in draw() or perhaps conditional to a
button being pressed?
Image will have a method to dynamically display
an image of
a home I have lived in, will be dependent upon
Location class to trigger its method.
Location this will create an object like a hot
spot on the map
Maybe a sort of invisible button? Its methods
Will trigger methods from the Text and Image
classes.
Text will have a method to dynamically display
some text about each location. Dependent on
location class.
29Now I can go back to designing the UML diagrams
with a much clearer idea of what my classes are
about
Name of class
Text
State Which we can think of as attributes or
qualities
Name description
Behaviours
writeText()
Remember my VERBS for the project?
30In the previous example I wrote a method
stub Called display() This is a placeholder for a
public method, I havent written any
implementation yet. This part of software design
is as Important as the actual creation of code.
It will save you time if you go through this
process for each class.. Honest. PS In
Processing you may not have to worry about access
modifiers like public, by default Processing
makes methods visible between classes.
31I remembered that I had already written an
invisible button class A few weeks ago, this
would be excellent as the hotspot I need for my
Location class. It has methods update()
release() and display(). Ive also realised
Image is not a good name for a class, for
reasons you can all guess, so Im going to call
that class homeImage instead.
32You can refactor your classes if you decide to
change things by for example adding extra
functionality. Refactoring describes The
maintenance work that may result from the
restructuring of an existing class, refactoring
ensures that the class still has a cohesive and
good design. This usually means cutting down
overgrown classes into different classes rather
than maintaining one huge class.
33Broken into 3 further classes
34The basic shape is there, now I have to work out
how to make it all a bit smoother. Id like it to
look more sophisticated..maybe I could add
sounds? I would definitely want to refine the
images and work on the texts.. Theres still a
lot that can be improvedbut I know quite solidly
what Im doing nowwith help from a simplified
UML and CRC there are other design methodologies
you could research, but youll probably end up
inventing your own
35- The main thing is not to get LOST.
- Dont feel you have to nail down every little
detail as Bruce Eckel puts it in - Thinking In Java (997-1020)
- Move quickly through analysis and design to
implement a test of your proposed system - Some things about your program wont reveal
themselves until you start coding
36Your Project
Look at examples of work on this UCLA
Interactivity class website
http//classes.dma.ucla.edu/ An iterative
process of experimentation and revision is the
key to being successful
Interesting?
37Remember Always look at the Processing reference
pages (under Help reference) and at the
sketchbook examples. They are the best source of
help, find out the signature of Any methods you
want to use, (ie, what arguments do they need
ints, Strings etc, and how many) If you are
using Java look at the java API
http//java.sun.com/javase/6/docs/api/ (this is
for Standard Edition 6) And the java sun
tutorialshttp//java.sun.com/docs/books/tutorial/
38 Field trip to Horniman Museum
http//www.horniman.ac.uk/
39Meet at 1030, main entrance
Follow the signs, you go into the park to get to
the main entrance
By bus176, 185, 197, 356, P4 - stop outside the
Museum and Gardens on London Road122 - stops on
Dartmouth RoadP13 - stops on Underhill Road363
- stops on Sydenham Hill Road    Buses from
Forest Hill - Transport for London map (PDF)
40- Bring cameras
- Drawing books
- Note books
- Something to record sound ?
- Its up to you
- But please generate lots of images. thoughts,
- questions, answers, materials, i.e
- Document your experience
Youll use those materials during my classes and
you may use them for your final project
41- The point is to ask questions of this site, to
bring a criticality to it, which doesnt mean
just attacking it, but looking for its
assumptions, structures, stories, positionsand
questioning your own assumptions. - Questions to ask of the site
- What is its relationship to technology?
- What does it include as technology?
- What do you include as technology/
- How are the artefacts taxonomised?
- What about the wider site the grounds, the tea
shop the gift shop? - Do they tell a story?
- How will you taxonomise, organise or document
your own experience of the site?