TypesAnimationovertheInternet ConcurrentAlgorithmsandData GiuseppeF.Italianoy GiuseppeCattaneo UmbertoFerraro VittorioScarano AlgorithmsanddataTypesAnimationovertheInternet).Amongthefeaturesofthis systemarealoweortrequiredforanimatingalgorithmiccode,andthepossibilityof WepresentadistributedalgorithmanimationsystemcalledCatai(forConcurrent Abstract embeddinganimationclientsinstandardjava-enabledwebbrowsers.webelievethistobe agoodcompromisebetweentwodierentviewpoints:theprogrammer'sperspective,which typicallyincludesthegoalofanimatingecientlyandunobtrusivelyagivenalgorithmic code,andtheuser'sperspective,whichcanbenetfrominteractive,easy-to-use,distributed 1 Introduction andcooperativeinterfaces. Algorithmanimationisaformofsoftwarevisualizationthatusesinteractivegraphicstoenhance thepresentation,developmentandunderstandingofcomputerprograms.systemsforalgorithm implementationofalgorithms,andperformancetuninganddebuggingoflargeandcomplex softwaresystems. totheirrelevanceinmanyareas,includingcomputerscienceeducation,design,analysisand animationhavematuredsignicantlyinthelastdecade[2,3,6,8,9,28,29,30],perhapsdue codeathandand,insomeinstances,evenrequirewritingtheentireanimationcodeinorder cationsinmind.however,manyofthesesystemsrequireheavymodicationstothesource toproducethedesiredalgorithmvisualization.thus,auserofthesesystemsnotonlyshould Severalalgorithmanimationsystemshavebeendevelopedwithoneormoreoftheseappli- investaconsiderableamountoftimewritingcodefortheanimationbutalsoneedstohavea signicantalgorithmicbackgroundtounderstandthedetailsoftheprogramtobevisualized. Thisisnotdesirable,especiallywhenalgorithmanimationistobeusedinprogramdevelopment anddebugging. DipartimentodiInformaticaedApplicazioni\R.M.Capocelli",UniversitadiSalerno,Italy. Council.PartofthisworkwasdonewhilevisitingTheHongKongUniversityofScience&Technology.Email: searchgrantfromuniversity\ca'foscari"ofvenice,andbygrantsfromcnr,theitaliannationalresearch portedinpartbyeuespritlongtermresearchprojectalcom-itundercontractno.20244,byare- ydipartimentodimatematicaapplicataedinformatica,universita\ca'foscari"divenezia,italy.sup- italiano@dsi.unive.it.url:http://www.dsi.unive.it/italiano.
testingandunderstandingcomputeralgorithms(seealso[25]). mainfactorslimitingthediusionofanimationtechniquesasasuccessfultoolfordebugging, ThispaperdescribesanalgorithmanimationsystemcalledCatai(forConcurrentAlgorithmsanddataTypesAnimationovertheInternet).Oneinterestingaspectofoursystemis writtenaccordingtocertainspecics(e.g.,inc++,usinganalgorithmicsoftwarelibrarysuchas thatittriestoimposealittleburdenonthetaskofanimatingalgorithms.iftheprogramis LEDA[22]),thenitshouldbeeasytoobtainasimpleanimationofthisprogramwithCatai. programmeroranalgorithmdevelopershouldnotinvesttoomuchtimeingettinganactual animationofthealgorithmupandrunning.inourexperience,thiswasnotalwaysthecase, andoftenanimatinganalgorithmwasasdicultandastimeconsumingasimplementingthe Thisshouldmakethissystemeasytouse,andisbasedonthephilosophythatanaverage Inourownexperience,theeortrequiredtoanimateanalgorithmisperhapsoneofthe algorithmitselffromscratch.ourapproachhasanadvantageoversystemswherethetask ofanimatinganalgorithmishighlynon-trivial.producinganimationsalmostautomatically, however,canlimitexibilityincreatingcustomgraphicdisplays.iftheuseriswillingtoinvest graphicscapabilities,whilestillexploitingthefeaturesoeredbyoursystem. moretimeonthedevelopmentofananimation,heorshecanproducemoresophisticated possibilityofanimatingcomplexalgorithmsanddatastructures.thisismainlyachievedby structuresstartingfromverysimpleobjects.particularattentionwasdevotedtoeciency fullyexploitinganobject-orientedabstraction,whichallowsonetobuildcomplexanimateddata Wesketchheresomeotherfeaturesofoursystem.Oneofourdesignprinciplewasthe issues:thesystemwasdesignedsoastoberesource-ecient(graphicalresourcesarelargely reusedduringtheanimation),andtime-ecient(littleextraeortisrequiredwhenassembling systemisdistributed,asanimationclientscanbeplacedanywhereonanetwork,andhasa animatedobjects,asasoftwarelayerisinchargeofcoordinatingthepresentation).our distributeduserinterfaces,oursystemcanbeeasilyintegratedintheweb.anotherofthe runningprograms,thusinuencingtheanimation.besidesoeringinteractiveandeasy-to-use maincharacteristicsofcataiisthatitisinherentlycooperative:multipleanimationclients highdegreeofinteractivity,asclientsareabletohaveadeepgraphicalinteractionwiththe caninteractandinuencethebehaviorofasinglesharedalgorithminstance.furthermore,our keepsoverallthesamebehaviorasitsoriginalexecution.thisisparticularlyimportantfor asanimationdoesnotinterferewiththeexecutionofthealgorithm:theanimatedalgorithm systemhasahighdegreeofprivacy,whichispreservedonopennetworks,andisnotpervasive, debugging. architecturalchoicesunderlyingthedesignofcataiinsection2.next,weprovidesome algorithmanimationwithcatai.themainfeaturesofcataiaresummarizedinsection4, examplesonitsusageinsection3,wherewedescribeindetailshowtoprepareanactual Therestofthispaperisorganizedasfollows.Werstdescribethemainprinciplesand wherewealsomentionthenextdevelopments,mostnotablysomefurtherintegrationwiththe WorldWideWebtoprovidecooperativeworkgroupcapabilities. WhenourrstprototypeofCataiwasstarted,wehadalreadyimplementedandanimateda 2fairamountofalgorithms.Thus,ourownexperience,bothasprogrammersandasusersof SystemDesignandArchitecture algorithmsandanimations,stronglyinuencedourviewsanddevelopmentofcatai.thiscan perhapsexplainsomebiasorsomeparticularchoicesmadeinthedevelopmentofoursystem,
butatthesametimecanbeseenfromadierent,andperhapsmorepractical,viewpoint:we developedcataibecauseweactuallyneededaneectiveanimationtool,especiallysuitedfor debugging,testingandtuningalgorithmicsoftware. codeproducedbypeopleindierentsites.thus,wethoughtofananimatedalgorithmlikeany access,whichimplieddesigningadistributedsystemtoanimatealgorithms.whilejointly developingsomecomplexalgorithmicsoftware,wewantedtoquicklytestandvisualizethe Firstofall,beingaresearchgroupspreadoverdierentsites,wewantedtoensureremote remoteaccesshasmanyotheradvantages.justtomentionafew,aremoteinterfaceisanatural, simpleandoftenmoreecientalternativetoportinganyspecial-purposeorspecializedsoftware other\networkresource",whichcanbeaccessedandinteractedwith.ofcourse,asystemwith packageneededbyagivenalgorithm.furthermore,remoteaccesscanalsoensuresomeform ofprivacyandencapsulation:theusercanwatchanalgorithmrunningonaparticularinput fromtheuser,sincethecodeislocatedonadierentmachine.thiswassomehowinlinewith set(whichcanbechosenbytheuser),whilethealgorithmitselfanditsdetailsare\hidden" othercurrentanimationsystems,suchasmocha[2]. animateddatastructuresatrun-time:incataithisisdoneinsuchawaythattheexecution interactasmuchaspossiblewiththeanimatedalgorithm.wewanted,forinstance,toallow theusertointeractwiththealgorithmduringitsexecution.oneexamplecouldbechangingthe However,anddierentlyfromotheranimationsystems,wewishedtoallowtheuserto needsnottoberestarted(asithappensinothersystems)butissimplycontinuedonthe speed,checkpointing).notrulydeepinteractionwasavailabletowardstheunderlyingdata ofpresentingthealgorithm.thetypicalinteractionallowedbetweentheuserandalgorithm changeddata.inprevioussystems,userinterfaceswerestronglyorientedtowardsthegoal wasverylight(e.g.,runthealgorithm,presentitsexecutionframe-by-frame,controltheframe structures:theonlypossibilitywastoassigndefaultvaluesatinitializationtime;usually, animatedalgorithmsoeredonlythechoiceamongdierentinputsets,includingdeninga newone.inourexperience,thisgavearatherlimitedviewofinteraction,andwhilevisualizing algorithms,weneededamuchdeeperinteractionwiththeirexecution.forinstance,wefound extremelybenecialtousetheanimationtodebugcomplexalgorithmiccode:inthiscase, andforeducationalpurposesaswell,weoftenperceivedtheneedtovisualizewhathappens requiresamuchstrongerinteractionbetweentheuserandtheexecutionofthealgorithmat animationtime.aspointedoutin[3],fromwhichweciteverbatim,thisstronginteraction ifweinteractivelyforcethealgorithmtofallintonon-standardorwrongcongurations.this seemssomehowimplicitintheconceptofalgorithmanimation: \Algorithmanimationappealstothestrengthsofhumanperceptionbyproviding Acrucialpointhereisthemeaningof\step",asincurrentanimationsystemsonecannd end-usertounderstandthealgorithmsbyfollowingvisuallystep-by-stepexecution". avisualrepresentationofthedatastructure[...]algorithmanimationhelpsthe nearlytwooppositeinterpretationsofthis.therstinterpretationistheoneusedinlineorienteddebuggers,wherecoherencewiththealgorithmexecutionisguaranteedattheexpense ofaverynegranularity,whichsometimescanevendisturbtheinterpretationofthebehaviorof thealgorithm.thesecondinterpretationofstepisthatofalogicalframe,whichcanbedened bytheprogrammeratthedesiredlevelofgranularity(asforinstanceinpolka[28]).withthis and,therefore,itisnotalwaysguaranteed.forus,accordingtoanobject-orientedparadigm, approach,coherencewiththealgorithmexecutionisatotalresponsibilityoftheprogrammer astepisanychangeofstateoftheanimatedobjects.indeed,toensureastronginteraction
Requirements Remote Access Interactivity Reusability Approach Distributed Animation Architecure Data Structures Animation vs. Algorithm Animation betweenusersandalgorithmexecutions,oursystemmonitorsallandonlytheeventsthat ofanalgorithmwassoheavilyembeddedinthealgorithmitselfthatnotmuchofitcouldbe comforting.inmanycases,reusabilitywasnotconsideredatall,andveryoftentheanimation changethestateofananimatedobject. reusedinotheranimations.wewantedtoenforcereusabilityinastrongsense:iftheuserproducesagivenanimateddatastructure(e.g.,astack,atree,oragraph),thenallitsinstances Ourthirdmainconcernwasreusability,aspreviousexperienceswiththiswereratherdisicalbehaviorwithnoadditionaleortatall.Ofcourse,whenmultipleinstancesofdierent datastructuresareanimatedfordierentgoals,abasicgraphicalresultmaybepoorwithout inanycontext(localscope,globalscope,dierentprograms)mustshowsomestandardgraph- perhapscouldneverbe)reusable.wedesignedoursystemsothatitcanoerdierentlevels anadditional,application-speciccoordinationeortthatbyitsownnatureseemsnot(and ofsophistication:non-sophisticatedanimationscanbebasicallyobtainedforfree.ifonewants amoresophisticatedanimation,forinstancebyexploitingsomecoordinationamongdierent datastructuresforthealgorithmathand,thensomeadditionaleortisrequired. Figure1:ThemainideasbehindthedesignofCatai. Cooperative GUI Efficiency Features Portable GUI Distributed Algorithm (development time. Animation network resources) deeplyinuencedthedesignofoursystem.toallowremoteaccess,oursystemhadobviously tohingeonadistributedarchitecture.however,ourdesireofahighdegreeofinteractivity aswellhadaprofoundinuenceonthechoiceofadistributedarchitecture.oursecondmain Figure1showshowthesethreerequirements(remoteaccess,interactivityandreusability) rithmsonly.roughlyspeaking,wewantedtoallowadeepinteractionbetweentheuserand architecturalchoicewastofocustheanimationmoreondatastructuresratherthanonalgo- theanimateddatastructuresusedbyanalgorithm,whilethealgorithmitselfwasrunningon them.thisisopposedtootheralgorithmicanimationswhichchooseaninput,visualizeit,and thenrunthealgorithmonit,withoutgivingmuchinformationonitsinternaldatastructures. oftenallowsonetoachieveabetteranddeeperunderstandingoftheinternaldetailsoftheal- Webelievethatthisfocusonanimatingdatastructureshasmanybenets.Firstofall,this
gorithm,whichisespeciallyimportantatdebugtime.furthermore,itensuresahigherdegree ofinteractivity,byexploitingthefactthatdatastructureshavemethodsforinputthatcanbe animatedaswell.finally,italsoimprovesthereusability,ascomplexanimatedalgorithmsand datastructurescanbeoftenobtainedasacompositionofsimpleranimateddatastructures. Figure1.Firstofall,CataiisdesignedsoastoprovidenaturallyaportableGraphicalUser Interface,andthisinterfaceisgivensimplybyaJavaprogram.Thesystemcanofcoursebe easilyusedintheweb:javaappletswithinanimationclientscanbeaccessedbyusingany Webelievethattherearethreemainnaturaloutcomesfromthisapproach,asshownin distributedalgorithms.finally,webelievethatthefocusofcataionreusabilityassuresa amongmultipleanimationclientstowardsthesamealgorithm,andevenallowsonetoanimate greatdegreeofeciencywithrespecttobothdevelopmenttimeandtheusageofnetwork standardjava-enabledwwwbrowser.thesecondfeatureisthatcataiallowscooperation Figure2,therearethreemaincomponentsinoursystem: resources. (1)Thealgorithmservers(AlgServer).TheseareexecutableprogramswritteninC++ WearenowreadytopresentinmoredetailsthearchitectureofCatai.Asillustratedin (2)Theanimationclients(Ci).Theyimplementtheusers'interfacestowardthealgorithms,andarewritteninJava. algorithmserver,andcoordinatesalltheinteractionsbetweenthem.oneofitsmain goalsistoprovidecoherencebetweenthenon-animateddatastructuresusedbythe algorithmserverandthecorrespondinggraphicalobjectshandledbyaclientci.itis andobtainedfromtheoriginalnon-animatedsourcecodesofthealgorithmswiththe supportofsomecommunicationprimitivesfromthecatailibrary. (3)Theanimationserver(S).Itisthemiddlelayerbetweenanimationclientsandthe TheAlgorithmServer alsowritteninjava. AnalgorithmserverAlgServerisanexecutableprogramwritteninC++withthesupportof somecommunicationprimitivesfromthecatailibrary.theseprimitivesaregroupedintwo virtualclasses:animatorandbootstrap.theanimatorclassprovidessomecommunication primitivestotheanimatedobjectsdenedinalgserver,whilethebootstrapclassmainly providestheinitializationroutinesnecessarytothecommunicationprimitives.inordertobe abletocommunicatewiththeanimationservers,theoriginalalgorithmmustbeencapsulated inaclassthathasaninterfaceknowntos. animatedalgorithma.thisprocessisstandard,sothatitcouldbeeasilymadeautomatic. Firstofall,thedatastructuresusedbyAthatwewanttodisplayareextendedtoanimated datastructures.wedenotebya'theresultingalgorithm.next,a'isencapsulatedinaclass WedescribenowhowtobuildanalgorithmserverAlgServerstartingfromanoriginalnon- (a)deningthetoplevelgraphicalobjectswhichwillbehandledbya'; classanimateda'isresponsiblefor: calledanimateda',whichisderivedfromtheanimatorandbootstrapvirtualclasses.the (b)deningthemethodanimateda'::a'()whichisusedtocallalgorithma';
Java Animation Server Animator Class Remote Interfaces Object Mapper Animation Libraries CORBA compliant Interface C++ Programs Multicast Forwarder AlgServer i Java Client C 1 Java Client C 2 Java Client C n End User End User... End User (c)deninganyextramethodsthathandlethegraphicalobjectsboundtotheuserinterface.allthesemethodswillbeoeredbytheserverstotheclientsci. Figure2:CataiBasicArchitecture. GUI GUI GUI fromtheoriginalnon-animatedclassandthevirtualclassanimator.theyarearedenedon Theanimatedclasses(i.e.,animateddatastructures)areobtainedusingmultipleinheritance librariesofs.thisimpliesthatananimatedclasscontainsnographicalobjectrepresentation,a thebaseoftheservicesoeredbytheanimationservers,whichareincludedintheanimation taskwhichisleftentirelytotheanimationservers.namely,anobjectresidesonanalgorithm serveralgserverwhileitsgraphicalrepresentationresidesontheanimationservers:thebinding betweenthesetwoentitiesisestablishedonlyatrun-time,bylatebinding. entdatastructurescanusethesameobjectrepresentation:forinstance,anyalgorithmusing nodescaninvokethesamenoderepresentationoeredbytheanimationservers.thiswill speeduptheprocessofgeneratingnewanimatedclasses,andwillallowtheusertoignorecompletelythedetailsbehindthegraphicalrepresentationoftheanimatedobjects.notethatthe animatedclasseswillmaintaintheiroriginalinterfacesandthuswillnotcauseanymodication totheoriginalalgorithm. AlgServer,thereisabootstrapphasewhereAlgServerannouncesitsservicestotheanimation servers.asanydistributedsystem,algserverneedstoagreewithsoncommonobjectinterfaces:afteraninitialsimplehandshake,theanimationserverslearnswhatisthelocalsupport WearenowreadytoexplainhowanalgorithmserverAlgServerworks.Whenoneruns Thisisperhapsoneoftheadvantagesofthisarchitecturewithrespecttoreusability.Dier- requiredbytheanimateddatastructuresinalgserverandwhataretheinterfacesexposed byalgserver.thealgorithmservercompletesthebootstrapphasebyenteringintoanevent
handlerloop,wherealgserverwaitsforconnectionrequestsfromtheanimationservers(i.e., handlerloopthatwillprovidethebasicguitotherelevantclientsthroughthealgorithm tobeselectedbyauserwishingtorunalgorithma'). servers.inthisguitheusercanhavemanyoptions,includingrunningthealgorithm.ifthis objectoftheclassanimateda'.theconstructorofthisclasswillenterinasecondevent WhenoneormoreusersselectAlgServer,theanimationserverSremotelyinstantiatesan TheAnimationServer optionisselected,theanimationserverswillinvoketheexecutionofalgorithma'throughthe remoteinvocationofanimateda'::a'(). Allthecoordinationbetweenthealgorithmserversononesideandtheanimationclientson theothersideiscarriedoutbytheanimationservers:indeed,oneoftheprimarygoalsofan animationserveristointerfacealgorithmserverswiththeirgraphicalrepresentationsonthe animationclients.asillustratedinfigure2,ananimationservercontainsfourbasicmodules: TheAnimatorClassRemoteInterfaces.Thislayerdenesthecommunicationprimitives andimplementsthejava/c++interoperabilityasacollectionofstubs/proxies.proxiesencapsulatenetworkcallsandaccessdistributedobjects:aproxylooksliketheserverobjectinterm functioncallsiscarriedoutviasectionsofthecodecalledstubcode.thislayerwillinterface outtheremotecallstoforwardthemtotheremoteobject.themechanismformakingremote ofthemethodsitimplements.however,itsimplementationoftheobjectmethodswouldcarry theguiofanalgorithmclientandbymappingthemontoeventsforobjectsonanalgorithm theremoteobjectsinstantiatedbyanalgorithmserverbyparsingtheeventsreceivedfrom server,andviceversa. ObjectMapper.Thismoduleisinchargeofmaintainingamappingbetweengraphicalobjects avisualobject,aneventwillbesenttothecorrespondingobjectonaparticularalgorithm server.ontheotherhand,eachtimeanalgorithmservermodiesthestateofanobject,a correspondingchangewillbeproducedontheuserdisplay. andtheircounterpartsonthecorrespondingalgorithmserver.eachtimeauserinteractswith AnimationLibraries.ThislayercontainsarepositoryofJavaclassesabletodrawgraphical denedhowtodrawabinarytreeandhowtodealwithit(moving,deleting,insertingnodes, objectsandtodenethestandardinteractionswiththem.forinstance,inthismoduleitis etcetc).whenanalgorithmserveralgserverisstarted,itrequestsalltheentriesofthe AnimationLibrariesthatarenecessaryforitsownanimateddatastructures.Ifavailable,the Multicastforwarder.Thismoduleprovidesone-to-manycommunicationandletmanyclients correspondingclassesaredownloadedtotheclientsthatwillrequestconnectiontoalgserver. runninginstanceofanalgorithmevenafterthealgorithmisstarted,themulticastforwarder interactwiththerunninginstanceofthealgorithm.asananimationclientmightjointhe containsacoordinationprotocolthatalignsalltheclientswiththealgorithmexecution.the andedges.whentheseupdatesarerequestedfromoneclient,alltheotherclientsarelocked interactwiththealgorithmserverinamutuallyexclusiveway.forexampleifweareexecuting samecoordinationprotocolmaintainsthesynchronizationprimitivesthatalloweachclientto analgorithmbasedondynamicgraphs,theusershouldbeabletocreateordeletenewnodes untiltheoperationisterminated.
AnimationclientsareJavaprogramstargetedtohandlingthreedierenttypesofevents.The TheAnimationClientsCi ofeventsareanimationdirectives:theseareeventsoriginatedbyanalgorithmserveralgserver generatedcommandssuchas\click",\drag-and-drop",and\shift+click".thesecondtype anddirectedtowardstheuserinterfaceofanalgorithmclientwhichrequiresomechangesinthe rsttypeareuser-generatedeventstowardsanalgorithmserveralgserver;theseincludemouse- graphicalpresentation;examplescanbeoperationslikecreateanewgraphicalobject,establish dynamicallyenteringthepoolofdisplayingdevicesforaparticularalgorithm.sinceallthe alignmentdirectivesusedbytheanimationserverstocoordinatemultipleclientsthatcanbe aconnectionbetweentwodierentgraphicalobjects,etc.thethirdtypeofeventsarethe communicationbetweenanimationclientsandalgorithmserversishandledbytheanimation servers,alltheseevents(includinguser-generatedeventsandanimationdirectives)arebetween animationclientsands. somealgorithmserver.iftheuserchoosesthealgorithmoeredbyaparticularalgorithmserver programcistarts,itlooksforananimationserverataspeciedaddress.next,cireceives fromtheanimationserversalistofavailablealgorithms,namelyallthealgorithmsrunningon Wenowdescribehowanimationclientsinteractwiththeanimationserver.Whenaclient thepoolofclientscurrentlyconnectedtothatalgorithmandcoordinatesalltheinteractions clientciandthecorrespondingalgserver.theanimationserversmaintainsinformationabout andtheupdatesonthedisplayforallthemembersofthepool.atthispoint,theclientcican AlgServer,thenanewvirtualconnectionisestablishedviatheanimationserverbetweenthe downloadallthedataitneedstodisplaythedatastructuresanimatedbyalgserver.fromnow on,eachclientwillbeabletocallsomeservices,suchassomeupdateoperationsonalgserver, animatedobject,eitheratinitializationtimeorduringtheexecutionofthealgorithm,thisnew objectwillbedisplayedontheclientsasinstructedbytheanimationservers. andtovisualizetheresultingevolution.ontheotherhand,whenalgserverallocatesanew onthetopofjavaawt(theabstractwindowtoolkitofthejavavirtualmachine).each server.theserverinturnwillusethebasicgraphicprimitivespresentintheclientcodebuilt denedintermofabstractobjectscontainedintheanimationlibrariesresidentintheanimation ThebasicGUIpresentedbytheclientsfollowstheinterfaceproposedbyAlgServer,whichis thismapwillbeupdatedwhenanewobjectiscreatedbyalgserver. AlgServerandtheGUIwilldirectlycalltheirmethodsasaremotemethodinvocation.Again, clientkeepitsownmapofalltheanimatedobjectsinordertobeabletoaddressthemon bycatai.firstofall,weshouldmentionthatanobject-orientedparadigmbyitselfoers reusability:ananimatedclass,onceithasbeendesigned,cannaturallyberecycledandextended.forinstance,wecaninheritananimatedlistclasstodeneeasilyananimatedstack Weconcludethissectionwithsomemorecommentsaboutthelevelofreusabilityoered deneanimatedclassesbyreusingallthegraphicalrepresentationsdenedintheanimation class.thereusabilityfeaturesofcataiareofcoursedeeperthanthat.indeed,onecanalso abasicanimationofmanysortingalgorithms.finally,andperhapsmoreimportantly,with resentation.orwecanuseanimatedarraysandanimatedliststoobtain,atnoextracost, anddierentimplementationsofgraphclassescouldsharemuchofthesamegraphicalrep- libraries.forinstance,thegraphicalrepresentationofanodeisthesameforgraphsandtrees, ourapproach,wecaneasilyexchangeandreuseanimateddatastructuresthatarebuilt-in somewhereinalgorithmservers.thiswasparticularlyusefulinourownexperience.
3ofclarity,wewilldescribethegeneralstepsthatmustbefollowedforaccomplishingthistask WenowdescribeinsomedetailshowtoprepareanalgorithmanimationwithCatai.Forsake AnExampleofAnimationwithCatai andatthesametimeillustratethemthroughaworkingexample:theanimationofkruskal's algorithmforcomputingaminimumspanningtree(mst)ofagraph[20]. willnallyconvergetoaminimumspanningtree.initially,theforestconsistsofnsingleton nodes(i.e.,theverticesinthegraph).thealgorithmscanstheedges,oneatthetimeand inincreasingorderoftheircost.iftheendpointsoftheedgeunderexaminationarealready Kruskal'salgorithmrstsortsalltheedgesbyincreasingcost,andthengrowsaforestthat edge),andthetwotreesaremergedintoone.foreciencyissues,thetreesaremaintainedas dierenttrees:theedgeisinsertedintotheforest(i.e.,itwillbeaminimumspanningtree setuniondatastructures[31].werefertoleda'simplementationofkruskal'salgorithm[22], connectedinthecurrentforest,thisedgeisdiscarded.otherwise,theendpointsareintwo whichmakeuseoftheclasspartitiontoimplementsetuniondatastructures. 3.1 Whilebuildinganalgorithmanimation,therstdecisiontobetakeniswhichdatastructures aretobeanimated.intheexampleathand,forinstance,itseemsnaturaltovisualizethe Howtoanimateanalgorithm graphbeingexplored;additionally,wecouldalsochoosetoanimatetheunderlyingpartition ananimationcanbebrokeninthreedierentsteps. givenbythesetuniondatastructures.oncethishasbeendecided,theprocessofdeveloping Cataiisgivenbytheanimationlibraries,whichintuitivelyprovideananimatedinterpretation Creatingananimationlibrary.Acrucialmodulewhichprovidesthebasicanimationin animationlibrariesforthealgorithmathand,thenwemustdeveloptheanimationlibraries of\howdatastructureswork".theselibrariesaretotallyindependentfromthedatastructures beinganimatedandcanbeeasilyreused.iftheanimationserverdoesnotsupportalready requiredbythealgorithm.inourexampleofminimumspanningtrees,cataicontainsalready animationlibrariestorepresentgraphobjects,andthusthistaskisempty.weremarkhere onewouldrarelyneedtobuildalgorithmiclibrariesfromscratch. thatcataisuppliesanimationlibrariesformosttextbookalgorithms,andthusintheaverage blocksofanimations.eachanimobjectcanhaveacustomizableappearanceandcanbere- latedtootheranimobjectsviaanimationlinks(animlinks):inparticular,animlinksde- neasetofanimobjectswithacommonproperty.tocreateanewanimationlibrary,wemust Animationlibrariesmanagesanimatedobjects(animobjects)whicharethebuilding Thelibstructclassprovidestheuserwithabasicsetofanimationprimitivestoadd,remove, whosepurposeistodenehowananimobjectandananimlinkisgraphicallyrepresented. rstcreateanewjavaobjectderivedfromacataiclass:thelibstructclass.eachanimationlibrarymustimplementtwospecialmethods(paintanimobjectandpaintanimlinks) select,labelandaccessbothananimobjectandananimlink. Creatinganimateddatastructures.Onceanimationlibrariesareavailable,weneedto revisetheimplementationoftheoriginaldatastructurestosupportsomeanimationcapabilities. CataioersaspecializedC++librarytoassistinthedevelopmentofanimatedclasses.The Wecallanimatedclassestheclassesthatimplementdatastructureswithsupportforanimation:
andfromtheanimatorclass:foreachmethodoftheoriginalclassthatwewanttoanimate, animationlibrary.ananimatedclasscanbederivedfromtheoriginalnon-animatedclass principalcomponentofthislibraryistheanimatorclass,whichprovidesanimationserver communicationprimitivesandbindingmechanismsbetweenadatastructureandtherelated togetherwiththeuseofoneormoreanimationprimitives.theseprimitivesmapsdatastructure wedeneanewmethodwiththesameprototypewhichholdstheoriginalmethodinvocation allanimationlibraries,whiletheirbehaviordependsontheanimationlibraryselected.to operatorstotheiranimatedcounterparts.theinterfaceofthesefunctionsiscommonfor achievebetteranimations,wecanextenddatastructuresbyintroducingsomeanimationspecicoperators,i.e.,operatorswhosefunctionalitydoesnotaectadatastructurebutonly itsvisualrepresentation. {public: animgraph(inttsockd):animator(tsockd,graph),graph(){} classanimgraph:publicgraph,publicanimator strap //GRAPHistheanimationlibraryiddefinedinAnimator //tsockdisthecommunicationchannelreferenceobtainedintheanimationboot //buildanimgraphasagraphplusanimator nodeanimgraph::new_node() {noden=graph::new_node(); }edgeanimgraph::new_edge(nodesrc,nodedst) Animator::new_obj((long)n,index(n)); returnn; //createanewnode //nextcreateanewanimobjectandbindittotheoriginalnode {edgee=graph::new_edge(src,dst); }voidanimgraph::color_node(nodev,intc) new_link((long)src,(long)dst,index(temp),(long)e); return(temp); //createanewedge //nextcreateanewanimlinkandbindittotheoriginaledge {Animator::color_obj((long)v,c); }; LEDAgraphandpartitiondatatypes.TheLEDAgraphclassusesasingleobjectwhichacts Inourrunningexampleofminimumspanningtree,thenon-animatedalgorithmusesthe Figure3:Thedenitionofanimgraphandsomeofitsmethods. asacontainertoholdnodesandedges.toobtaintheanimatedclass,wederivetheclass
animgraphfromtheledagraphclassandfromtheanimatorclass.themethodsthatwe wishtoanimatearethosewhichchangethegraph:adding,removingandmodifyingedges orvertices.apartfromthesemethods,wecouldalsoaddsomeextramethodsforanimation purposes.thedenitionoftheanimgraphclassandtheimplementationofsomeanimated methodsisgiveninfigure3.theanimatedpartitionclasscanbedenedwiththesame technique. Animatedalgorithm.Oncebothanimationlibrariesandanimateddatastructuresareavailable,wecannallycodetheanimatedalgorithm.TheresultingprogramwillcomplytoCatai protocolsandwillexhibitastandardanimation.thisanimationcouldbefurtherimprovedusinganimation-specicoperatorsandcataidirectortools.thesetoolsallowonetointeractin moredepthwithalgorithmandtocoordinateitsexecution.cataidenesalltheinteractions asastandardsetofevents:eachoftheseeventscanbeeasilyboundtoamethodinvocation. Apartfromtheseinteractions,Cataiprovidesalsotoolsforrequiringacknowledgmentsto end-users,forshowingcustomizabletextboxesandforsynchronizinganimationsplaying. Originalalgorithm Animatedalgorithm... G=newgraph();... list<edge>mst::kruskal(graph&g) {node_partitionp(g); list<edge>l=g.all_edges(); list<edge>t; L.sort(CMP_EDGES); edgee; forall(e,l){ nodev=source(e); nodew=target(e); if(!p->same_block(v,w)){ T.append(e); P->union_blocks(v,w); } }returnt; }... G=newanimgraph(sockd);... list<edge>mst::kruskal(animgraph&g) {anim_node_partitionp(g); list<edge>l=g.all_edges(); list<edge>t; L.sort(CMP_EDGES); edgee; forall(e,l){ color_edge(e,green); nodev=source(e); nodew=target(e); if(!p->same_block(v,w)){ T.append(e); color_edge(e,blue); color_node(v,blue); color_node(w,blue); P->union_blocks(v,w); }else{ color_edge(e,red); } }returnt; } Figure4:Kruskal'salgorithmforMSTinitsoriginal(LEDA-like)versionanditsanimation incatai.
Figure5:Theanimationstartsonagraph.Threealgorithmsareoeredbythealgorithm servers:scc1,kruskalandprim:theuserselectskruskal.allverticesinthegraphareoriginallycoloredyellow,andalledgesarecoloredblack. hand.startingfromtheoriginalcode,wereplacethestandardgraphandpartitionwiththeir animatedcounterparts.next,weaddsomeanimation-speciccodetohighlightthebehavior ofthealgorithm.forinstance,wecanchoosetocolorredtheedgewhichwearecurrently WearenowreadytoshowhowtoanimatetheimplementationofKruskal'salgorithmat itblue,andotherwisewewillcoloritred.endpointsofblueedgesarecoloredblue,sothat considering.ifthisedgewillbeincludedintheminimumspanningtree,thenwewillcolor aforestofbluetreesisvisualizedthroughouttheexecutionofthealgorithm.thisblueforest services(methods)thatcanberequestedbytheend-user.acomparisonbetweenthecodeof willconvergetoaminimumspanningtree.theresultingalgorithmisproposedasamethod theoriginalnon-animatedalgorithmandthecodeofanimatedalgorithmcanbeobtainedfrom ofacontainerobject,i.e.,anmstclass,andthepublicinterfaceofthisobjectwillreportthe Figure4.SomesnapshotsoftheactualanimationarecontainedinFigures5{7.
Figure6:Theanimationatthefourthstep:edges(2,5),(0,5)and(4,0)havebeenexamined andcoloredbluetogetherwiththeirendpoints,andtheedge(6,7)iscurrentlyexaminedand coloredgreen.thestateofthepartitionisshowntotheright:wehavegrownonlyoneblue tree(containingvertices0,2,4,5).alltheotherverticesarestillinsingletontrees. inperspective. Inthissection,wesummarizethebasiccharacteristicsofCatai,andtrytoputitscontributions 4 TheMainFeaturesofCatai certainway,muchofthecontrolistransferredbythealgorithmtotheuser,asatruntimethe andnavigationofdatastructures.consequently,theanimationcanbeusedtrulyasabasic userisallowedadeepcoordinationofthealgorithmanimationthroughthevisualmanipulation Firstofall,wedesignedCataisothatitoersanadvancedsupportforinteraction.Ina especiallywhenusingalgorithmanimationinprogramdevelopmentanddebugging:wecould ontherunningalgorithm.othersystemsthatweareawareofmainlyimplementverysimple putsomedatastructuresinnon-standardorwrongcongurations,andvisualizetheeects GUIforaccessingthealgorithmpropertiesandfunctionalities.Wefoundthisveryuseful formsofinteractions,whichdonotinvolvevisualrepresentationsandonlyallowtheuserto executeaxedsetoffunctionsforeachalgorithm;veryoften,theargumentsofthesefunctions cannotbespeciedbyinteractingwiththeanimation.
havebeenexaminedandcoloredbluetogetherwiththeirendpoints,edge(5,3)hasbeencolored Figure7:Theanimationattheeighthstep:edges(2,5)(0,5),(4,0),(6,7),(4,3)and(1,7) red,andtheedge(3,8)iscurrentlyexaminedandcoloredgreen.thestateofthepartitionis showntotheright:wehavegrowntwobluetrees(onecontainingvertices0,2,3,4,5andthe othercontainingvertices1,6,7).vertices8and9arestillinsingletontrees. mation.indeed,thesystemguaranteesaclosematchbetweenthebehaviorofthealgorithm executionanditsanimatedcounterpart.othersystemsuseaclassicalevent-drivenapproach: animationdirectivesrelyonspecicfunctioncallsspreadalongthealgorithmicsourcecode. Furthermore,Cataioersahighdegreeofadherencebetweenthealgorithmanditsaniwaysautomaticallyassured.Onthecontrary,Cataipresentsanevolutionoftheevent-driven directive.thisisaconditionwhichisleftentirelytotheprogrammer,andthuscannotbeal- Thistecniquedoesnotalwaysassureadherenceastheonlyrelationbetweentheexecutionof approach,asitencapsulateseachanimatedoperatortogetherwiththeanimationlinkina afunctionanditsanimatedvisualizationistheconcomitantinvocationoftherightanimation thealgorithmfollowscloselytheanimation:indeed,theanimationisdirectlyboundtothe eratorinvocationwillbefollowedbytheexecutionofitsanimatedcounterpartandthusthere istheguaranteethateach\step"inthealgorithminduces\step"intheanimation.conversely, containermethod.inthisway,theanimationfollowscloselythealgorithm:eachanimatedop-
methodsofthealgorithm,sothateachuserinteractionisforwardedbytheanimationtothe algorithm,whereittakestheshapeofmethodinvocation. numberofpossiblyverycomplexdatastructures,andwebelievethatcataiscalesupnaturally withrespectbothtothenumberandtothecomplexityofdatastructures.indeedincatai, graphicalobjectsandanimationreferencesareinternallykeptintheanimationservers,so Thenextfeaturewementionisscalability,i.e.,howasystemdealstheanimationofalarge ofdatastructuresrequiresnomoreeorttotheuserthananimatingasmallnumberofthem. Theonlyextraeortrequiredwhenanimatingalargenumberofdatastructuresisforhighly thatusersdonotneedtodealdirectlywiththem.consequently,animatingalargenumber interactiveanimations,asinthiscasetheusermustspecifywhicharetheinteractionsand thedatastructuresinvolvedwiththeseinteractions.thisismuchmorecomplicatedforother thesesystemsclearlygrowswiththenumberofdatastructuresinvolved.asforscalabilitywith alltheallocatedgraphicalobjectsandtheircorrespondencewithdatastructures.theeortin systems,whichrequire,apartfromwritingtheanimationcode,someadditionaleortstotrack respecttothecomplexityofdatastructures,othersystemsdonotseemtoprovideaspecic solutiontothisproblem:itseemstousthattheuserneedstowritecomplexanimationcode assemblingtheminanobject-orientedfashionedmanner. complexdatastructurescanbebuiltbyrstanimatingsimplerdatastructuresandthenby inordertoanimatecomplexdatastructures.incatai,mostofthetimestheanimationof ofsettingupananimation.indeed,itoersagoodtrade-obetweenthelevelofreusability, theaveragetimeittakestoanon-sophisticatedprogrammertodevelopananimation,andthe basicknowledgerequiredtousethesystem.weemphasizeherethatweconsiderthecasewhere Inourpersonalexperience,Cataiwasaneectivetoolforreducingtheoverallcomplexity important,asinmanycasestasksthataretrivialfortheknowledgeableandexpertprovider ofasystemmightbeverydiculttoachieveforthetypicaluser.ifonewishestoanimatean algorithmwithcatai,therearethreepossiblescenarios: auserofthesystem(nottheprovider!)wishestosetupananimation.thisisparticularly (B)Onlytheanimationlibraryisavailable; (A)Nosupportisavailable(noanimationlibraryandnoanimateddatastructures). (C)Theanimationlibraryandananimatedimplementationoftheunderlyingdatastructuresarealreadyavailable; animationlibrariesfromscratch:thisimpliesamedium/highdevelopmenttime(perhapscomparabletothedevelopmenttimerequiredbyothersystems),andabasicknowledgeofc++, JavaandCorba.Incase(B),whichwebelievewillbetheaveragecaseforaCataiuser,the maintaskistoderivetheanimateddatastructuresfromthenon-animatedcode.asitcanbe inferredfromfigures3and4,inthiscasethedevelopmenttimeistypicallylow/medium,and onlyamoderateknowledgeofc++isrequired.finally,incase(c)theanimationwithcatai isstraightforward:onlyasimpleknowledgeofc++isrequiredtocomposetheexistingpieces, andthetimerequiredtodeveloptheanimationisextremelylow(ifany),asitcanbeseenfrom placedanywhereprovidedthattheyshareacommunicationchannel.perhapsevenmorethan Mocha,Cataiheavilyreliesondistributedobjects,whichhavebeendevelopedusingaCORBA Figure4. Incase(A)whennosupportforthedatastructuresisavailable,theuserhastocreate SimilarlytoMocha[2],Cataiisatrulydistributedarchitecture:allitscomponentscanbe
compliantprotocol.inaddition,thehttpprotocolisusedfordownloadingthejavaclasses neededandabsdsocketmessageinterfaceisusedforthecommunicationaddressedbyan algorithmservertowardstheanimationserver.theoverallcommunicationloadistypicallylow alowcostusingshortmessages:basicallyonlyinvocationofmethodsonremoteobjects.this sincealltheanimatedscenesresideonanimationclientsandtheiractivationcanbeobtainedat givesaneectivesupporttotheanimationofdistributedalgorithms,whichcanbenaturally tioncanbeexportedremotelywhiletheanimatedprogramismaintainedonasafehost,and implementedwithmultiplealgorithmservers. overallsecurity,ascommunicationprotocolsexportlimitedresourcesandonlytothepoolof animationcomponents. Finally,asmanyothersystemsCataioersagooddegreeofcodeprotection,asananima- inmanyareas,includingeducationalsupportespeciallyfordistancelearning.infact,many makeinformationpubliclyavailable,theworldwidewebhasalreadyshownitslargepotential ofintegrationintheworldwideweb(www)environment.althoughoriginallydevelopedto WeconcludethissectionbymentioninganotherfeatureofCatai,whichrelatestoitsease educationalsystemsbasedonwwwhavebeenrecentlydevelopedandtheeducationaluseof WWWhasattractedalotofattention(seee.g.,[16,19]).ThepotentialofWWWasaneducationaltoolhavealsobeenstudiedintheareaofComputerSupportedCooperativeWorkgroup bythecurrentnetworktechnologytocooperativeworkgroup.inbothareas,thereisagreat (CSCW)[1,13,14,15,17,23,24]whichingeneralisconcernedwiththenewpossibilitiesoered studentsandinstructors.infact,theaspectofthe\ordinary"classroomthatliesintheinteractionsbetweenthestudentsandtheinstructorandamongstudentsthemselveshasstimulated ThearchitectureofCataiisnaturallyintegratedintheWeb:infactWWWservers(HTTP alotofworkonseveralsystemsfor\sharedworkgroup"onwww[4,5,11,18,21,26,32]. server)andwwwclients(browsers)canbemapped,respectively,tocataianimationservers andanimationclients,andananimationclientcanbeevenusedasanappletwithinanhtml page(whiletheanimationservercanbemanagedbyawwwserver). dealofattentionontheusageofwwwforafullyintegratedcooperativeenvironmentbetween thevisualizationofthealgorithmscooperativelywithotherstudentsorwiththeinstructor. canlearnaparticularsetofalgorithms,seesomeoftheirimplementations,andinteractwith educationalsystems,whereastudentcaninteractwithalgorithmiccourseware:heorshe TheintegrationofCataiwiththeWebcanbeextremelyusefulinthedesignofintegrated Cataicanallowaneasy,ecient,distributedandinteractiveaccesstosuchprocesses.For repositoriesstoredsomewhereelse,suchinthecaseofreal-timemonitoringprocesses:indeed instance,wecaneasilyaddmethodstoanimateddatastructuresandalgorithmsthatallowfollowing\links"(url's)totherestofthewww.asanexample,wearecurrentlyinvestigating aparticularapplicationwhichisconnectedtomonitoringnetworkcongestionsviatheweb:we haveanetwork,andwewishtondtheshortestpath(orsomeotherparticularpaths)toa setofdestinations.insomecases,shortestpathsarenotdeeplyinformative,andonewould liketoobtainatrulyreal-timeinteractionwiththenetwork,i.e.,byclickingonalinktoget informationonthecurrenttracpatternonthatlink(e.g.,roadconditions,linkcongestions, Moreover,Cataioersthepossibilityofvisualizingalgorithmsthatcanberelatedtodata etc).aprototypeofthiskindseemstorequirenotmucheortwithcatai.
loweortrequiredforsettingupanewanimation,andthepossibilityofembeddinganimation 5Wehavepresentedanewsystemforalgorithmanimation,whosemainfeaturesincludeatypical Conclusions tweentwodierentviewpoints:theprogrammer'sperspective,whichtypicallyincludesthegoal clientsinstandardjava-enabledwebbrowsers.webelievethistobeagoodcompromisebe- believethattakingintoaccountboththesetwoviewsisimportant,astheprogrammerand theuserofananimationsystemcanoftenbeunitedinthesameperson:e.g.,aprogrammer ofanimatingquicklyandecientlyagivenalgorithmiccode,andtheuser'sperspective,which clearlybenetsfromhighlyinteractive,easy-to-use,distributedandcooperativeinterfaces.we studentoraninstructorwishingtosetupandinteractwithhis/heranimationofanalgorithm. wishingtousealgorithmanimationtovisualizeanddebughis/herownalgorithmiccode,ora References [1]W.Appelt,U.Busbach.\TheBSCWSystem:AWWWbasedApplicationtoSupportCooperationofDistributedGroups".GMD-GermanNationalResearchCentreforInformationTechnology.SanktAugustin, [3]J.E.Baker,I.F.Cruz,G.Liotta,andR.Tamassia.\AlgorithmanimationovertheWorldWideWeb".In [2]J.E.Baker,I.F.Cruz,G.Liotta,andR.Tamassia.\TheMochaalgorithmanimationsystem".InProc. Germany.1996. [4]R.Bentley,T.Horstmann.\SupportingcollaborativeinformationsharingwiththeWorldWideWeb:the Proc.Int.WorkshoponAdvancedVisualInterfaces,pp.203-212,1996. Int.WorkshoponAdvancedVisualInterfaces,pp.248-250,1996. [5]R.Bentley,U.Busbach,K.Sikkel.\TheArchitectureoftheBSCWSharedWorkspaceSystem".In: stituteoftechnology,cambridge(usa)1995. BSCWSharedWorkspacesystem".WorkshoponWorldWideWebandCollaboration,MassachusettsIn- [6]Brown,M.H.,Sedgewick,R..\ASystemforAlgorithmAnimation".InProceedingsofACMSIGGRAPH [7]Brown,M.H.,Sedgewick,R.\TechniquesforAlgorithmAnimation".IEEESoftware,2(1):28-39,1985. `84,(pp.177-186).NewYork:ACM.1984 ProceedingsoftheERCIMworkshoponCSCWandtheWeb.SanktAugustin,Germany,February1996. [9]Brown,M.H.\Zeus:ASystemforAlgorithmAnimationandMulti-ViewEditing".InProceedingsofIEEE [8]Brown,M.H.\AlgorithmAnimation".NewYork:MITPress. [10]M.H.Brown,J.Hershberger.\ColorandSoundinAlgorithmAnimation".Computer,n.25.pp.52-63.1991. WorkshoponVisualLanguages,(pp.4-9).NewYork:IEEEComputerSocietyPress.Seealso:Brown,M. [11]D.M.Chiu,D.Grin.\WorkgroupWebForum:ToolsandapplicationsforWWW-basedgroupcollaboration".WorkshoponWorldWideWebandCollaboration,MassachusettsInstituteofTechnology,Cambridge H.\Zeus:ASystemforAlgorithmAnimationandMulti-viewEditing".(ResearchReportNo.75).DEC SystemsResearchCenter,PaloAlto,CA. [12]A.vanDam.\TheElectronicClassrom:Workstationsforteaching".Intnl.JournalofMan-MachineStudies"..21(4),pp.353-363,1984. oftheercimworkshoponcscwandtheweb.sanktaugustin,germany,february1996. (USA)1995. [13]D.Decouchant,M.RSalcedo.\Alliance:AStructuredCooperativeEditorontheWeb".In:Proceedings [14]P.DeBra,A.Aerts.\Multi-UserPublishingintheWeb:DRess,ADocumentRepositoryServiceStation". [15]A.Dix.\ChallengesandPerspectivesforCooperativeWorkontheWeb".In:ProceedingsoftheERCIM In:ProceedingsoftheERCIMworkshoponCSCWandtheWeb.SanktAugustin,Germany,February workshoponcscwandtheweb.sanktaugustin,germany,february1996.
[17]J.I.Griera.\ManagingCSCW".In:ProceedingsoftheERCIMworkshoponCSCWandWeb.Sankt [16]D.Dwyer,K.Barbieri,H.M.Doerr.\CreatingaVirtualClassroomforInteractiveEducationontheWeb". [18]T.Gruber.\CollaboratingaroundSharedContentontheWWW".WorkshoponWorldWideWeband Augustin,Germany,February1996. Proc.ofWWW95,ThirdInternationalConferenceonWorldWideWeb. [19]B.Ibrahim,S.D.Franklin.\AdvancedEducationalUsesoftheWorldWideWeb".Proc.ofWWW95,3rd [20]J.B.Kruskal.\Ontheshortestspanningsubtreeofagraphandthetravelingsalesmanproblem".Proc. Collaboration,MassachusettsInstituteofTechnology,Cambridge(USA)1995. InternationalConferenceonWorldWideWeb. [22]K.MehlhornandS.Naher:\LEDA:APlatformforCombinatorialandGeometricComputing",CommunicationsoftheACM,38(1),96{102,1995. [url:http://www.w3.org/pub/www/collaboration] [21]K.MacArthur.\Collaboration,KnowledgerepresentationandAutomatability". Amer.Math.Soc.7(1956),pp.48{50. [23]D.R.Newman,\HowcanWWW-basedgroupwarebettersupportcriticalthinkinginCSCL".In:ProceedingsoftheERCIMworkshoponCSCWandtheWeb.SanktAugustin,Germany,February1996. [24]R.Peters,C.Neuss.\CrystalWeb{ADistributedAuthoringEnvironmentfortheWorldWideWeb".Proc. [25]Price,B.A.,Baecker,R.M.,andSmall,I.S.\APrincipledTaxonomyofSofwareVisualization".Journalof [26]M.Roscheisen,T.Winograd.\GeneralizedAnnotationsforSharedCommenting,ContentRating,and ofwww95,3rdinternationalconferenceonworldwideweb. VisualLanguagesandComputing4(3):211-266. [27]J.T.Stasko.\Tango:AFrameworkandSystemforAlgorithmAnimation".IEEEComputer,23(9),pp. OtherCollaborativeUsage".WorkshoponWorldWideWebandCollaboration,MassachusettsInstituteof Technology,Cambridge(USA)1995. [29]J.T.Stasko.\SupportingStudent-BuiltAlgorithmAnimationasaPedagogicalTool".InProc.ofofthe [28]J.T.Stasko,E.Kraemer.\AMethodologyforBuildingApplication-SpecicVisualizationsofParallelPrograms".Tech.Rep.GIT-GVU-92-10.(ftp://ftp.cc.gatech.edu/pub/gvu/tech-reports/92-10.ps.Z) 27-39,1990. [30]SoftwareVisualization.JohnT.Stasko,JohnB.Domingue,MarcH.Brown,andBlaineA.Price(Eds.). ACMSIGCHI'97ConferenceonHumanFactorsinComputingSystems,Atlanta,GA,USA.1997. [31]R.E.Tarjan,J.vanLeeuwen.\Worst-caseanalysisofsetunionalgorithms.J.Assoc.Mach.31(1984), [32]S.Virdhagriswaran,M.Webb,J.Mallatt.\SharedInformationSpace:AnInteractive,CollaborativeSystem MITPress,1998. EnablementPerspective".WorkshoponWorldWideWebandCollaboration,MassachusettsInstituteof Technology,Cambridge(USA)1995. pp.245{281.