LCC 6310 Computation as an Expressive MediumOverviewSyllabusBackgroundAI & ArtWorkFaçadeTerminal TimeOffice Plant #1Combine AI research and artSome directionsIntroduce yourselvesProgramming languagesA simple Java program“Human readable” is relativeJava VM assembly codeObject Oriented vs. Procedural LanguagesA couple of Java’s relativesSmalltalk 80Slide 20C++JavaThe virtual machineSteps for running a Java programStructure of Java programsSample applicationJava file and class namesCompiling HelloWorldExecuting HelloWorldObject Oriented ProgrammingPreviously...A ClassFieldA ConstructorA MethodAnother ClassOOPLCC 6310Computation as an Expressive MediumLCC 6310Computation as an Expressive MediumLecture 1Lecture 1OverviewOverview•Go over the syllabusGo over the syllabus•Brief introduction to me and my Brief introduction to me and my workwork•Art, programming and JavaArt, programming and JavaSyllabusSyllabusBackgroundBackground•Ph.D. in Computer SciencePh.D. in Computer Science•Expressive AI: Artificial Intelligence-based art and entertainment•Worked in industrial research labs (Intel, Worked in industrial research labs (Intel, Tektronix) doing HCI researchTektronix) doing HCI research•New at Georgia Tech – arrived in JanuaryNew at Georgia Tech – arrived in JanuaryAI & ArtAI & ArtEdward IhnatowiczThe Senster, 1970Black and White, 2000Peter Molyneux (Lionhead)WorkWorkTerminal Time – interactive video FaçadeFaçade – interactive drama – interactive dramaOffice Plant #1 – robotic sculptureFaçadeFaçade•Dramatic world inhabited by computer controlled characters (believable agents)•The user (player) plays a protagonist within the story, first-person point of view•The player experiences a story with a dramatic arcCollaborator:Andrew Stern, independent artist and researcherTerminal TimeTerminal TimeGoal trees (ideology)Historical eventsAudio-visualelementsAudience feedbackCollaborators:Paul Vanouse, Art Department, SUNY Buffalo Steffi Domike, Design Department, Chatham CollegeOffice Plant #1Office Plant #1•Creates a background Creates a background presencepresence•Sorts incoming email into Sorts incoming email into social and emotional social and emotional categoriescategories•Behavior is a function of Behavior is a function of the email receivedthe email receivedCollaborator:Marc Bohlen, Media Studies, SUNY BuffaloCombine AI research and artCombine AI research and artAI methods and technology suggest new audience experiences…Artistic practice AI researchExpressive AIWrestling with meaningful human experiences suggests new AI research directions…Some directionsSome directions•I’m someone to chat with about…I’m someone to chat with about…•Interactive story (particularly procedural approaches)•Robotic sculpture •Video games as a cultural practice (design and technology)•Meta-art (generative systems)Introduce yourselves Introduce yourselvesProgramming languagesProgramming languages•Abstract, “human understandable” language for Abstract, “human understandable” language for telling computer what to dotelling computer what to do•The abstract language must be translated into the The abstract language must be translated into the low level language understood by the machinelow level language understood by the machine•This translation is accomplished by an interpreter This translation is accomplished by an interpreter or compileror compiler•We will be learning the compiled language JavaWe will be learning the compiled language JavaA simple Java programA simple Java programclass PrintLoop { public static void main(String[] args) {for (int i = 0; i < 10; i++) System.out.println("i = " + i); } }Just prints the numbers 0 to 9 on the screenHuman readable?!?“Human readable” is relative“Human readable” is relativeclass PrintLoop { public static void main(String[] args) {for (int i = 0; i < 10; i++) System.out.println("i = " + i); } }Java compiler translates this into…Java VM assembly codeJava VM assembly codepublic static void main(java.lang.String[]); Code: 0: iconst_0 1: istore_1 2: goto 30 5: getstatic 8: new 11: dup 12: ldc 14: invokespecial #23 17: iload_1 18: invokevirtual #27 21: invokevirtual #31 24: invokevirtual #34 27: iinc 1, 1 30: iload_1 31: bipush 10 33: if_icmplt 5 36: returntest.PrintLoop(); Code: 0: aload_0 1: invokespecial #43; 4: returnObject Oriented vs. Procedural LanguagesObject Oriented vs. Procedural LanguagesProcedural (e.g. C)Procedural (e.g. C)•We create some data representing an image (array of pixels to draw on the screen)•We write a procedure than can be passed the image and will draw itObject Oriented (e.g. Object Oriented (e.g. Java)Java)•We create a class that contains an image AND a routine draw it•The data and the behavior (ability to draw) are in one "container"A couple of Java’s relativesA couple of Java’s relatives•Smalltalk 80Smalltalk 80•Alan Kay and the Dynabook (PARC)•C++C++•Managing big C programs: Bjarne StroustrupSmalltalk 80Smalltalk 80•Alan Kay and the Dynabook (PARC)Alan Kay and the Dynabook (PARC)•Developed idea of a general purpose computer to be Developed idea of a general purpose computer to be used by normal people!used by normal people!•Highly interactive interfaceHighly interactive interface•Included concept of windows!Included concept of windows!•Smalltalk 80 – end users could create their own toolsSmalltalk 80 – end users could create their own toolsSmalltalk 80Smalltalk 80•Includes objectsIncludes objects•Objects contain data and proceduresObjects contain data and procedures•Procedures in objects are called methodsProcedures in objects are called methods•All computing is done by sending a message to an All computing is done by sending a message to an object asking it to perform one of its methodobject asking it to perform one of its method•Objects are defined by classesObjects are defined by classesC++C++•Managing big C programs: Bjarne Managing big C programs: Bjarne StroustrupStroustrup•Started as "C with Classes" idea Started as "C with Classes" idea borrowed from Simula 67 & Smalltalkborrowed from Simula 67 & Smalltalk•GoalsGoals•Organize programs as classes with inheritance•No performance penalty compared to C•Thus somewhat dangerous!!!•C++ is converted into CJavaJava•Designers started with
View Full Document