UsingAutomaticMemoizationasa SoftwareEngineeringToolin

Size: px
Start display at page:

Download "UsingAutomaticMemoizationasa SoftwareEngineeringToolin"

Transcription

1 UsingAutomaticMemoizationasa SoftwareEngineeringToolin ComputerScienceDepartment JamesMayeld Real-WorldAISystems UniversityofMarylandBaltimoreCounty Baltimore,MD MartyHall ScienceApplicationsInternationalCorp. 9841BrokenLandParkway,Suite118 Columbia,MD21046 UniversityofMarylandBaltimoreCounty ComputerScienceDepartment TimFinin Baltimore,MD April1994 detailedtreatment.thispaperdescribeshowautomaticmemoizationcanbemadeviableonalargescale. automationofmemoizationasapracticalsoftwareengineeringtoolforaisystemshasneverreceiveda cussedsincethesixtiesandareoftenusedasexamplesinintroductoryprogrammingtexts.however,the MemofunctionsandmemoizationarewellknownconceptsinAIprogramming.Theyhavebeendis- Abstract Itpointsoutadvantagesandusesofautomaticmemoizationnotpreviouslydescribed,describesthecom- 1

2 Track:EnablingTechnology. apubliclyavailablememoizationpackage(clamp)forthelispprogramminglanguage.experiencein applyingthesetechniquesinthedevelopmentofalargeplanningsystemarebrieydiscussed. ponentsofanautomaticmemoizationfacility,enumeratespotentialmemoizationfailures,andpresents Words:5869. Correspondence.Pleaseaddressallcorrespondenceto:JamesMayeld,ComputerScienceDepartment, Subtrack:SoftwareEngineering. UniversityofMarylandBaltimoreCounty,Baltimore,MD Voice: Fax:

3 theautomationofmemoizationasapracticalsoftwareengineeringtoolforaisystemshasneverreceived 1Introduction adetailedtreatment.thispaperdescribeshowautomaticmemoizationcanbemadeviableonalarge scale.itpointsoutadvantagesandusesofautomaticmemoizationnotpreviouslydescribed,itemizesthe MemofunctionsandmemoizationarewellknownconceptsinAIprogramming.Theyhavebeendiscussed componentsofanautomaticmemoizationfacility,enumeratespotentialmemoizationfailures,andpresents sincethesixtiesandareoftenusedasexamplesinintroductoryprogrammingtexts[16,13,14].however, thelisp1programminglanguage.wewillalsobrieydiscussourexperienceinapplyingthesetechniquesin apubliclyavailablememoizationpackage(clamp CommonLispAutomaticMemoizationPackage)for thedevelopmentofthesignaturemanagementsystem(sms)[18],adecisionsupportsystemthatprovides Itreferstothetabulationoftheresultsofasetofcalculationstoavoidrepeatingthosecalculations.Automaticmemoizationreferstoamethodbywhichanordinaryfunctioncanbechangedmechanicallyintoone thatmemoizesorcachesitsresults.weplacethedecisionaboutwhichfunctionstomemoizeinthehands oftheuser;thiscontrastswiththeapproachofmostowandcohen[11],whichtriestoautomaticallyinfer Theterm\memoization"isderivedfromtheterm\memofunction,"whichwascoinedbyDavidMichie[10]. submarinecrewswithsituationalawarenessandoperationaladviceinordertoreducedetectability. althoughasmostowandcohenpointout,thelatterapproachisnotapracticaltool. whichfunctionsshouldbememoized.thesetwoapproachestoautomaticmemoizationarenotincompatible, ofmostaisystems. theoutset,automaticmemoizationfacilitatesthekindofexploratoryprogrammingusedinthedevelopment beingassuredofreasonableperformance.byallowingtheprogrammertoavoidetheseeciencyconcernsat Automaticmemoizationallowstheprogrammertowritecertainfunctionswithoutregardtoeciency,while MemoizationisparticularlyaptforAIapplications.RapidprototypingisahallmarkofAIprogramming. functionalprogramming[5],andnaturallanguageparsing[12]havebeendescribedintheliterature.in allofthecasesthatwehavereviewed,theuseofmemoizationwaseitherbuiltintoinaspecialpurpose 1Throughoutthispaper,weusethenameLisptorefertothelanguageCommonLisp,asdescribedinSteele[15]. Theprincipleofmemoizationandexamplesofitsuseinareasasvariedaslogicprogramming[17,7,3], 3

4 computingengine(e.g.,forrule{baseddeduction,orcfgparsing),ortreatedinacursorywayasanexample softwareengineeringtechniqueunderhumancontrolhasneverreceivedadetailedtreatment.inthispaper, wereportonourexperienceindevelopingclamp,apracticalautomaticmemoizationpackageforcommon ratherthantakenseriouslyasapracticaltechnique.theautomationoffunctionmemoizationasapractical Lisp,anditsuseinalarge{scaleAIproject. Figure1.Thisalgorithmisusedtodeterminecoecientsofinterpolatedpolynomials.Thealgorithm,which isastandardoneinnumericalmethods,istakendirectlyfromnumericalmathematicsandcomputing[1]. Bymeansofillustration,considerthedivided{dierencealgorithmdd,whichisshowninpseudo{codein andhigh=10andanotherrecursivecallwithlow=1andhigh=9;eachofthesewillinturnmakearecursive computation.forexample,acalltoddwithlow=1andhigh=10willgenerateonerecursivecallwithlow=2 atree;thus,arecursivecalltoddwithparticularargumentsmayberepeatedmanytimesduringasingle ofinteresttoushere.thecalltreeforthedivideddierencealgorithmddformsanetworkratherthan Theapplicationitselfisnotparticularlyimportant;itistherun{timebehaviorofthealgorithmthatis thedivideddierencealgorithm,usingf(n)=cos(n)andtherstnnaturalnumbersasarguments.since callwithlow=2andhigh=9.memoizationofddcauseseachcalculationtobeperformedonlyonceand storedinatable;thereafter,eachrepeatedrecursivecallisreplacedbyatablelookupoftheappropriate value. ofpointsiscalculatedmorethanonce,andthereare(n2+n)=2subsequences.subsequentinvocationstake (2n)timecomplexity.Aftermemoization,therstinvocationrequires(n2)time,sincenosubsequence asinglefunctioncallonnpointsgeneratestworecursivecallsonn?1points,theunmemoizedversionhas Figure2comparestheperformanceofmemoizedandunmemoizedversionsofaLispimplementationof near{constanttime. istouseanautomaticmemoizationpackagetoconverttheelegantbutinecientrecursivealgorithmintoa recursivedenitionswhicharesimplyunusableformostrealproblems.theconventionalresponsetothis situationistomanuallyrewritethealgorithminadynamicprogrammingstyle.ofcourse,suchmanual rewritingofthecodetakeseortandinvolvestheriskofintroducingnewbugs.anattractivealternative Thisalgorithmfordivideddierenceistypicalofalargeclassofalgorithmswhichhaveveryelegant 4

5 ;divided-differencealgorithm dd(points:array, begin iflow=highthen low:array-index, high:array-index, fn:function) end elsereturn(dd(points,low+1,high,fn)- returnfn(points[low]) (points[high]-points[low]) dd(points,low,high-1,fn))/ Figure1:Thedivideddierencealgorithmfordeterminingcoecientsofinterpolatedpolynomialscanbe elegantlywrittenusingrecursionandmadeecientthroughtheuseofautomaticmemoization nunmemoizedmemoizedmemoized (rstrun)(subsequentruns) Centuries isreducedfrom(2n)to(n2)forinitialrunsandtonear{constanttimeonsubsequentones. Figure2:ThistableshowsthebenetsofmemoizationonaLispimplementationofdd.Thetimecomplexity

6 rewritingcodebyhand.sectionfourdescribesthegeneralcomponentsthatshouldbepresentinany describedintheliterature.sectionthreecomparestheuseofautomaticmemoizationtothealternativeof realapplication. usefulone.thisisattractive,ofcourse,onlyifsuchapackagecanaddressthepracticalproblemsfacedin variouswaystoaddressthem.sectionsixdescribesourexperienceinusingautomaticmemoizationinin automaticmemoizationfacility.sectionvepresentsproblemsinherentintheuseofmemoizationandthe Inthenextsectionwedescribethesomeoftheaspectsandusesofautomaticmemoizationnotpreviously Therearefourmainusesofautomaticmemoization.Twooftheseinvolvetheavoidanceofredundant 2UsesofMemoization thedevelopmentofsms alargedecisionsupportsystem. calculation,rst,withinasinglefunctioninvocation,andsecond,acrossinvocations.thethirduseof arenotconjecturedusesbutoneswhichwefoundtobeeectiveinmanysituationsinalarge,real{world AIapplication.Wediscusseachoftheseusesinmoredetailinthefollowingsubsections. 2.1RepetitionwithinaFunctionCall automaticmemoizationisasapre{calculationtool,whilethefourthisasatimingandprolingtool.these call.inthedivideddierenceexamplepresentedabove,thereweremanyrepeatedrecursivecallswithina Themostcommonuseofmemoizationistoavoidtherepetitionofsub{calculationswithinasinglefunction singlefunctioninvocation.thistypeofrepetitioniscommon.forexample,asimplerecursivebacktracking thathasthesamebehaviorasadynamicprogrammingalgorithm;ratherthandeterminingtheproper parsermayparsethesameconstituentmanytimesduringasingleparse;thusitsperformanceispoor. orderinwhichtoconstructsubpieces,memoizationofasimplesolutioncantypicallyachievethesame algorithm[4]throughtheapplicationofmemoization. Norvig[12]hasshownthatsuchanalgorithmcanobtaintheperformanceofchartparsing[8]orofEarley's performance[2].again,throughautomaticmemoizationonecan,inmanycases,achievethebenetsofa Thus,wecanviewmemoizationasatechniquetoautomaticallyconvertarecursivealgorithmintoone 6

7 Inateamprogrammingenvironmentdierentsectionsofasystem,writtenbydierentprogrammers,may 2.2RepetitionoverTime toholdtheintermediateresults. dynamicprogrammingapproachwithoutrewritingthecontrolstructureorintroducingnewdatastructures timesthatmakeuseofsomethesamepieces.inthesecases,thereisnocentralroutinewhichcouldmanage accessthesamefunction.alternatively,inaninteractivesystemtheusermayinvokecalculationsatdierent insuchcasesistohavetheroutineinquestionmanageitsowndatastructurestocachepreviousresults. thecallingsequencetoavoidrepetitionofthecalculations.theonlyalternativetoautomaticmemoization Theprecedingsubsectionsshowedthatmemoizationcaneliminatetherepeatedinvocationofexpensive 2.3Persistence calculations.thesetwoapplicationsofmemoizationareusefulwhenitisfeasibletoperformtherst invocationofafunctionatrun{time.memoizationisalsousefulwheneventherstinvocationistoo expensivetoperformatrun{time. purposedatale,andstoringinittheresultsofano{lineexecutionoftheexpensiveroutine.then, thefunctioninquestionismodiedtoaccessthatle.automaticmemoizationprovidesamethodto memoizationeliminatestheneedfortheprogrammertoknowwhichrangesofvaluesarestoredinthedata pre{calculateafunctionwithouttheoverheadofahand{craftedsolution.insuchsituationsautomatic Useoffunctionsthataretooexpensivetocalculateatrun{timeisusuallydonebybuildingaspecial andthenruno{lineonthecasesofinterest.thecontentsofthehashtablearethensavedtodisk.the le,andwhichmustbecalculated.toachievepersistenceofanexpensivefunction,thefunctionismemoized functionaredeterminedautomatically.thatis,theprogrammerdoesnothavetospecifytherangeof allpossibleinputstothememoizedfunctionarepre{calculated.second,theinputvaluestothememoized savedleislaterusedtoseedthehashtableforthefunctionwhenitisreloaded. calculateafunction.first,itallowstheeliminationoffunctionsfromtherun{timesystemincaseswhere Therearetwoadditionaladvantagesofthistypeofmemoizationbeyondprovidingtheabilitytopre{ 7

8 possibleinputstothememoizedfunction.infact,thissolutionworkseveniftheprogrammerhasnoidea whichinputvalueswillbeused. 2.4TimingandProling systemsprovideaprolingfacilitywherebytheusercanseethetimethatatop{levelfunctionspendsin cantakethirtytimeslongerthananunmeteredrun.thisdoesnotincludethetimerequiredtoload Finally,automaticmemoizationcanalsousedasaprolingandtimingtool.Manyprogramminglanguage variouslower{levelroutines.thisisimportantfordirectingoptimizationeorts.however,theseprolers generallyrequiresignicantoverhead.forexample,afully{meteredlisprunonasymbolicslispmachine themeteringsystem.theexpenseofmeteringisworththeeortforimportantcases,andisavaluable softwareengineeringtool.insmallercases,however,automaticmemoizationprovidesaquickbutrough methodfordeterminingwhichroutinestooptimize.ratherthanrunningthefullymeteredsystem,users interactivelymemoizecertainfunctions,thenrepeattheoriginaltestcasetwice.ifthetimingforthesecond caseimprovesonlyby,forexample,vepercent,thenforthattestcase,noamountofoptimizationinthe routinesinquestionwillprovidemorethanavepercentspeedup.ifontheotherhandagreatspeedupis seen,thenthememoizedfunctionsaregoodcandidatesforoptimization. memoization,dynamicprogramming,anddevelopmentofanewalgorithm.first,memoizationneednotbe automated.memoizingaroutinebyhandcouldconceivablyresultinminoreciencygainsoverautomated Therearethreealternativestoautomaticmemoizationforeliminatingrepeatedcalculation:hand{crafted 3AlternativestoAutomaticMemoization memoization.second,insomecasesanorderingcanbefoundforthecalculationstobeperformedsuch ofcomputerprogramming[9],knuthpresentsastraightforwardmethodforcalculatingdivideddierences intheproperordertogetthesameperformanceastherstinvocationofthememoizedversionpresented intheintroduction.finally,anewalgorithmforagiventaskcanbesoughtthatdoesnotrequirerepeated calculations. thatfullmemoizationisnotneeded.forexample,involume2(seminumericalalgorithms)ofhistheart 8

9 memoizationovertheotherapproachesdescribedabove.theyfallintothreecategories:qualityofsolution, themajorbenetofthedevelopmentofanewalgorithmisasavingsinrepeatedcalculations,automatic easeofuse,andadditionalusesofmemoization. memoizationofanexistingalgorithmhasseveraladvantages.theseadvantagesalsorecommendautomatic Automaticmemoizationisnotasubstituteforndingtheproperalgorithmforatask.However,when 3.1Qualityofsolution does.thislastpointisespeciallyimportantinthedevelopmentoflarge,complexsystemwherethereis notrisktheintroductionofbugsintothefunctiontothesamedegreethatdevelopingnewcodeforthetask functiontobememoizedhasalreadybeenwrittenanddebugged,theuseofautomaticmemoizationdoes eciencyimprovementdoesnotappearinthebodyofthefunctionbeingimproved.furthermore,ifthe Automaticmemoizationusuallyleadstoshort,clearimplementations,becausethecodetoimplementthe anaturalreluctancetochangeroutinesthathavealreadybeentestedandveried,especiallyifthatwill requirechangesinmultipleplacesinthecode.furthermore,becauseitissimpletoswitchbackandforth Inmostlanguagesautomaticmemoizationcanbeimplementedsothatitissimpletomemoizeandunmemoize 3.2Easeofuse functions.noneofthealternativestoautomaticmemoizationcanboastsuchalightloadontheprogrammer. betweenthememoizedandunmemoizedversions,itiseasytocomparetheperformancesofthetwoversions. thedesignofsuchapplicationstendstochangerapidlyandfrequently. maintainingnewcode.thiseaseofuseisespeciallyimportantinarticialintelligenceapplications,because 3.3Additionaluses Again,thiseaseofusedependsinpartonavoidingtherequirementofwriting,debuggingandeventually not,ingeneral,providetheotherbenetsofautomaticmemoization,i.e.persistenceofcachedvaluesand Whilethealternativestoautomaticmemoizationmentionedaboveeliminaterepeatedcalculations,theydo usefulnessasatimingandprolingtool.itwouldbepossible,ofcoursetobuildinsomeofthesefeatures 9

10 onlyonce inthegeneralmemoizationfacility. tothedevelopmentofthesmssystem. suchasapersistentcachemechanism.however,theautomaticmemoizationapproachrequiresustodothis buildingrealsystems.hallandmayeld[6]describesomeoftheseadvantagesinmoredetailastheyapplied Theresultofthesebenetsisthatautomaticmemoizationoerssignicantpracticaladvantagesin BasedonourexperienceindevelopingandusingCLAMP,wehaveidentiedcharacteristicsthatanyautomaticmemoizationfacilityshouldhave.Automatedmemoizationofsomesortcanbeimplementedin mostlanguages.languagesthatprovidetheuserwithaninteractiverun{timeenvironment(suchaslisp, DylanandML)musthaveeitherrun{timefunctionnameresolutionorapatchablecodesegmenttoallow automatedmemoization.languagesthatarestrictlycompiled(suchasmostimplementationsofc)must 4ComponentsofanAutomaticMemoizationFacility 4.1MemoizationControl beaugmentedwithsomesortofpreprocessortoallowautomatedmemoization. First,thesystemmustprovidetheuserwithavarietyofmethodstoeasilymemoizeandunmemoizefunctions. functions,cachecontrolfunctions,andstatisticsreportingfunctions.wewilldiscusseachinturn. Threetypesofcontrolfunctionsmakeupausefulmemoizationpackage:memoizationandunmemoization afunction,unmemoizeallfunctions),andalso,ifpossible,temporarymemoizationcommands(e.g.treat evaluatingaparticularexpression). afunctionasmemoizedwhileevaluatingaparticularexpression,treatafunctionasunmemoizedwhile Thesemethodsshouldallowbothabsolutecontrolovermemoization(e.g.memoizeafunction,unmemoize experimentationshowsnobenetsfromdoingso.2 hisorherprogram.itisnotalwaysobviouswhatimpactmemoizingafunctionwillhave.forexample,at rstglance,thehailstonefunctionshowninfigure3lookstobeagoodcandidateformemoization,but 2Ofcourse,somecarefulreasoningwillalsoleadaprogrammertothesameconclusion,butnotallprogrammerswillhave Itisimportanttoallowtheprogrammertoexperimentwiththeeectsofmemoizationinthecontextof 10

11 (defunhailstone(n) (+1(cond((=n1)0) ((evenpn)(hailstone(/n2))) 4.2CacheControl Figure3:TheHailstonefunctionappearstobeagoodcandidateformemoization,butitisnot. (t(hailstone(+1(*3n))))))) Second,thesystemmustprovidemethodstocontrolindividualmemoizationcaches,bothforasinglesession andacrosssessions.mostimportantistheabilitytoexplicitlyclearacache,therebyforcingallfunction savedtodisk,andinalatersession,toinstructthatsuchasavedcachebereadfromdisk.easeofuse returnvaluestobere{calculated.persistenceisprovidedbyallowingtheusertoinstructthatacachebe concernsdictatethatthesemethodsbeactivatedbyreferringtothenameofthememoizedfunction,and nottothenameofadiskleortosomeotherinternaldatastructure. thenumberoftimesthatsuchinvocationsresultinthereturnofacachedvalue.theusershouldalsobe functionisrunning.thesestatisticsshouldincludethenumberoftimesamemoizedfunctioniscalled,and 4.3DataControl allowedtoresetthesestatisticsinpreparationforanewrun. Finally,thememoizationpackageshouldprovideroutinesthatreportstatisticscollectedwhileamemoized 5MemoizationFailures thetimeandexperiencetodothistypeofanalysis. Amajoradvantageofautomaticmemoizationisitstransparency.However,anoverly{transparentviewcan (notablybymostowandcohen[11]),mosthavenot.instead,welearnedthemthehardwayinusingthe leadtoproblems.whilesomeaspectsofthesememoizationfailureshavebeendiscussedintheliterature 11

12 severalyearsindevelopingthesmssystem. useditisthattheuseofatechniquethatcannotguaranteecorrectresultsafteritsapplicationisoutof evolvingclampsystemthroughtheexperiencesofaiprogrammersusingthefacilityoverthecourseof thequestion.thiscomplaintisunfounded.asacounterexample,atechniquethatiswidely{usedbyc programmersisfunctionin{liningthroughmacroexpansion.suchmacroexpansionisnotguaranteedto producethecorrectresultsinallcases.however,becausetheprogrammercontrolswhenmacrosareapplied, Themostcommoncriticismofautomaticmemoizationthatwehearfromprogrammerswhohavenot 5.1CacheConsistency thetechniquecanbeusedprotably.itisforthisreasonthatweadvocateprogrammercontroloverthe Memoizationisusedtoavoidrecalculationwhenafunctionisinvokedwithargumentsithasseenpreviously.Directchangestothefunctionshouldresultinthememoizationcachebeingushedautomatically,as ofallfunctionsinitscalltree,andrequirethatthecachebeushedwhenanyofthoseentriesismodied. Thiscouldnotbedoneautomaticallyatrun{timewithouttheuseofspecialdatastructuresintheunmemoizedfunctions;thiscapabilityisunlikelytobeadoptedinmostprograms.Inmanycases,aproperuseof todetectisthealterationofoneormoreofthesub{functionsthatthememoizedfunctioncalls.thereare severalwaystoalleviatethisproblem.thebestmethodwouldbeforeachmemoizedfunctiontokeepalist haveencounteredinmakingdecisionsaboutwhichfunctionstomemoize. selectionoffunctionsformemoization.inthefollowingsubsections,wedescribethepotentialpitfallswe presumablyitwillthencontainincorrectvalues.thissituationisrelativelyeasytodetect.moredicult goalwillbecompromised. fortheprogrammertoadopt.ifusingmemoizationrequiresinvasivechangestounmemoizedroutines,this Thisisatrade{o.Oneofthegoalsofanautomaticmemoizationfacilityistoprovidetoolsthatareeasy thecurrentlymemoizedfunctions,awarningtocheckthelistwheneverchangesaremadeisoftensucient. modularitywillindicatehowfarchangesarelikelytopropagate.sincetheuseralwayshasaccesstoalistof Run{timechangestofunctionsusuallyoccurduringdevelopment.Ifcachesarenotsavedtodisk,the Howeverthisproblemisaddressedwithinasinglesession,itisusuallynotaproblemacrosssessions. 12

13 memoizedroutineswillonceagaincalculatecorrectvaluesthenexttimethesystemisloaded. nodierentfromnormaldatales,andthesameproblemsofoutdatedversionsapply.nofullyautomated solutionwillguaranteeconsistency,shortofasystembuilderthatforcesrecalculationofallsavedvalues whenevertherearechangesinanycodeonwhichthefunctiondepends.thisisnotanunreasonableoption duringdevelopment,sincethememoizationfacilitymakesiteasytosaveentries.o{linecalculationscan Cachesthataresavedtodiskpresentamuchmoreseriousproblem.Insomesenses,suchcachesare beperformedatregularintervals.however,thereisstillanincentivetolimitthesecalculations,sincetheir recalculatememoizedvalues.first,theprogrammerspeciesapercentageoftheentriesthataretobe theoriginalfunctioneventhoughitsargumentshavebeenseenbefore.ineachcase,theserecalculatedvalues recalculatedonloadingthehashtable,and/orapercentageoftimeswherethememoizedfunctionwillinvoke time{consumingnatureiswhatledtosavingthetablestodiskintherstplace. arecomparedtotheoriginalones;awarningisgiveniftheresultsarenotidentical.load{timerecalculation Onewaytolimitthelikelihoodofinadvertentuseofobsoletevaluessemi{automaticallyistoperiodically maynotbepossible,ofcourse,sincealltheroutinesneededforacalculationmaynotbeavailablewhenthe specication,ifthesystemiscountingonagivenlevelofperformance.evenifbothtechniquesareused, theydonotguaranteethatallobsoletevalueswillbefound.thus,thesetechniquesshouldbeusedasa thanasareplacementforthem. functionisdened.similarly,run{timerecalculationmaynotbedesirable,evenwithaverylowpercentage 5.2Non-Functions Memoizationonlyworksfortruefunctions,notprocedures.Thatis,ifafunction'sresultisnotcompletely complementtoothersoftwareengineeringtechniques(suchasexplicitmaintenanceofdependencies),rather programmingstylethroughoutthesystem. numberoffunctionsthatcanbememoizedsuccessfullywillbeincreasedbyencouragingtheuseofafunctional anddeterministicallyspeciedbyitsinputparameters,usingmemoizationwillgiveincorrectresults.the 13

14 5.3ModicationofResults whenrstwritten,butwillmakesubsequentmodicationsdicult.however,insomecasestheycanleadto iscalled.thus,memoizedfunctionscanreturnresultsthatsharestructures,eveniftheunmemoizedversion Inherentintheideaofmemoizationisthatdataisstored,ratherthancalculatedaneweachtimeafunction alwayscreatesnewstructures.evenwithoutmemoization,operationsthatmodifyfunctionresultsare eciencygains;withcare,programmerscanusethemtospeedupthefunctionsthatcanreallybenetfrom theiruse.unfortunately,thetransparentviewofmemoizationbreaksdownwhenusedwithsuchroutines. dangerousfromasoftwareengineeringperspective.acommonproblemisthatsuchroutineswillworkne functionnormalized-data,whichdestructivelyremovesthemaximumandminimumentriesfromthelist eachsubsequentretrievalofsupposedlyidenticaldatavaluesmightinfactreceiveashorterlist.avoiding beforereturningit.priortomemoization,thismightbeperfectlysafe.aftermemoizingraw-data,however, thisproblemnotonlyrequirestheuserofmemoizationtoknowhowthefunctiontobememoizedworks, Forinstance,supposethatfunctionRaw-Datareturnsanewly{createdlistofnumbers.Itiscalledbythe functionsthattrulyneedtousethem. 5.4CompilerOptimizationofRecursiveCalls thestandardsonwhenmodifyingoperationsareallowed,andtorequireincreaseddocumentationforthose butalsohowitwillbeusedbyotherfunctions.thisisoftenadiculttask;aneasierapproachistotighten memoizationprocess.toavoidthisproblem,thecompilermustbeinstructednottoeliminatetail{recursion tioneliminatestherecursivefunctioncall,butnottheworkrequiredtocalculatethefunction'sresult.since memoizationreliesonexplicitfunctioncallstoactivateitstable{lookup,suchoptimizationwillbypassthe inmemoizedroutines.compilersthatdooptimizetail{recursionusuallyprovideanappropriatecompiler Somecompilerswilloptimizethecodetheyoutputbyconvertingtail{recursiontoiteration.Suchoptimiza- atrun{time.suchcompilerswilloftenbypassthenameresolutionprocessfordirectrecursion.when memoizationisimplementedbybindingthememoizedfunctiontotheoriginalfunctionname,thisonce directive,forusebythememoizationmachinery. Amoresubtleoptimizationissometimesmadebycompilersforlanguagesthatresolvefunctionnames 14

15 againresultsinacircumventionofthememoizationtable{lookup.thefunctionwillstillreturncorrect results,butthecomputationsavingsprovidedbymemoizationwillbelost.itislesscommonforacompiler togivetheuserexplicitcontroloverthiskindofoptimization.3 theresultsoftheoptimized{awayrecursivecallswillnotbecached,theresultsofthetop{levelcallswillbe cached.inthetermsoftheusecategoriesdescribedinsection2,thebenetsofrepetitionwithinafunction callarelostbutthoseduetorepetitionovertimearenot. Notethatthisproblemcaneliminatesome,butnotall,oftheadvantagesofmemoization.Although 5.5RecognizingCallEquivalence default.iffunctionfooisdenedas: Memoizationisperformedbydoinganexactmatchontheargumentlist,usingtheLispfunctionequalby andismemoized,allofthefollowingwillbetreatedasdistinct,eventhoughtheparametershaveidentical valuesinallcases: (defunfoo(&key(bar2)(baz3)...) (Foo) (Foo:Bar2) (Foo:Bar2:Baz3) that,forinstance,2isnotequalto2.0,and isnotequalto ,eventhoughthefunction Similarly,onecanhavecounterintuitiveresultswhentheargumentsareoatingpointnumbers,forgetting (Foo:Baz3) maytreatthemasidentical.thesolutionadoptedbythesmsprogramistointroduce\wrapper"functions (Foo:Baz3:Bar2) thatthecommercialcommonlispsystemwewereusingfailedtofollowthatdirective. form,thenpassthemontoaninternalfunctionthattakesonlyrequiredargumentsinthestandardformat. Itisthisinternalfunctionthatisthenmemoized. thattakekeywordarguments,oatingpointnumbers,etc.,canonicalizetheargumentsintosomecommon 3CommonLispcompilershavethenotinlinedirectiveforthis,althoughwediscoveredinthecourseofdevelopingCLAMP 15

16 5.6CacheValueRepresentation Inthecurrentsystem,theroutinesthatsavedatatodiskdosobyprintingtherepresentationoftheobject usingformat,directingtheoutputstreamtoale.thismeansthatlispobjectswhoseprintrepresentation cannotbeparsedbyreadcannotbesavedtodisk.someobjectssuchasclosinstancesandstructures allowthedenitionofacustomprintfunction,andthiscansometimesbeusedtosavethemtodisk.but thisisnotageneralmechanism,andspecial{purposecodewillneedtobewritteninthosecases. awarenessandoperationaladvicetohelptheshipreduceitsoveralldetectability.ithasbeendeveloped TheSignatureManagementSystem(SMS)isadecisionaidforsubmarinecrewsthatprovidessituational 6ExperienceandEvaluation CommonLisp,withtheremainderinC;itrunsonUNIXplatforms. andtwouniversitiesonthedevelopmentteam.thesystemcombinesavarietyofrepresentationsincluding overthelastveyearsunderarpafundingatthejohnshopkinsuniversityappliedphysicslaboratory (JHU/APL).OutsideofAPL,teammembershavecomeprimarilyfromindustry,witheightcorporations frames/objects,productionrules,mathematicalmodels,andproceduralcode.about75%iswrittenin memoization.allfourusesdescribedinsection2wereusedextensivelybymultipleprogrammers. threedierentcompanies.\permanent"memoization(i.e.usesotherthanproling)remainsinthereleasedsystemin25places.however,useasarst{cutprolingtoolwasoneofthemostcommonusesof TheautomaticmemoizationsystemwasusedintheSMSprogrambyatleastsixLispdevelopersfrom aftervarioususesofmemoizationwereputintoeect.ignoringthebenetswhentheuserasksforthesame 6.1SMSMagneticsModule memoizationonthersttimeinvocationofthetop{leveldisplay(whichisshowninfigure5).timesarein displayatdierenttimes(whichisinfactquitecommon),figure4givesasummaryofthetimebenetsof seconds,andareconservativeapproximations.similarresultswereobtainedwithothermodules. Figure4givestimingstatisticsforamagneticsmoduleusedintheSignatureManagementSystem,timed 16

17 aspect unmemoizedoriginal +conventionaloptimization +repetitionsovertime +dynamicprogrammingtime(sec)speedup +savedlookuptables , magneticsmoduleusedinthesignaturemanagementsystem. 6.2SMSDetectabilityPlanningDisplay Figure4:Theseguresshowthecumulativeeectsofthedierentaspectsofautomaticmemoizationona (theta)indicatingheading(0correspondingtoduenorth),andtheradius(r)correspondingtospeed.each detectionofthesubmarineforvariouschoicesofheadingandspeed,drawnonapolarplotwiththeangle estimatetheoverallcontributionofmemoizationtothesystem.forinstance,figure5showsadisplay usedasanaidtoplanningsubmarineoperationsinthesmssystem.itshowsthepredictedprobabilityof GiventhediverseusesofmemoizationbyvariousprogrammersontheSMSprogram,weattemptedto (r,theta)pair(arc)inthedisplayiscodedwithacolorindicatingthecumulativeprobabilityofdetectionfor methodsorsignatures.theuserfrequentlyisinterestedinthecontributionofindividualsignaturecomponentstothiscomposite.sincetheprobabilityofdetectionofeachcomponentismemoizedbeforeitis combinedintothecomposite,anycomponentcorrespondingtoapointonthedisplaycanberetrievedalmost Thisdisplayisusedasahigh{leveltoolinplanning,andthusincludeshighlysummarizedinformation. thesubifitweretooperateattheindicatedcourseandspeed. Itpresentsasinglenumberforprobabilityofdetectionwhichisacompositeofallthepotentialdetection computation. instantly.takingadvantageofthis,thedisplayoffigure6canbemaintainedwithvirtuallynoadditional speedandcourseforthepointunderthemouseiscalculated.then,theindividualcomponentsarecalculated, withtheirrelativevaluesshowninthebarcharts.duetotheeectsofmemoization,thecomponentvalues Whenevertheusermovesthemouseoverthecompositedetectabilitydisplay(Figure5),thecorresponding 17

18 probabilityofdetectionforthesubifitweretooperateatthecourseandspeed. indicatingheading,andtheradiuscorrespondingtospeed.eacharciscolorcodedtoindicatethecumulative ofdetectionofthesubmarineforvariouschoicesofheadingandspeed,drawnonapolarplotwiththeangle Figure5:Thetop{leveldisplayfromtheSMSsubmarineplanningsystemshowsthepredictedprobability 18

19 Theresults,giveninFigure7showa631ximprovementinspeed,anda4,822ximprovementintheamount canbecalculatedandgraphedasquicklyastheusercanmovethemouse. oftemporarymemory(garbage)allocated.benchmarksarenotoriouslymisleading,andinmanyplacesthe codewouldhavebeenwrittendramaticallydierentlyifmemoizationhadnotbeenavailable.nevertheless, theresultsareilluminating,especiallysincetheyrepresentimprovementsovertheoriginalbaselinesystem. Thesystemwasrunfromthisdisplayinthedefaultmodeandthenwithallmemoizationturnedo. Sincethecomputationofthissummarydisplayrepresentsthenal,high{levelcomputationoftheentire systemitisareasonablewaytomeasurethecontributionoftheuseofautomaticmemoization. 7Conclusions Automaticmemoizationisapowerfultoolthatallowsmanysimplebutinecientalgorithmstobemade theprevalenceofarapidprototypingapproachinsuchprojects. faroutweighthepotentialpitfallsofautomaticmemoizationinarticialintelligenceapplications,becauseof toamemoizedfunction,andtheabilitytoperformtimingandprolingstudiesrapidly.theseadvantages advantagestothearticialintelligenceprogrammer.theseadvantagesincludetheabilitytoaddpersistence usefulinpractice.beyondthisbasicadvantagethough,automaticmemoizationprovidesothersignicant Acknowledgements.ThisworkwassupportedinpartbytheAdvancedResearchProjectsAgencyunder ThinkingMachines,andispartoftheCMUAICD{ROM. SourcecodefortheCLAMPsystemisavailableviaanonymousFTP(ftp://ftp.cs.umbc.edu)orby (AAICorporation),J.PaulMcNamee(AAICorporation),PeterNorvig(SunMicrosystems),andDavidJ. Scheerer(TheJohnsHopkinsAppliedPhysicsLaboratory)fortheirhelpfulcomments,bothontheLISP theuseofthedivided--differenceexample.19 JHU/APLsubcontract605089{L.TheauthorsthankV.J.Benokraitis(AAICorporation),LienT.Duong implementationandonearlierversionsofthispaper.thankstojohnaspinall(symbolics)forsuggesting

20 signatureswhichmakeuptheoverallprobabilityofdetection.thiscomponentialanalysiswastrivialto Figure6:IntheSMSsystem,abarchartshowstherelativestrengthofeachoftheseveralcomponent recoverasasideeectofthedecisiontomemoizethecomputationoftheoverallprobabilityofdetection. Figure7:DramaticimprovementsinexecutiontimeandconsingwereobtainedintheoverallSMSsystem. unmemoized sec.2,969,392,724 memoized4.06sec. versiontimebytesconsed 615,784 20

21 References [2]ThomasH.Cormen,CharlesE.Leiserson,andRonaldL.Rivest.IntroductiontoAlgorithms.MIT [1]WardCheneyandDavidKincaid.NumericalMathematicsandComputing.Brooks/Cole,1980. [4]J.Earley.Anecientcontext-freeparsingalgorithm.CommunicationsoftheAssociationforComputing [3]S.W.Dietrich.Extensiontables:Memorelationsinlogicprogramming.InFourthInternationalSymposiumonLogicProgramming,pages264{273,1987. PressandMcGrawHill,1990. [5]AnthonyJ.FieldandPeterG.Harrison.FunctionalProgramming.Addison-Wesley,1988. Machinery,6(2):451{455,1970. [6]MartyHallandJamesMayeld.ImprovingtheperformanceofAIsoftware:Payosandpitfallsinusing [7]B.Homann.Termrewritingwithsharingandmemoization.InH.KirchnerandG.Levi,editors, automaticmemoization.inproceedingsofthesixthinternationalsymposiumonarticialintelligence, pages178{184.megabyte,september1993. [8]M.Kay.Algorithmschemataanddatastructuresinsyntacticprocessing.InProceedingsoftheSymposiumonTextProcessing.NobelAcademy,1980. Berlin,Heidelberg,1992. AlgebraicandLogicProgramming:Proc.oftheThirdInternationalConference,pages128{142.Springer, [9]DonaldE.Knuth.TheArtofComputerProgramming,volume2.Addison-Wesley,1969. [10]DonaldMichie.\memo"functionsandmachinelearning.Nature,218(1):19{22,April1968. [11]JackMostowandDonaldCohen.Automatingprogramspeedupbydecidingwhattocache.InProceedingsoftheNinthInternationalJointConferenceonArticialIntelligence,pages165{172.MorgaputationalLinguistics,17(1):91{98, [12]PeterNorvig.Techniquesforautomaticmemoizationwithapplicationstocontext-freeparsing.Com- KaufmannPublishers,Inc.,1985.

22 [13]PeterNorvig.ParadigmsofAIProgramming:CaseStudiesinCommonLISP.MorganKaufmann, [16]GerrySussmanandHalAbelson.TheStructureandInterpretationofComputerPrograms.MITPress, [15]GuyL.Jr.Steele.CommonLisp:TheLanguage.DigitalPress,secondedition,1990. [14]F.C.N.PereiraandS.M.Shieber.PrologandNatural-LanguageAnalysis.csli,Stanford,CA, [17]DavidS.Warren.Memoingforlogicprograms.CommunicationsoftheACM,35(3):93{111,1992. [18]DavidWenstrand,H.LeeDantzler,MartyHall,DavidScheerer,CharlesSinex,andDavidZaret.A DARPAAssociateTechnologySymposium,June1991. multipleknowledgebaseapproachtosubmarinestealthmonitoringandplanning.inproceedingsofthe 22

Demystifying cache. Kristian Lyngstøl Product Specialist Varnish Software AS

Demystifying cache. Kristian Lyngstøl Product Specialist Varnish Software AS Demystifying cache Kristian Lyngstøl Product Specialist Varnish Software AS Montreal, March 2013 Agenda - The types of caches involved - The benefits of a cache - HTTP - Reverse proxy specifics Not: L1/L2

More information

ExperienceUsingtheJILProcessProgrammingLanguage tospecifydesignprocesses StanleyM.SuttonJr.,BarbaraStaudtLerner,andLeonJ.Osterweil ComputerScienceDepartment UniversityofMassachusetts Amherst,Massachusetts01003

More information

UniversalTemporalDataLanguages CindyXinminChenandCarloZaniolo UniversityofCaliforniaatLosAngeles ComputerScienceDepartment Abstract.Temporalreasoningandtemporalquerylanguagespresentdicultresearchchallenges,whichareslowlyyieldingtothecombinedattackofmanyinvestigationsmotivated

More information

1. Use the class definition above to circle and identify the parts of code from the list given in parts a j.

1. Use the class definition above to circle and identify the parts of code from the list given in parts a j. public class Foo { private Bar _bar; public Foo() { _bar = new Bar(); public void foobar() { _bar.moveforward(25); 1. Use the class definition above to circle and identify the parts of code from the list

More information

Advanced Bash Scripting. Joshua Malone ([email protected])

Advanced Bash Scripting. Joshua Malone (jmalone@ubergeeks.com) Advanced Bash Scripting Joshua Malone ([email protected]) Why script in bash? You re probably already using it Great at managing external programs Powerful scripting language Portable and version-stable

More information

causeddroppingofthetos-basedroutingrequirementfromtheospfspecication.

causeddroppingofthetos-basedroutingrequirementfromtheospfspecication. ComputerScienceDepartment ImplementationandPerformanceMeasurements CollegePark,MD20742 UniversityofMaryland GeorgeApostolopoulos ofqosroutingextensionstoospf RochGuerin,SanjayKamat protocol,andonvariousperformancemeasurementsmadeonthebasisofthisimplementation

More information

SQL Injection. SQL Injection. CSCI 4971 Secure Software Principles. Rensselaer Polytechnic Institute. Spring 2010 ...

SQL Injection. SQL Injection. CSCI 4971 Secure Software Principles. Rensselaer Polytechnic Institute. Spring 2010 ... SQL Injection CSCI 4971 Secure Software Principles Rensselaer Polytechnic Institute Spring 2010 A Beginner s Example A hypothetical web application $result = mysql_query(

More information

Introduction to Python

Introduction to Python Caltech/LEAD Summer 2012 Computer Science Lecture 2: July 10, 2012 Introduction to Python The Python shell Outline Python as a calculator Arithmetic expressions Operator precedence Variables and assignment

More information

MeasuringWebPerformanceintheWideArea 111CummingtonSt,Boston,MA2215 PaulBarfordandMarkCrovella ComputerScienceDepartment BostonUniversity fbarford,[email protected] BU-CS-99-4 April26,1999 andcontinuedgrowthmakethisadicultquestiontoanswer.wedescribethewideareaweb

More information

The Laboratory Exchange Network configuration setting is located in OpenEMR's Administration->Globals menu option on the Connectors tab.

The Laboratory Exchange Network configuration setting is located in OpenEMR's Administration->Globals menu option on the Connectors tab. Medical Information Integration OpenEMR Laboratory Results User Documentation Laboratory Exchange Network v1.0 1.0) Configuration The Laboratory Exchange Network configuration setting is located in OpenEMR's

More information

MONIT. UNIX Systems Management

MONIT. UNIX Systems Management MONIT UNIX Systems Management Introduction monit is a utility for managing and monitoring, processes, files, directories and devices on a Unix system. Monit conducts automatic maintenance and repair and

More information

AWS IoT (Beta) Developer Guide

AWS IoT (Beta) Developer Guide AWS IoT (Beta) Developer Guide AWS IoT (Beta): Developer Guide Copyright 2015 Amazon Web Services, Inc. and/or its affiliates. All rights reserved. The following are trademarks of Amazon Web Services,

More information

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint) TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions

More information

COMPLEXITY, RESILIENCE, PROFITABILITY AND STABILITY

COMPLEXITY, RESILIENCE, PROFITABILITY AND STABILITY COMPLEXITY, RESILIENCE, PROFITABILITY AND STABILITY SURVIVING THE COMPLEXITIES AND TURBULENCE OF THE 21-ST CENTURY J. MARCZYK PH.D. ONTONIX Disclaimer The concepts and methods presented in this document

More information

Department of Computing Imperial College London. BrowserAudit. A web application that tests the security of browser implementations

Department of Computing Imperial College London. BrowserAudit. A web application that tests the security of browser implementations Department of Computing Imperial College London BrowserAudit A web application that tests the security of browser implementations Charlie Hothersall-Thomas Supervisor: Dr. Sergio Maffeis June 2014 Submitted

More information

Systems Engineering. Analyse. Design. Implement. Delivery of product. Test. Time

Systems Engineering. Analyse. Design. Implement. Delivery of product. Test. Time RobinSharp SoftwareDevelopmentProjects DepartmentofInformationTechnology,DTU September2000 JensThygeKristensen Contents 1Introduction 2PhasesofaProject 2.2RequirementsAnalysis... 2.3ModellingandDesign...

More information

Background and Development

Background and Development Overview The RIASEC Inventory is designed to help people identify their most dominant work interests and then use this information to explore career options. It uses the RIASEC coding system developed

More information

1. Stem. Configuration and Use of Stem

1. Stem. Configuration and Use of Stem Configuration and Use of Stem 1. Stem 2. Why use Stem? 3. What is Stem? 4. Stem Architecture 5. Stem Hubs 6. Stem Messages 7. Stem Addresses 8. Message Types and Fields 9. Message Delivery 10. Stem::Portal

More information

Rapid prototyping with rosh

Rapid prototyping with rosh Rapid prototyping with rosh Dan Lazewatsky (dlaz) Personal Robotics Lab School of Mechanical, Industrial and Manufacturing Engineering Oregon State University rosh history Originally written by Ken Conley

More information

SyncTool for InterSystems Caché and Ensemble.

SyncTool for InterSystems Caché and Ensemble. SyncTool for InterSystems Caché and Ensemble. Table of contents Introduction...4 Definitions...4 System requirements...4 Installation...5 How to use SyncTool...5 Configuration...5 Example for Group objects

More information

The Use of DNS Resource Records

The Use of DNS Resource Records International Journal of Advances in Electrical and Electronics Engineering 230 Available online at www.ijaeee.com & www.sestindia.org/volume-ijaeee/ ISSN: 2319-1112 Simar Preet Singh Systems Engineer,

More information

Introduction. Software Development and Change Management Recommendations

Introduction. Software Development and Change Management Recommendations Introduction This document was created by a joint working group of the Futures Industry Association ( FIA ) Principal Traders Group and the FIA European Principal Traders Association (collectively FIA

More information

Building SOA Applications with JAX-WS, JAX- RS, JAXB, and Ajax

Building SOA Applications with JAX-WS, JAX- RS, JAXB, and Ajax Building SOA Applications with JAX-WS, JAX- RS, JAXB, and Ajax Mark Hansen Founder & President, AgileIT [email protected] S296157 Learn Powerful Coding Techniques for Building SOA Applications using

More information

Continuous Delivery Workshop

Continuous Delivery Workshop Continuous Delivery Workshop deployment pipelines Workshop materials created by Jez Humble, Martin Fowler, Tom Sulston, & Neal Ford deployment pipelines tests, synergistic practices, incremental deployment

More information

Faster PHP Through Java

Faster PHP Through Java Faster PHP Through Java ABSTRACT Using benchmarks and code samples throughout to anchor the discussion, this paper explores how Quercus -- Caucho's Java implementation of PHP -- can perform faster than

More information

How To Develop A Domain Driven Web Development With Tapestry, Hivemind And Hibernate

How To Develop A Domain Driven Web Development With Tapestry, Hivemind And Hibernate Domain-Driven Web-Development with Tapestry, HiveMind and Hibernate Marcus Schulte Overview Background: What were we trying to achieve? Why domain-driven? Architecture of the foundation frameworks Putting

More information

The heap sucks. The Stack is Back Jon Oberheide. Slide #2

The heap sucks. The Stack is Back Jon Oberheide. Slide #2 b The heap sucks Slide #2 Heap vs. stack Excerpt from Objective quantitative scientific comparison of the heap and stack by Dr. Jono, PhD from the journal of Useless Computer Science: Heap: Stack: Complicated

More information

TMMi Case Study. Methodology. Scope. Use TMMi to do a gap analysis for an independent

TMMi Case Study. Methodology. Scope. Use TMMi to do a gap analysis for an independent TMMi Case Study TMMi Case Study Presentation Use TMMi to do a gap analysis for an independent testing organisation Involves 2 assessors for 5 days Objectives Determine how well the organisation is meeting

More information

The Django web development framework for the Python-aware

The Django web development framework for the Python-aware The Django web development framework for the Python-aware Bill Freeman PySIG NH September 23, 2010 Bill Freeman (PySIG NH) Introduction to Django September 23, 2010 1 / 18 Introduction Django is a web

More information

Customer focus as a competitive advantage. Anthony Shaw

Customer focus as a competitive advantage. Anthony Shaw Customer focus as a competitive advantage Anthony Shaw Key messages Customer strategy in Hong Kong: Significant repeat sales Unique bancassurance customer service model Increasing number of affluent customers

More information

COS 318: Operating Systems. File Layout and Directories. Topics. File System Components. Steps to Open A File

COS 318: Operating Systems. File Layout and Directories. Topics. File System Components. Steps to Open A File Topics COS 318: Operating Systems File Layout and Directories File system structure Disk allocation and i-nodes Directory and link implementations Physical layout for performance 2 File System Components

More information

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville Software Engineering Component-Based Software Engineering Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To explain that CBSE is concerned with developing standardised components

More information

S4 Classes in 15 pages, more or less

S4 Classes in 15 pages, more or less S4 Classes in 15 pages, more or less February 12, 2003 Overview The preferred mechanism for object oriented programming in R is described in Chambers (1998). The actual implementation is slightly different

More information

COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING

COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING COMPARISON OF OBJECT-ORIENTED AND PROCEDURE-BASED COMPUTER LANGUAGES: CASE STUDY OF C++ PROGRAMMING Kuan C. Chen, Ph.D. Assistant Professor Management Information Systems School of Management Purdue University

More information

PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for Windows. Rev: A02. 2014 Pivotal Software, Inc.

PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for Windows. Rev: A02. 2014 Pivotal Software, Inc. PRODUCT DOCUMENTATION Greenplum Database Version 4.3 Client Tools for Windows Rev: A02 2014 Pivotal Software, Inc. Copyright 2014 Pivotal Software, Inc. All rights reserved. Pivotal Software, Inc. believes

More information

Cultivating Agricultural Information Management System Using GIS Technology

Cultivating Agricultural Information Management System Using GIS Technology Hitachi Review Vol. 58 (2009), No. 6 265 Cultivating Agricultural Information Management System Using GIS Technology Improving Agricultural Efficiency through Information Technology Osamu Nishiguchi Noriko

More information

Instant SQL Programming

Instant SQL Programming Instant SQL Programming Joe Celko Wrox Press Ltd. INSTANT Table of Contents Introduction 1 What Can SQL Do for Me? 2 Who Should Use This Book? 2 How To Use This Book 3 What You Should Know 3 Conventions

More information

Design of Data Archive in Virtual Test Architecture

Design of Data Archive in Virtual Test Architecture Journal of Information Hiding and Multimedia Signal Processing 2014 ISSN 2073-4212 Ubiquitous International Volume 5, Number 1, January 2014 Design of Data Archive in Virtual Test Architecture Lian-Lei

More information

PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for UNIX. Rev: A02. 2014 Pivotal Software, Inc.

PRODUCT DOCUMENTATION. Greenplum Database. Version 4.3. Client Tools for UNIX. Rev: A02. 2014 Pivotal Software, Inc. PRODUCT DOCUMENTATION Greenplum Database Version 4.3 Client Tools for UNIX Rev: A02 2014 Pivotal Software, Inc. Copyright 2014 Pivotal Software, Inc. All rights reserved. Pivotal Software, Inc. believes

More information

Advanced Pig (or "we're not in Kansas anymore") Set operations in Map/Reduce How to parameterize an operation The oxymoron called "Pig Efficiency"

Advanced Pig (or we're not in Kansas anymore) Set operations in Map/Reduce How to parameterize an operation The oxymoron called Pig Efficiency Advanced_Pig Page 1 Advanced Pig 2:25 PM Advanced Pig (or "we're not in Kansas anymore") Set operations in Map/Reduce How to parameterize an operation The oxymoron called "Pig Efficiency" Advanced_Pig

More information

Computer Science 217

Computer Science 217 Computer Science 217 Midterm Exam Fall 2009 October 29, 2009 Name: ID: Instructions: Neatly print your name and ID number in the spaces provided above. Pick the best answer for each multiple choice question.

More information

User Guidance in Business Process Modelling

User Guidance in Business Process Modelling User Guidance in Business Process Modelling Dissertation zur Erlangung des Doktorgrades der Naturwissenschaften vorgelegt von Diplom-Wirtschaftsinformatiker (FH) Matthias Born aus Albstadt genehmigt von

More information

Universal DDoS Mitigation Bypass. DDoS Mitigation Lab

Universal DDoS Mitigation Bypass. DDoS Mitigation Lab Universal DDoS Mitigation Bypass DDoS Mitigation Lab About Us Industry body formed to foster synergy among stakeholders to promote advancement in DDoS defense knowledge. DDoS Mitigation Lab Independent

More information

Purchasing & Accounts Payable Automation for. Microsoft Dynamics GP & SL

Purchasing & Accounts Payable Automation for. Microsoft Dynamics GP & SL Purchasing & Accounts Payable Automation for Microsoft Dynamics GP & SL PN 3 Objectives Improved Efficiencies Improved Financial Controls The Real Cost of Paper AP Automation Questions How can we get invoices

More information

product information 03. 2014

product information 03. 2014 DSD playback with Pro-Ject D/A converters With these Pro-Ject D/a converters is it possible to play DSD tracks from a computer: DAC Box DS (with free upgrade), DAC Box RS, Pre Box RS Digital. Tested with

More information

WHITEPAPER Best Practices for Monitoring Business Transactions:

WHITEPAPER Best Practices for Monitoring Business Transactions: WHITEPAPER Best Practices for Monitoring Business Transactions: Business transaction monitoring has never been more critical to operational efficiency, yet there remains much confusion over methodology.

More information

SAS Decision Services Engine XXXXXX Loggers Logger(file:///myMachine/Lev1/Web/Common/LogConfig/SASDecisionService Level sengine-log4j.

SAS Decision Services Engine XXXXXX Loggers Logger(file:///myMachine/Lev1/Web/Common/LogConfig/SASDecisionService Level sengine-log4j. SAS Decision Services Engine XXXXXX Loggers Logger(file:///myMachine/Lev1/Web/Common/LogConfig/SASDecisionService Level sengine-log4j.xml) Root Logger com.sas.services.deployment.omi com.sas.rtdm.implementation.eventexecutor.activity_time

More information

2012 Education Strategy

2012 Education Strategy 1 About Education Strategy 25 year history of assisting institutions in over 100 different markets develop and deploy curriculum First online partnership, a complete major, was in 2002 Executive team members

More information

A Reference Architecture for Distributed Software Deployment

A Reference Architecture for Distributed Software Deployment A Reference Architecture for Distributed Software Deployment Delft University of Technology, EEMCS, Department of Software Technology June 3, 2013 A Reference Architecture for Distributed Software Deployment

More information

Table of Contents. Open-Xchange Authentication & Session Handling. 1.Introduction...3

Table of Contents. Open-Xchange Authentication & Session Handling. 1.Introduction...3 Open-Xchange Authentication & Session Handling Table of Contents 1.Introduction...3 2.System overview/implementation...4 2.1.Overview... 4 2.1.1.Access to IMAP back end services...4 2.1.2.Basic Implementation

More information

Ericsson Customer Management System 2.0 Training Programs. Catalog of Course Descriptions

Ericsson Customer Management System 2.0 Training Programs. Catalog of Course Descriptions Ericsson Customer Management System 2.0 Training Programs Catalog of Course Descriptions Catalog of Course Descriptions INTRODUCTION...3 E-TRAINING: ERICSSON CUSTOMER MANAGEMENT SYSTEM BASICS...4 ECMS

More information

OSSIM. Open Source Security Information Management. Brian E. Lavender. Sac State. CSC 250, Spring 2008. Final Project

OSSIM. Open Source Security Information Management. Brian E. Lavender. Sac State. CSC 250, Spring 2008. Final Project Open Source Security Information Management Sac State CSC 250, Spring 2008 Final Project 2008 1 Table of Contents Introduction...2 How Functions...2 Installation...5 Initial Configuration Steps...6 Creating

More information

HTTP Protocol. Bartosz Walter <[email protected]>

HTTP Protocol. Bartosz Walter <Bartek.Walter@man.poznan.pl> HTTP Protocol Bartosz Walter Agenda Basics Methods Headers Response Codes Cookies Authentication Advanced Features of HTTP 1.1 Internationalization HTTP Basics defined in

More information

Asset Condition Monitoring Solutions

Asset Condition Monitoring Solutions Asset Condition Monitoring Solutions Our Company Metrix is the preferred supplier of industrial vibration monitoring systems and services to many of the world s leading manufacturers and users of cooling

More information

TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for STUDENT-ACCESS LABS

TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for STUDENT-ACCESS LABS IT Services Service Level Agreement TECHNICAL SUPPORT and HARDWARE/SOFTWARE/NETWORK MAINTENANCE for STUDENT-ACCESS LABS IT Services Service Level Agreement:Student-Access Labs This service level agreement

More information

Scapy. On-the-fly Packet Generation by [email protected]. Dienstag, 10. Januar 12

Scapy. On-the-fly Packet Generation by codemonk@u-sys.org. Dienstag, 10. Januar 12 Scapy On-the-fly Packet Generation by [email protected] 1 Overview Repetition of network basics Python Basics Scapy Basics Example: SYN Scan Hands-on: Traceroute Promiscuous Scan ARP Spoofing 2 Layers

More information

National Competency Standards. For. Mobile Application Developer

National Competency Standards. For. Mobile Application Developer Finalized & Validated by Industrial Advisory Group (IAG) 13th December 2013 National Competency Standards For Mobile Application Developer Page 1 Introduction The National Competency Standards are written

More information

Test for I-DEAS FEATURES APPLICATIONS 83-0056-000 14A TRANSIENT POST-PROCESSING SOFTWARE FOR FIXED SAMPLE ORDER TRACKING

Test for I-DEAS FEATURES APPLICATIONS 83-0056-000 14A TRANSIENT POST-PROCESSING SOFTWARE FOR FIXED SAMPLE ORDER TRACKING 83-0056-000 14A Test for I-DEAS TRANSIENT POST-PROCESSING SOFTWARE FOR FIXED SAMPLE ORDER TRACKING FEATURES Advanced User Interface Providing Ease-of-Use In Post-Processing Time History Data Real-Time

More information

Assignment 3 Version 2.0 Reactive NoSQL Due April 13

Assignment 3 Version 2.0 Reactive NoSQL Due April 13 CS 635 Advanced OO Design and Programming Spring Semester, 2016 Assignment 3 2016, All Rights Reserved, SDSU & Roger Whitney San Diego State University -- This page last updated 4/2/16 Assignment 3 Version

More information

Federated Directory Services

Federated Directory Services Federated Directory Services for the connected enterprise Federated Directory Server helps overcome the challenge of distributed identity data, which is a significant hurdle to the deployment of new enterprise

More information

22C:22 (CS:2820) Object-Oriented Software Development

22C:22 (CS:2820) Object-Oriented Software Development The University of Iowa 22C:22 (CS:2820) Object-Oriented Software Development Fall 2012 Software Complexity by Cesare Tinelli Complexity Software systems are complex artifacts Failure to master this complexity

More information

GravityLab Multimedia Inc. Windows Media Authentication Administration Guide

GravityLab Multimedia Inc. Windows Media Authentication Administration Guide GravityLab Multimedia Inc. Windows Media Authentication Administration Guide Token Auth Menu GravityLab Multimedia supports two types of authentication to accommodate customers with content that requires

More information

A No-Frills Introduction to Lua 5.1 VM Instructions

A No-Frills Introduction to Lua 5.1 VM Instructions A No-Frills Introduction to Lua 5.1 VM Instructions Version 0.1, 20060313 by Kein-Hong Man, esq. Contents 1 Introduction 2 2 Lua Instruction Basics 3 3 Really Simple Chunks 5 4

More information

CIS 192: Lecture 10 Web Development with Flask

CIS 192: Lecture 10 Web Development with Flask CIS 192: Lecture 10 Web Development with Flask Lili Dworkin University of Pennsylvania Last Week s Quiz req = requests.get("http://httpbin.org/get") 1. type(req.text) 2. type(req.json) 3. type(req.json())

More information

TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for TICKETING DATABASE

TECHNICAL SUPPORT. and HARDWARE/SOFTWARE/NETWORK MAINTENANCE. for TICKETING DATABASE IT Services Service Level Agreement TECHNICAL SUPPORT and HARDWARE/SOFTWARE/NETWORK MAINTENANCE for TICKETING DATABASE IT Services Service Level Agreement:Ticketing Database This service level agreement

More information

Introduction to Manufacturing Process

Introduction to Manufacturing Process Introduction to Manufacturing Process What is Manufacturing? The English word manufacture is several centuries old. The term manufacture comes from two Latin words, manus (hand) and factus (make). As per

More information

SETUP GUIDE: MOON USB HD DSD Driver. MOON Nēo 340i D 3 MOON Nēo 350P D 3. MOON Evolution 780D. Musical Ecstasy. Date Code: 20150820

SETUP GUIDE: MOON USB HD DSD Driver. MOON Nēo 340i D 3 MOON Nēo 350P D 3. MOON Evolution 780D. Musical Ecstasy. Date Code: 20150820 SETUP GUIDE: MOON USB HD DSD Driver MOON Nēo 230HAD MOON Nēo 280D DSD MOON Nēo 340i D 3 MOON Nēo 350P D 3 MOON Nēo 380D DSD MOON Nēo 430HA MOON Evolution 780D Musical Ecstasy Date Code: 20150820 USB HD

More information

Property Tax Real. hio. Taxpayer The tax is paid by all real property owners unless specifically exempt.

Property Tax Real. hio. Taxpayer The tax is paid by all real property owners unless specifically exempt. 108 Property Tax Real Taxpayer The tax is paid by all real property owners unless specifically exempt. Tax Base The tax is based on the assessed value of land and buildings. Assessed value is 35 percent

More information

GLOBAL SERVICES. www.haefely.com www.hipotronics.com. reliable. precision. H I G H V O LTA G E TEST SOLUTIONS

GLOBAL SERVICES. www.haefely.com www.hipotronics.com. reliable. precision. H I G H V O LTA G E TEST SOLUTIONS GLOBAL SERVICES reliable. precision. www.haefely.com www.hipotronics.com H I G H V O LTA G E TEST SOLUTIONS 2 Partnership COMPETENT PARTNERSHIP THE CUSTOMER IS OUR SERVICE PARTNER This is central to our

More information

ZEND PHP 5 Certification

ZEND PHP 5 Certification php architect s ZEND PHP 5 Certification STUDY GUIDE Davey Shafik with Ben Ramsey php architect s Zend PHP 5 Certification Study Guide by Davey Shafik with Ben Ramsey php architect s Zend PHP 5 Certification

More information

Applied Internet Technology (CSCI-UA.0480) - Sample Questions

Applied Internet Technology (CSCI-UA.0480) - Sample Questions Applied Internet Technology (CSCI-UA.0480) - Sample Questions A reference is provided on the last page. This does not represent the length of the actual midterm (this has more questions) 1. Two broad categories

More information