https://ebookmass.com/product/introduction-to-computing-andprogramming-in-python-global-edition-mark-j-guzdial/
Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...
Introduction To Computing And Problem Solving Using Python 1st Edition E. Balaguruswamy
https://ebookmass.com/product/introduction-to-computing-and-problemsolving-using-python-1st-edition-e-balaguruswamy/ ebookmass.com
Introduction to Computation and Programming Using Python, Third Edition John V. Guttag
https://ebookmass.com/product/introduction-to-computation-andprogramming-using-python-third-edition-john-v-guttag/
ebookmass.com
Python Programming for Beginners: 2 Books in 1 - the Ultimate Step-By-Step Guide to Learn Python Programming Quickly With Practical Exercises Mark Reed
https://ebookmass.com/product/python-programming-forbeginners-2-books-in-1-the-ultimate-step-by-step-guide-to-learnpython-programming-quickly-with-practical-exercises-mark-reed/ ebookmass.com
Greek and Roman Technology: A Sourcebook of Translated Greek and Roman Texts 2nd Edition Andrew N. Sherwood
https://ebookmass.com/product/greek-and-roman-technology-a-sourcebookof-translated-greek-and-roman-texts-2nd-edition-andrew-n-sherwood/ ebookmass.com
SAP S/4HANA Financial Accounting Configuration: Learn Configuration and Development on an S/4 System, 2nd Edition Andrew
Okungbowa
https://ebookmass.com/product/sap-s-4hana-financial-accountingconfiguration-learn-configuration-and-development-onan-s-4-system-2nd-edition-andrew-okungbowa/ ebookmass.com
(eTextbook PDF) for Healthcare Human Resource Management 3rd Edition
https://ebookmass.com/product/etextbook-pdf-for-healthcare-humanresource-management-3rd-edition/
ebookmass.com
Racial and Ethnic Groups (14th Edition ) 14th Edition
https://ebookmass.com/product/racial-and-ethnic-groups-14thedition-14th-edition/
ebookmass.com
Developments in the Formulation and Reinforcement of Concrete 2nd ed Edition Mindess
https://ebookmass.com/product/developments-in-the-formulation-andreinforcement-of-concrete-2nd-ed-edition-mindess/
ebookmass.com
Tools for Teaching 2nd Edition https://ebookmass.com/product/tools-for-teaching-2nd-edition/
ebookmass.com
https://ebookmass.com/product/where-did-the-universe-come-from-andother-cosmic-questions-ferrie-chris/
ebookmass.com
Introductionto Computingand Programming inPython TM AMULTIMEDIA APPROACH MarkJ.GuzdialandBarbaraEricson
CollegeofComputing/GVU
GeorgiaInstituteofTechnology
FourthEdition
GlobalEdition
BostonColumbusIndianapolisNewYorkSanFranciscoHoboken AmsterdamCapeTownDubaiLondonMadridMilanMunichParisMontrealToronto DelhiMexicoCitySãoPauloSydneyHongKongSeoulSingaporeTaipeiTokyo
VicePresidentandEditorialDirector,ECS: MarciaJ.Horton
ExecutiveEditor: TracyJohnson
AssistantAcquisitionsEditor,GlobalEdition: AditeeAgarwal
ExecutiveMarketingManager: TimGalligan
MarketingAssistant: JonBryant
SeniorManagingEditor: ScottDisanno
ProductionProjectManager: GregDulles
ProgramManager: CaroleSnyder
ProjectEditor,GlobalEdition: K.K.Neelakantan
SeniorManufacturingController,GlobalEdition: KayHolman
MediaProductionManager,GlobalEdition: VikramKumar
GlobalHEDirectorofVendorSourcingandProcurement: DianeHynes
DirectorofOperations: NickSklitsis
OperationsSpecialist: MauraZaldivar-Garcia
CoverDesigner: LuminaDatamatics
Manager,RightsandPermissions: RachelYoudelman
AssociateProjectManager,RightsandPermissions: TimothyNicholls
Full-ServiceProjectManagement: KalpanaArumugam,SPiGlobal
MICROSOFTAND/ORITSRESPECTIVESUPPLIERSMAKENOREPRESENTATIONSABOUTTHESUITABILITYOFTHEINFORMATION CONTAINEDINTHEDOCUMENTSANDRELATEDGRAPHICSPUBLISHEDASPARTOFTHESERVICESFORANYPURPOSE.ALLSUCH DOCUMENTSANDRELATEDGRAPHICSAREPROVIDED“ASIS”WITHOUTWARRANTYOFANYKIND.MICROSOFTAND/ORITS RESPECTIVESUPPLIERSHEREBYDISCLAIMALLWARRANTIESANDCONDITIONSWITHREGARDTOTHISINFORMATION, INCLUDINGALLWARRANTIESANDCONDITIONSOFMERCHANTABILITY,WHETHEREXPRESS,IMPLIEDORSTATUTORY,FITNESS FORAPARTICULARPURPOSE,TITLEANDNON-INFRINGEMENT.INNOEVENTSHALLMICROSOFTAND/ORITSRESPECTIVE SUPPLIERSBELIABLEFORANYSPECIAL,INDIRECTORCONSEQUENTIALDAMAGESORANYDAMAGESWHATSOEVERRESULTING FROMLOSSOFUSE,DATAORPROFITS,WHETHERINANACTIONOFCONTRACT,NEGLIGENCEOROTHERTORTIOUSACTION, ARISINGOUTOFORINCONNECTIONWITHTHEUSEORPERFORMANCEOFINFORMATIONAVAILABLEFROMTHESERVICES.THE DOCUMENTSANDRELATEDGRAPHICSCONTAINEDHEREINCOULDINCLUDETECHNICALINACCURACIESORTYPOGRAPHICAL ERRORS.CHANGESAREPERIODICALLYADDEDTOTHEINFORMATIONHEREIN.MICROSOFTAND/ORITSRESPECTIVESUPPLIERS MAYMAKEIMPROVEMENTSAND/ORCHANGESINTHEPRODUCT(S)AND/ORTHEPROGRAM(S)DESCRIBEDHEREINATANYTIME. PARTIALSCREENSHOTSMAYBEVIEWEDINFULLWITHINTHESOFTWAREVERSIONSPECIFIED.
PearsonEducationLimited
EdinburghGate Harlow EssexCM202JE
England
andAssociatedCompaniesthroughouttheworld
VisitusontheWorldWideWebat: www.pearsonglobaleditions.com
© PearsonEducationLimited2016
TherightsofMarkJ.GuzdialandBarbaraEricsontobeidentifiedastheauthorsofthisworkhavebeenassertedbytheminaccordancewiththe Copyright,DesignsandPatentsAct1988.
AuthorizedadaptationfromtheUnitedStatesedition,entitledIntroductiontoComputingandProgramminginPython™ :AMultimediaApproach,Fourth Edition,ISBN9780134025544,byMarkJ.GuzdialandBarbaraEricsonpublishedbyPearsonEducation © 2016.
Allrightsreserved.Nopartofthispublicationmaybereproduced,storedinaretrievalsystem,ortransmittedinanyformorbyanymeans,electronic, mechanical,photocopying,recordingorotherwise,withouteitherthepriorwrittenpermissionofthepublisheroralicensepermittingrestrictedcopyingin theUnitedKingdomissuedbytheCopyrightLicensingAgencyLtd,SaffronHouse,6 10KirbyStreet,LondonEC1N8TS.
Alltrademarksusedhereinarethepropertyoftheirrespectiveowners.Theuseofanytrademarkinthistextdoesnotvestintheauthororpublisherany trademarkownershiprightsinsuchtrademarks,nordoestheuseofsuchtrademarksimplyanyaffiliationwithorendorsementofthisbookbysuchowners
BritishLibraryCataloguing-in-PublicationData
AcataloguerecordforthisbookisavailablefromtheBritishLibrary 10987654321
ISBN10:1-292-10986-6
ISBN13:978-1-292-10986-2
Typesetin10.5/13TimesbySPiGlobal PrintedandboundinMalaysia.
Dedicatedtoourfirstteachers,ourparents: Janet,Charles,Gene,andNancy
This page intentionally left blank
PrefacefortheFourthEdition13
PrefacetotheFirstEdition18
AbouttheAuthors24
1 INTRODUCTION 25
1 IntroductiontoComputerScienceandMedia Computation 27
1.1WhatIsComputerScienceAbout?27
1.2ProgrammingLanguages30
1.3WhatComputersUnderstand33
1.4MediaComputation:WhyDigitizeMedia?35
1.5ComputerScienceforEveryone37
1.5.1It’sAboutCommunication37
1.5.2It’sAboutProcess37
1.5.3YouWillProbablyNeedIt38
2 IntroductiontoProgramming 42
2.1ProgrammingIsAboutNaming42
2.1.1FilesandTheirNames44
2.2ProgramminginPython45
2.3ProgramminginJES46
2.4MediaComputationinJES47
2.4.1ShowingaPicture51
2.4.2PlayingaSound54
2.4.3NamingValues54
2.5MakingaProgram57
2.5.1Functions:RealMath-LikeFunctionsThatTake Input61
3 CreatingandModifyingText 68 3.1Strings:MakingHumanTextinaComputer68
3.1.1MakingStringsfromStrings:TellingStories70
3.2TakingStringsApartwith For 73
3.2.1TestingthePieces75
3.2.2TakingStringApart,andPuttingStringsTogether78
3.2.3TakingStringsApartwithIndices81
3.2.4Mirroring,Reversing,andSeparatingStringswithIndex83
3.2.5EncodingandDecodingStringsUsingaKeywordCipher85
3.3TakingStringsApartbyWords87
3.4What’sInsideaString90
3.5WhataComputerCanDo91
4 ModifyingPicturesUsingLoops 98 4.1HowPicturesAreEncoded99
4.2ManipulatingPictures104
4.2.1ExploringPictures108
4.3ChangingColorValues110
4.3.1UsingLoopsinPictures110
4.3.2Increasing/DecreasingRed(Green,Blue)112
4.3.3TestingtheProgram:DidThatReallyWork?117
4.3.4ChangingOneColorataTime118
4.4CreatingaSunset119
4.4.1MakingSenseofFunctions119
4.5LighteningandDarkening124
4.6CreatingaNegative125
4.7ConvertingtoGrayscale126
4.8SpecifyingPixelsbyIndex128
5 PictureTechniqueswithSelection 138 5.1ReplacingColors:Red-Eye,SepiaTones,andPosterizing138
5.1.1ReducingRed-Eye142
5.1.2Sepia-TonedandPosterizedPictures:Using ConditionalstoChoosetheColor144
5.2ComparingPixels:EdgeDetection150
5.3BackgroundSubtraction153
5.4Chromakey156
5.5Coloringinranges161
5.5.1AddingaBorder161
5.5.2LighteningtheRightHalfofaPicture162
5.6SelectingwithoutRetesting163
6 ModifyingPixelsbyPosition 169 6.1ProcessingPixelsFaster169
6.1.1LoopingacrossthePixelswith Range 171
6.1.2WritingFasterPixelLoops173
6.2MirroringaPicture175
6.3CopyingandTransformingPictures182
6.3.1Copying183
6.3.2CopyingSmallerandModifying189
6.3.3CopyingandReferencing191
6.3.4CreatingaCollage193
6.3.5GeneralCopying196
6.3.6Rotation197
6.3.7Scaling200
6.4CombiningPixels:Blurring205
6.5BlendingPictures208
6.6DrawingonImages210
6.6.1DrawingwithDrawingCommands212
6.6.2VectorandBitmapRepresentations213
6.7ProgramsasSpecifyingDrawingProcess215
6.7.1WhyDoWeWritePrograms?216
2 SOUND 225 7 ModifyingSoundsUsingLoops 227 7.1HowSoundIsEncoded227
7.1.1ThePhysicsofSound227
7.1.2InvestigatingDifferentSounds230
7.1.3EncodingtheSound235
7.1.4BinaryNumbersandTwo’sComplement236
7.1.5StoringDigitizedSounds237
7.2ManipulatingSounds239
7.2.1OpenSoundsandManipulatingSamples239
7.2.2UsingtheJESMediaTools242
7.2.3Looping243
7.3ChangingtheVolumeofSounds244
7.3.1IncreasingVolume244
7.3.2DidThatReallyWork?245
7.3.3DecreasingVolume249
7.3.4UsingArrayIndexNotation250
7.3.5MakingSenseofFunctionsinSounds251
7.4NormalizingSounds251
7.4.1GeneratingClipping253
8 ModifyingSamplesinaRange 259
8.1ManipulatingDifferentSectionsoftheSoundDifferently259
8.1.1RevisitingIndexArrayNotation260
8.2SplicingSounds262
8.3GeneralClipandCopy269
8.4ReversingSounds271
8.5Mirroring273
8.6OnFunctionsandScope273
9 MakingSoundsbyCombiningPieces 279
9.1ComposingSoundsThroughAddition279
9.2BlendingSounds280
9.3CreatinganEcho282
9.3.1CreatingMultipleEchoes284
9.3.2CreatingChords284
9.4HowSamplingKeyboardsWork285
9.4.1SamplingasanAlgorithm289
9.5AdditiveSynthesis289
9.5.1MakingSineWaves289
9.5.2AddingSineWavesTogether291
9.5.3CheckingOurResult292
9.5.4SquareWaves293
9.5.5TriangularWaves295
9.6ModernMusicSynthesis297
9.6.1MP3297
9.6.2MIDI298
10 BuildingBiggerPrograms 302
10.1DesigningProgramsTop-Down303
10.1.1ATop-DownDesignExample304
10.1.2DesigningtheTop-LevelFunction305
10.1.3WritingtheSubfunctions307
10.2DesigningProgramsBottom-Up311
10.2.1AnExampleBottom-UpProcess312
10.3TestingYourProgram312
10.3.1TestingtheEdgeConditions314
10.4TipsonDebugging315
10.4.1FindingWhichStatementtoWorryAbout316
10.4.2SeeingtheVariables316
10.4.3DebuggingtheAdventureGame318
10.5AlgorithmsandDesign321
10.6ConnectingtoDataOutsideaFunction322
10.7RunningProgramsOutsideofJES326
3 TEXT,FILES,NETWORKS,DATABASES, ANDUNIMEDIA 333 11 ManipulatingTextwithMethodsandFiles 335
11.1TextasUnimedia335
11.2ManipulatingPartsofStrings336
11.2.1StringMethods:IntroducingObjectsandDotNotation337
11.2.2Lists:Powerful,StructuredText339
11.2.3StringsHaveNoFont341
11.3Files:PlacestoPutYourStringsandOtherStuff341
11.3.1OpeningandManipulatingFiles343
11.3.2GeneratingFormLetters344
11.3.3ReadingandManipulatingDatafromtheInternet345
11.3.4ScrapingInformationfromaWebPage348
11.3.5ReadingCSVData349
11.3.6WritingOutPrograms351
11.4ThePythonStandardLibrary352
11.4.1MoreonImportandYourOwnModules353
11.4.2AddingUnpredictablytoYourProgramwithRandom354
11.4.3ReadingCSVFileswithaLibrary356
11.4.4ASamplingofPythonStandardLibraries356
12
AdvancedTextTechniques:Web andInformation 361
12.1Networks:GettingOurTextfromtheWeb361
12.1.1AutomatingAccesstoCSVData365
12.1.2AccessingFTP367
13 12.2UsingTexttoShiftBetweenMedia368
12.3MovingInformationBetweenMedia371
12.4UsingListsasStructuredTextforMediaRepresentations374
12.5HidingInformationinaPicture375
12.5.1HidingaSoundInsideaPicture377
MakingTextfortheWeb 383 13.1HTML:TheNotationoftheWeb383
13.2WritingProgramstoGenerateHTML388
13.2.1MakingHomePages390
13.3Databases:APlacetoStoreOurText393
13.3.1RelationalDatabases395
13.3.2AnExampleRelationalDatabaseUsingHashTables396
13.3.3WorkingwithSQL399
13.3.4UsingaDatabasetoBuildWebPages401
4 MOVIES 407 14 CreatingandModifyingMovies 409
14.1GeneratingAnimations410
14.2WorkingwithVideoSource419
14.2.1VideoManipulatingExamples419
14.3BuildingaVideoEffectBottom-Up423
15 Speed 430
15.1FocusingonComputerScience430
15.2WhatMakesProgramsFast?430
15.2.1WhatComputersReallyUnderstand431
15.2.2CompilersandInterpreters432
15.2.3WhatLimitsComputerSpeed?436
15.2.4DoesItReallyMakeaDifference?438
15.2.5MakingSearchingFaster441
15.2.6AlgorithmsThatNeverFinishorCan’tBeWritten443
15.2.7WhyIsPhotoshopFasterthanJES?444
15.3WhatMakesaComputerFast?444
15.3.1ClockRatesandActualComputation445
15.3.2Storage:WhatMakesaComputerSlow?446
15.3.3Display447
16 FunctionalProgramming 450 16.1UsingFunctionstoMakeProgrammingEasier450
16.2FunctionalProgrammingwithMapandReduce454
16.3FunctionalProgrammingforMedia457
16.3.1MediaManipulationwithoutChangingState458
16.4Recursion:APowerfulIdea459
16.4.1RecursiveDirectoryTraversals464
16.4.2RecursiveMediaFunctions466
17 Object-OrientedProgramming 471 17.1HistoryofObjects471
17.2WorkingwithTurtles473
17.2.1ClassesandObjects473
17.2.2SendingMessagestoObjects474
17.2.3ObjectsControlTheirState476
17.3TeachingTurtlesNewTricks478
17.3.1OverridinganExistingTurtleMethod480
17.3.2WorkingwithMultipleTurtlesatOnce481
17.3.3TurtleswithPictures483
17.3.4DancingTurtles484
17.3.5RecursionandTurtles487
17.4AnObject-OrientedSlideShow488
17.4.1MakingtheSlideClassMoreObject-Oriented491
17.5Object-OrientedMedia493
17.6JoetheBox498
17.7WhyObjects?499
APPENDIX 506
A QuickReferencetoPython 506
A.1Variables506
A.2FunctionCreation507
A.3LoopsandConditionals507
A.4OperatorsandRepresentationFunctions508
A.5NumericFunctions509
A.6SequenceOperations509
A.7StringEscapes509
A.8UsefulStringMethods509
A.9Files510
A.10Lists510
A.11Dictionaries,HashTables,orAssociativeArrays510
A.12ExternalModules510
A.13Classes511
A.14FunctionalMethods511
Bibliography512
Index515
Prefaceforthe FourthEdition WestartedMediaComputationintheofSummer2002,andtaughtitforthefirsttime inSpring2003.It’snowovertenyearslater,whichisagoodtimetosummarizethe changesacrossthesecond,third,andfourtheditions.
MediaComputationhasbeenusedsuccessfullyinanundergraduatecourseatGeorgiaTechforthelastdozenyears.Thecoursecontinuestohavehighretentionrates(over 85%ofstudentscompletetheclasswithapassinggrade),andismajorityfemale.Both studentsandteachersreport enjoying thecourse,whichisanimportantrecommendation forit.
ResearchershavefoundthatMediaComputationworksinavarietyofcontexts. TheUniversityofIllinois-ChicagohadthefirstMediaComputationpaperoutsideof Georgia,andtheyshowedhowswitchingtoMediaCompimprovedtheirretention ratesinclassesthatweremuchmorediversethanthoseatGeorgiaTech[41].The UniversityofCalifornia-SanDiegoadoptedMediaComputationaspartofabigchange intheirintroductorycourse,wheretheyalsostartedusingpair-programmingandpeer instruction.Theirpaperatthe2013SIGCSESymposiumshowedhowthesechanges ledtodramaticimprovementsinstudentretention,evenmeasuredayearlaterinthe Sophomoreyear.ThepaperalsowontheBestPaperawardattheconference[27]. It’sbeenparticularlydelightfultoseeMediaComputationadoptedandadaptedfor newsettings,likeCynthiaBaileyLee’screationofaMATLABMediaComputation curriculum[12].
Markwroteapaperin2013,summarizingtenyearsofMediaComputationresearch. MediaComputationdoesoftenimproveretention.Ourdetailedinterviewstudieswith femalestudentssupportstheclaimthattheyfindtheapproachtobecreativeandengaging,andthat’swhatkeepsthestudentsintheclass.ThatpaperwontheBestPaperaward atthe2013InternationalComputingEducationResearch(ICER)Conference[33].
HOWTOTEACHMEDIACOMPUTATION Overthelast10years,wehavelearnedsomeoftheapproachesthatworkbestfor teachingMediaComputation.
• Letthestudentsbecreative. ThemostsuccessfulMediaComputationclasses useopen-endedassignmentsthatletthestudentschoosewhatmediatheyuse. Forexample,acollageassignmentmightspecifytheuseofparticularfiltersand compositions,butallowforthestudenttochooseexactlywhatpicturesareused. Theseassignmentsoftenleadtothestudentsputtinginalotmoretimetoget just thelookthattheywanted,andthatextratimecanleadtoimprovedlearning.
• Letthestudentssharewhattheyproduce. Studentscanproducesomebeautiful pictures,sounds,andmoviesusingMediaComputation.Thoseproductsaremore motivatingforthestudentswhentheygettosharethemwithothers.Someschools provideonlinespaceswherestudentscanpostandsharetheirproducts.Other schoolshaveevenprintedstudentworkandheldanartgallery.
• Codeliveinfrontoftheclass. Thebestpartoftheteacheractuallytypingincode infrontoftheclassisthat nobody cancodeforlonginfrontofanaudienceand not makeamistake.Whentheteachermakesamistakeandfixesit,thestudents see(a)thaterrorsareexpectedand(b)thereisaprocessforfixingthem.Coding livewhenyouareproducingimagesandsoundsisfun,andcanleadtounexpected resultsandtheopportunitytoexplore,“Howdid that happen?”
• Pairprogrammingleadstobetterlearningandretention. Theresearchresultson pairprogrammingaretremendous.Classesthatusepairprogramminghavebetter retentionresults,andthestudentslearnmore.
• Peerinstructionisgreat. Notonlydoespeerinstructionleadtobetterlearning andretentionoutcomes,butitalsogivestheteacherbetterfeedbackonwhatthe studentsarelearningandwhattheyarestrugglingwith.Westronglyencourage theuseofpeerinstructionincomputingclasses.
• Workedexampleshelpwithcreativitylearning. Mostcomputerscienceclasses donotprovideanywherenearlyenoughworked-outexamplesforstudentsto learnfrom.Studentsliketolearnfromexamples.OneofthebenefitsofMedia Computationisthatweprovidealotofexamples(we’venevertriedtocountthe numberof for and if statementsinthebook!), and it’seasytoproducemore ofthem.Inclass,wedoanactivitywherewehandoutexampleprograms,then showaparticulareffect.Weaskpairsorgroupsofstudentstofigureoutwhich programgeneratedthateffect.Thestudentstalkaboutcode,andstudyabunchof examples.
APCSPRINCIPLES TheAdvancedPlacementexaminCSPrinciples1 hasnowbeendefined.Wehave explicitlywrittenthefourtheditionwithCSPrinciplesinmind.Forexample,weshow howtomeasurethespeedofaprogramempiricallyinordertocontrasttwoalgorithms (LearningObjective4.2.4),andweexploremultiplewaysofanalyzingCSVdatafrom theInternet(LearningObjectives3.1.1,3.2.1,and3.2.2).
Overall,weaddresstheCSPrincipleslearningobjectivesexplicitlyinthisbookas shownbelow:
• In BigIdeaI:Creativity :
• LO1.1.1: usecomputingtoolsandtechniquestocreateartifacts.
• LO1.2.1: usecomputingtoolsandtechniquesforcreativeexpression.
1 http://apcsprinciples.org
• LO1.2.2: ... createacomputationalartifactusingcomputingtoolsandtechniques tosolveaproblem.
• LO1.2.3: createanewcomputationalartifactbycombiningormodifying existingartifacts.
• LO1.2.5: ... analyzethecorrectness,usability,functionality,andsuitabilityof computationalartifacts.
• LO1.3.1: ... useprogrammingasacreativetool.
• In BigIdeaII:Abstraction:
• LO2.1.1: ... describethevarietyofabstractionsusedtorepresentdata.
• LO2.1.2: ... explainhowbinarysequencesareusedtorepresentdigitaldata.
• LO2.2.2: ... usemultiplelevelsofabstractionincomputation.
• LO2.2.3: ... identifymultiplelevelsofabstractionsbeingusedwhenwriting programs.
• In BigIdeaIII:Dataandinformation:
• LO3.1.1: ... usecomputerstoprocessinformation,findpatterns,andtest hypothesesaboutdigitallyprocessedinformationtogaininsightandknowledge.
• LO3.2.1: ... extractinformationfromdatatodiscoverandexplainconnections, patterns,ortrends.
• LO3.2.2: ... uselargedatasetstoexploreanddiscoverinformationandknowledge.
• LO3.3.1: analyzehowdatarepresentation,storage,security,andtransmission ofdatainvolvecomputationalmanipulationofinformation.
• In BigIdeaIV:Algorithms:
• LO4.1.1: ... developanalgorithmdesignedtobeimplementedtorunona computer.
• LO4.1.2: ... expressanalgorithminalanguage.
• LO4.2.1: ... explainthedifferencebetweenalgorithmsthatruninareasonable timeandthosethatdonotruninareasonabletime.
• LO4.2.2: explainthedifferencebetweensolvableandunsolvableproblems incomputerscience.
• LO4.2.4: ... evaluatealgorithmsanalyticallyandempiricallyforefficiency, correctness,andclarity.
• In BigIdeaV:Programming:
• LO5.1.1: ... developaprogramforcreativeexpression,tosatisfypersonal curiosityortocreatenewknowledge.
• LO5.1.2: developacorrectprogramtosolveproblems.
• LO5.2.1: explainhowprogramsimplementalgorithms.
• LO5.3.1: ... useabstractiontomanagecomplexityinprograms.
• LO5.5.1: ... employappropriatemathematicalandlogicalconceptsinprogramming.
• In BigIdeaVI:TheInternet :
• LO6.1.1: explaintheabstractionsintheInternetandhowtheInternetfunctions.
CHANGESINTHEFOURTHEDITION 1. Wefixedlotsofbugsthatourcrackbug-findersidentifiedinthethirdedition.
2. Wechangedmostofthepicturesinthebook–theyweregettingstale,andourkids wantedustonotuseasmanypicturesofthem.
3. Weaddedmoreend-of-chapterquestions.
4. Weaddedawholenewchapter,ontextasamediumandmanipulatingstrings (tomakesentences,koans,andcodes).Thisisn’ta necessary chapter(e.g.,we introduce for and if statements,butwedidn’tremovetheintroductionslaterin thebook).Forsomeofourteachers,playingwithtextwithshorterloops(iterating overallthecharactersinasentenceistypicallysmallerthanthethousandsofpixels inapicture)isamorecomfortablewaytostart.
5. WegaveupfightingthebattleofinventingaWebscraperthatcouldbeatoutthe changesthatFacebookmade,whichkeptbreakingtheoneweputinthe3rdedition andthenkeptupdatingontheteacher’swebsite2 .Instead,wewroteexamplesin thisbookforprocessingCSV(Comma-SeparatedValues),acommonformatfor sharingdataontheInternet.WeparsetheCSVfromafileusingstringprocessing, thenusingtheCSVlibraryinPython,andthenaccessingthedatabyURL.
6. Weaddedsomenewedgedetectioncodewhichisshorterandsimplertounderstand.
7. Weaddedmorewithturtles:creatingdancingturtles(using sleep fromthe time moduletopauseexecution)andrecursivepatterns.
8. WeupdatedthebooktousethelatestfeaturesinJES,whichincludethosethat reducetheneedtousefullpathnames(aproblemidentifiedbyStephenEdwards andhisstudentsintheirSIGCSE2014paper[43]).
ACKNOWLEDGMENTS Oursincerethanksgoouttoallourreviewersandbug-finders:
• AtthetopofthelistisSusanSchwarzoftheUSMilitaryAcademyatWestPoint. Susanrunsalargecoursewithmanyinstructors,andpayscarefulattentionto what’sgoinginallofthesectionsofthecourse.Sheturnedthatattentionon thethirdeditionofthisbook.Shecaughtmanybugs,andgaveuslotsofuseful feedback.Thanks,Susan!
2 http://home.cc.gatech.edu/mediaComp and http://www.mediacomputation.org
• OurotherbugfindersforthebookwereJohnRutkiewicz,U.Massachusetts–Dartmouth;BrianDorn,U.Nebraska–Omaha;DaveLargent,BallStateUniversity;Simon,UniversityofNewcastle;EvaHeinrich,MasseyUniversity;Peter J.DePasquale,TheCollegeofNewJersey,andBillLeahy,GeorgiaInstituteof Technology.
• MatthewFrazier,NorthCarolinaStateUniversity,workedwithusinthesummer of2014tocreateanewversionofJES–fixingmanybugs,andimprovingJES considerably.
• Wearegratefulforthefeedbackfromourbookreviewersforthe4thedition: AndrewCencini,BenningtonCollege;SusanFox,MacalesterCollege;Kristin Lamberty,UniversityofMinnesota-Morris;JeanSmith,TechnicalCollegeofthe Lowcountry;andWilliamT.Verts,UniversityofMassachusetts-Amherst.
• Wearegratefulfortheinputfromourbookreviewersforthe3rdedition,too: JosephOldham,CentreCollege;LukaszZiarek,PurdueUniversity;Joseph O’Rourke,SmithCollege;AtulPrakash,UniversityofMichigan;NoahD.Barnette,VirginiaTech;AdelaidaA.Medlock,DrexelUniversity;SusanE.Fox, MacalesterCollege;DanielG.Brown,UniversityofWaterloo;BrianA.Malloy, ClemsonUniversity;ReneeRenner,CaliforniaStateUniversity,Chico.
MarkGuzdialandBarbaraEricson GeorgiaInstituteofTechnology
PrefacetotheFirstEdition Researchincomputingeducationmakesitclearthatonedoesn’tjust“learntoprogram.” Onelearnstoprogram something [8,19],andthemotivationtodothatsomethingcan makethedifferencebetweenlearningandnotlearningtoprogram[5].Thechallenge foranyteacheristopicka something thatisapowerfulenoughmotivator.
Peoplewanttocommunicate.Wearesocialcreaturesandthedesiretocommunicate isoneofourprimalmotivations.Increasingly,thecomputerisusedasatoolforcommunicationevenmorethanatoolforcalculation.Virtuallyallpublishedtext,images, sounds,music,andmoviestodayarepreparedusingcomputingtechnology.
Thisbookisaboutteachingpeopletoprograminordertocommunicatewithdigital media.Thebookfocusesonhowtomanipulateimages,sounds,text,andmoviesas professionalsmight,butwithprogramswrittenbystudents.Weknowthatmostpeople willuseprofessional-gradeapplicationstoperformthesetypeofmanipulations.But, knowing how towriteyourownprogramsmeansthatyou can domorethanwhatyour currentapplicationallowsyoutodo.Yourpowerofexpressionisnotlimitedbyyour applicationsoftware.
Itmayalsobetruethatknowinghowthealgorithmsinamediaapplicationswork allowsyoutousethembetterortomovefromoneapplicationtothenextmoreeasily. Ifyourfocusinanapplicationisonwhatmenuitemdoeswhat,everyapplicationis different.Butifyourfocusisonmovingorcoloringthepixelsinthewayyouwant, thenmaybeit’seasiertogetpastthemenuitemsandfocusonwhatyouwanttosay.
Thisbookisnotjustaboutprogramminginmedia.Media-manipulationprograms canbehardtowriteormaybehaveinunexpectedways.Naturalquestionsarise,like “WhyisthesameimagefilterfasterinPhotoshop?”and“Thatwashardtodebug—Are therewaysofwritingprogramsthatare easier todebug?”Answeringquestionslike theseiswhatcomputerscientistsdo.Thereareseveralchaptersattheendofthebook thatareabout computing,notjustprogramming.Thefinalchaptersgobeyondmedia manipulationtomoregeneraltopics.
Thecomputeristhemostamazinglycreativedevicethathumanshaveeverconceived. Itiscompletelymadeupofmind-stuff.Thenotion“Don’tjustdreamit,beit”isreally possibleonacomputer.Ifyoucanimagineit,youcanmakeit“real”onthecomputer. Playingwithprogrammingcanbeand should beenormousfun.
OBJECTIVES,APPROACHANDORGANIZATION Thecurricularcontentofthisbookmeetstherequirementsofthe“imperative-first” approachdescribedintheACM/IEEE ComputingCurriculum2001 standardsdocument [2].Thebookstartswithafocusonfundamentalprogrammingconstructs:assignments, sequentialoperations,iteration,conditionals,anddefiningfunctions.Abstractions
(e.g.,algorithmiccomplexity,programefficiency,computerorganization,hierarchicaldecomposition,recursion,andobject-orientedprogramming)areemphasizedlater, afterthestudentshaveacontextforunderstandingthem.
Thisunusualorderingisbasedonthefindingsofresearchinthelearningsciences. Memoryisassociative.Weremembernewthingsbasedonwhatweassociatethemwith. Peoplecanlearnconceptsandskillsonthepremisethattheywillbeusefulsomedaybut theconceptsandskillswillberelatedonlytothepremises.Theresulthasbeendescribed as“brittleknowledge”[25]—thekindofknowledgethatgetsyouthroughtheexam butispromptlyforgottenbecauseitdoesn’trelatetoanythingbutbeinginthatclass.
Conceptsandskillsarebestrememberediftheycanberelatedtomanydifferent ideasortoideasthatcomeupinone’severydaylife.Ifwewantstudentstogain transferable knowledge(knowledgethatcanbeappliedinnewsituations),wehaveto helpthemtorelatenewknowledgetomoregeneralproblems,sothatthememoriesget indexedinwaysthatassociatewiththosekindsofproblems[22].Inthisbook,weteach withconcreteexperiencesthatstudentscanexploreandrelateto(e.g.,conditionalsfor removingred-eyeinpictures)andlaterlayabstractionsontopofthem(e.g.,achieving thesamegoalusingrecursionorfunctionalfiltersandmaps).
Weknowthatstartingfromtheabstractionsdoesn’treallyworkforcomputing students.AnnFleuryhasshownthatstudentsinintroductorycomputingcoursesjust don’tbuywhatwetellthemaboutencapsulationandreuse(e.g.,[7]).Studentsprefer simplercodethattheycantraceeasilyandtheyactuallythinkthatsuchcodeis better. Ittakestimeandexperienceforstudentstorealizethatthereisvalueinwell-designed systems.Withoutexperience,it’sverydifficultforstudentstolearntheabstractions.
The mediacomputation approachusedinthisbookstartsfromwhatmanypeople usecomputersfor:imagemanipulation,exploringdigitalmusic,viewingandcreating Webpages,andmakingvideos.Wethenexplainprogrammingandcomputinginterms oftheseactivities.WewantstudentstovisitAmazon(forexample)andthink,“Here’s acatalogWebsite—andIknowthattheseareimplementedwithadatabaseanda setofprogramsthatformatthedatabaseentriesasWebpages.”Wewantstudentsto useAdobePhotoshopandGIMPandthinkabouthowtheirimagefiltersareactually manipulatingred,green,andbluecomponentsofpixels.Startingfromarelevantcontext makestransferofknowledgeandskillsmorelikely.Italsomakestheexamplesmore interestingandmotivating,whichhelpswithkeepingstudentsintheclass.
Themediacomputationapproachspendsabouttwo-thirdsofthetimeongiving studentsexperienceswithavarietyofmediaincontextsthattheyfindmotivating.After thattwo-thirds,though,theynaturallystarttoaskquestionsabout computing.“Whyis itthatPhotoshopisfasterthanmyprogram?”and“Moviecodeisslow—Howslowdo programsget?”aretypical.Atthatpoint,weintroducetheabstractionsandthevaluable insightsfromcomputersciencethatanswer their questions.That’swhatthelastpart ofthisbookisabout.
Adifferentbodyofresearchincomputingeducationexploreswhywithdrawalor failureratesinintroductorycomputingaresohigh.Onecommonthemeisthatcomputingcoursesseem“irrelevant”andunnecessarilyfocuson“tediousdetails”such asefficiency[21,1].Acommunicationscontextisperceivedasrelevantbystudents
(astheytellusinsurveysandinterviews[6,18]).Therelevantcontextispartofthe explanationforthesuccesswehavehadwithretentionintheGeorgiaTechcoursefor whichthisbookwaswritten.
Thelateentranceofabstractionisn’ttheonlyunusualorderinginthisapproach.We startusingarraysandmatricesinChapter3,inourfirstsignificantprograms.Typically, introductorycomputingcoursespusharraysoffuntillater,becausetheyareobviously morecomplicatedthanvariableswithsimplevalues.Arelevantandconcretecontext isverypowerful[19].Wefindthatstudentshavenoproblemmanipulatingmatricesof pixelsinapicture.
Therateofstudentswithdrawingfromintroductorycomputingcoursesorreceiving aDorFgrade(commonlycalledthe WDFrate)isreportedinthe30–50%rangeor evenhigher.Arecentinternationalsurveyoffailureratesinintroductorycomputing coursesreportedthattheaveragefailurerateamong54U.S.institutionswas33%and among17internationalinstitutionswas17%[24].AtGeorgiaTech,from2000to2002, wehadanaverageWDFrateof28%intheintroductorycourserequiredforallmajors. Weusedthefirsteditionofthistextinourcourse IntroductiontoMediaComputation. Ourfirstpilotofferingofthecoursehad121students,nocomputingorengineering majors,andtwo-thirdsofthestudentswerefemale.OurWDFratewas11.5%.
Overthenexttwoyears(Spring2003toFall2005),theaverageWDFrateatGeorgia Tech(acrossmultipleinstructors,andliterallythousandsofstudents)was15%[29]. Actually,the28%priorWDFrateand15%currentWDFrateareincomparable,since allmajorstookthefirstcourseandonlyliberalarts,architecture,andmanagement majorstookthenewcourse.Individualmajorshavemuchmoredramaticchanges. Managementmajors,forexample,hada51.5%WDFratefrom1999to2003withthe earliercourse,andhada11.2%failurerateinthefirsttwoyearsofthenewcourse[29]. Sincethefirsteditionofthisbookwaspublished,severalotherschoolshaveadopted andadaptedthisapproachandevaluatedtheirresult.Allofthemhavereportedsimilar, dramaticimprovementsinsuccessrates[4,42].
WaystoUseThisBook ThisbookrepresentswhatweteachatGeorgiaTechinprettymuchthesameorder. Individualteachersmayskipsomesections(e.g.,thesectiononadditivesynthesis, MIDI,andMP3),butallofthecontentherehasbeentestedwithourstudents. However,thismaterialhasbeenusedinmanyotherways.
• AshortintroductiontocomputingcouldbetaughtwithjustChapters2(introductiontoprogramming)and3(introductiontoimageprocessing),perhapswith somematerialfromChapters4and5.Wehavetaughtevensingle-dayworkshops onmediacomputationusingjustthismaterial.
• Chapters6through8basicallyreplicatethecomputerscienceconceptsfrom Chapters3through5butinthecontextofsoundsratherthanimages.Wefind thereplicationuseful—somestudentsseemtorelatebettertotheconceptsof iterationandconditionalswhenworkingwithonemediumthanwiththeother.
Further,itgivesustheopportunitytopointoutthatthesame algorithm canhave similareffectsindifferentmedia(e.g.,scalingapictureupordownandshiftinga soundhigherorlowerinpitcharethesamealgorithm).Butitcouldcertainlybe skippedtosavetime.
• Chapter12(onmovies)introducesnonewprogrammingorcomputingconcepts. Whilemotivational,movieprocessingcouldbeskippedtosavetime.
• Werecommendgettingtoatleastsomeofthechaptersinthelastunit,inorderto leadstudentsintothinkingaboutcomputingandprogramminginamoreabstract manner,butclearlynot all ofthechaptershavetobecovered.
PythonandJython TheprogramminglanguageusedinthisbookisPython.Pythonhasbeendescribedas “executablepseudo-code.”Wehavefoundthatbothcomputersciencemajorsandnon majorscanlearnPython.SincePythonisactuallyusedforcommunicationstasks(e.g., Websitedevelopment),it’sarelevantlanguageforanintroductorycomputingcourse. Forexample,jobadvertisementspostedtothePythonWebsite(http://www.python. org)showthatcompanieslikeGoogleandIndustrialLight&MagichirePythonprogrammers.
ThespecificdialectofPythonusedinthisbookis Jython (http://www.jython. org).Jython is Python.ThedifferencesbetweenPython(normallyimplementedinC) andJython(whichisimplementedinJava)areakintothedifferencesbetweenany twolanguageimplementations(e.g.,Microsoftvs.GNUC++ implementations)—the basiclanguageis exactly thesame,withsomelibraryanddetailsdifferencesthatmost studentswillnevernotice.
TYPOGRAPHICALNOTATIONS ExamplesofPythoncodelooklikethis: x=x+1.Longerexampleslooklikethis: defhelloWorld(): print "Hello,world!"
WhenshowingsomethingthattheusertypesinwithPython’sresponse,itwillhave asimilarfontandstyle,buttheuser’stypingwillappearafteraPythonprompt(>>>): >>> print 3+4
7
UserinterfacecomponentsofJES(JythonEnvironmentforStudents)willbespecifiedusingasmallcapsfont,like Save menuitemandthe Load button. Thereareseveralspecialkindsofsidebarsthatyou’llfindinthebook.
ComputerScienceIdea: AnExampleIdea Keycomputerscienceconceptsappearlikethis.
CommonBug: AnExampleCommonBug
Commonthingsthatcancauseyourprogramtofailappearlikethis.
DebuggingTip: AnExampleDebuggingTip
Ifthere’sagoodwaytokeepabugfromcreepingintoyourprogramsinthefirstplace, it’shighlightedhere.
MakingItWorkTip: AnExampleHowtoMakeItWork Bestpracticesortechniquesthatreallyhelparehighlightedlikethis.
INSTRUCTORRESOURCES TheinstructorresourcesareavailableonthePearsonEducation’sInstructorResource Centerat www.pearsonglobaleditions.com/guzdial:
• PowerPoint Presentationslides
ACKNOWLEDGMENTS Oursincerethanksgoouttothefollowing:
• JasonErgle,ClaireBailey,DavidRaines,andJoshuaSklare,whomadetheinitial versionofJESwithsurprisingqualityinanamazinglyshortamountoftime.Over theyears,AdamWilson,LarryOlson,YuCheung(Toby)Ho,EricMickley,Keith McDermott,EllieHarmon,TimmyDouglas,AlexRudnick,BrianO’Neill,and WilliamFredrick(Buck)ScharfnorthIIIhavemadeJESintotheusefulandstill understandabletoolthatitistoday.
• AdamWilsonbuilttheMediaToolsthataresousefulforexploringsoundsand imagesandprocessingvideo.
• AndreaForte,MarkRichman,MattWallace,AlisaBandlow,DerekChambless, LarryOlson,andDavidRenniehelpedbuildcoursematerials.Derek,Mark,and Mattcreatedmanyexampleprograms.
• TherewereseveralpeoplewhoreallymadetheeffortcometogetheratGeorgia Tech.BobMcMath,Vice-ProvostatGeorgiaTech,andJimFoley,AssociateDean forEducationintheCollegeofComputing,investedinthiseffortearlyon.Kurt Eiseltworkedhardtomakethiseffortreal,convincingotherstotakeitseriously. JanetKolodnerandAaronBobickwereexcitedandencouragingabouttheidea ofmediacomputationforstudentsnewtocomputerscience.JeffPiercereviewed
andadvisedusonthedesignofthemediafunctionsusedinthebook.Aaron Lantermangavemelotsofadviceonhowtoconveythedigitalmaterialcontent accurately.JoanMorton,ChrissyHendricks,DavidWhite,andallthestaffofthe GVUCentermadesurethatwehadwhatweneededandthatthedetailswere handledtomakethiseffortcometogether.AmyBruckmanandEugeneGuzdial boughtMarktimetogetthefinalversioncompleted.
• WearegratefultoColinPottsandMonicaSweatwhohavetaughtthisclassat GeorgiaTechandgivenusmanyinsightsaboutthecourse.
• CharlesFowlerwasthefirstpersonoutsideofGeorgiaTechwillingtotakethe gambleandtrialthecourseinhisowninstitution(GainesvilleCollege),forwhich we’reverygrateful.
• ThepilotcourseofferedinSpring2003atGeorgiaTechwasveryimportantin helpingusimprovethecourse.AndreaForte,RachelFithian,andLaurenRichdid theassessmentofthepilotofferingofthecourse,whichwasincrediblyvaluablein helpingusunderstandwhatworkedandwhatdidn’t.Thefirstteachingassistants (JimGruen,AngelaLiang,LarryOlson,MattWallace,AdamWilson,andJose Zagal)didalottohelpcreatethisapproach.BlairMacIntyre,ColinPotts,and MonicaSweathelpedmakethematerialseasierforotherstoadopt.JochenRick madetheCoWeb/SwikiagreatplaceforCS1315studentstohangout.
• Manystudentspointedouterrorsandmadesuggestionstoimprovethebook. ThankstoCatherineBilliris,JenniferBlake,KarinBowman,MaryamDoroudi, SuzannahGill,BaillieHomire,JonathanLaing,MireilleMurad,MichaelShaw, SummarShoaib,andespeciallyJonathanLonghitano,whohasarealflairfor copyediting.
• Thankstoformer MediaComputation studentsConstantinoKombosch,Joseph Clark,andShannonJoinerforpermissiontousetheirsnapshotsfromclassin examples.
• TheresearchworkthatledtothistextwassupportedbygrantsfromtheNational ScienceFoundation—fromtheDivisionofUndergraduateEducation,CCLIprogram,andfromtheCISEEducationalInnovationsprogram.Thankyouforthe support.
• ThankstocomputingstudentsAnthonyThomas,CelinesRivera,andCarolina Gomezforallowingustousetheirpictures.
• Finallybutmostimportant,thankstoourchildrenMatthew,Katherine,andJennifer Guzdial,whoallowedthemselvestobephotographedandrecordedforMommy andDaddy’smediaprojectandwhoweresupportiveandexcitedabouttheclass.
MarkGuzdialandBarbaraEricson GeorgiaInstituteofTechnology PearsonwouldliketothankandacknowledgeDheerajD.,REVAInstituteofTechnologyandManagementKattigenahalli,SomitraSanadhya,IndianInstituteofTechnology Delhi,andSimon,UniversityofNewcastle,forcontributingtotheGlobalEdition,and ShaligramPrajapat,DeviAhilyaUniversityIndore,NgHu,MultimediaUniversity, RohitTahiliani,RenjithS.,andShivaniPandit,forreviewingtheGlobalEdition.
AbouttheAuthors MarkGuzdial isaprofessorintheSchoolofInteractiveComputingintheCollege ofComputingatGeorgiaInstituteofTechnology.Heisoneofthefoundersofthe ACM’sInternationalComputingEducationResearchworkshopseries.Dr.Guzdial’s researchfocusesonlearningsciencesandtechnology,specifically,computingeducation research.HisfirstbookswereontheprogramminglanguageSqueakanditsusein education.Hewastheoriginaldeveloperof“Swiki”(SqueakWiki),thefirstwiki developedexplicitlyforuseinschools.HeisaFellowandaDistinguishedEducator oftheACM.Heisontheeditorialboardsofthe JournaloftheLearningSciences and CommunicationsoftheACM. Hewasarecipientofthe2012IEEEComputerSociety UndergraduateTeachingAward.
BarbaraEricson isaresearchscientistandthedirectorofComputingOutreachfor theCollegeofComputingatGeorgiaTech.Shehasbeenworkingonimprovingintroductorycomputingeducationsince2004.
ShehasservedastheteachereducationrepresentativeontheComputerScience TeachersAssociationboard,theco-chairoftheK-12AlliancefortheNationalCenter forWomeninInformationTechnology,andasareaderfortheAdvancedPlacement ComputerScienceexams.Sheenjoysthediversityofthetypesofproblemsshehas workedonovertheyearsincomputingincludingcomputergraphics,artificialintelligence,medicine,andobject-orientedprogramming.
MarkandBarbarareceivedthe2010ACMKarlV.KarlstromAwardforOutstanding ComputerEducatorfortheirworkonMediaComputationincludingthisbook.Theyled aprojectcalled“GeorgiaComputes!”forsixyears,whichhadasignificantimpactin improvingcomputingeducationintheUSstateofGeorgia[31].Together,theyMark andBarbaraareleadersinthe ExpandingComputingEducationPathways (ECEP) alliance3
3 http://www.ecepalliance.org
PART 1 INTRODUCTION Chapter1IntroductiontoComputerScience andMediaComputation
Chapter2IntroductiontoProgramming
Chapter3CreatingandModifyingText
Chapter4ModifyingPicturesUsingLoops
Chapter5PictureTechniqueswithSelection
Chapter6ModifyingPixelsbyPosition