Description
Efnisyfirlit
- Title Page
- Copyright Page
- ACKNOWLEDGMENTS
- Contents
- Preface for the Fourth Edition
- Preface to the First Edition
- About the Authors
- 1 INTRODUCTION
- 1 Introduction to Computer Science and Media Computation
- 1.1 What Is Computer Science About?
- 1.2 Programming Languages
- 1.3 What Computers Understand
- 1.4 Media Computation: Why Digitize Media?
- 1.5 Computer Science for Everyone
- 1.5.1 It’s About Communication
- 1.5.2 It’s About Process
- 1.5.3 You Will Probably Need It
- 2 Introduction to Programming
- 2.1 Programming Is About Naming
- 2.1.1 Files and Their Names
- 2.2 Programming in Python
- 2.3 Programming in JES
- 2.4 Media Computation in JES
- 2.4.1 Showing a Picture
- 2.4.2 Playing a Sound
- 2.4.3 Naming Values
- 2.5 Making a Program
- 2.5.1 Functions: Real Math-Like Functions That Take Input
- 3 Creating and Modifying Text
- 3.1 Strings: Making Human Text in a Computer
- 3.1.1 Making Strings from Strings: Telling Stories
- 3.2 Taking Strings Apart with For
- 3.2.1 Testing the Pieces
- 3.2.2 Taking String Apart, and Putting Strings Together
- 3.2.3 Taking Strings Apart with Indices
- 3.2.4 Mirroring, Reversing, and Separating Strings with Index
- 3.2.5 Encoding and Decoding Strings Using a Keyword Cipher
- 3.3 Taking Strings Apart by Words
- 3.4 What’s Inside a String
- 3.5 What a Computer Can Do
- 4 Modifying Pictures Using Loops
- 4.1 How Pictures Are Encoded
- 4.2 Manipulating Pictures
- 4.2.1 Exploring Pictures
- 4.3 Changing Color Values
- 4.3.1 Using Loops in Pictures
- 4.3.2 Increasing/Decreasing Red (Green, Blue)
- 4.3.3 Testing the Program: Did That Really Work?
- 4.3.4 Changing One Color at a Time
- 4.4 Creating a Sunset
- 4.4.1 Making Sense of Functions
- 4.5 Lightening and Darkening
- 4.6 Creating a Negative
- 4.7 Converting to Grayscale
- 4.8 Specifying Pixels by Index
- 5 Picture Techniques with Selection
- 5.1 Replacing Colors: Red-Eye, Sepia Tones, and Posterizing
- 5.1.1 Reducing Red-Eye
- 5.1.2 Sepia-Toned and Posterized Pictures: Using Conditionals to Choose the Color
- 5.2 Comparing Pixels: Edge Detection
- 5.3 Background Subtraction
- 5.4 Chromakey
- 5.5 Coloring in ranges
- 5.5.1 Adding a Border
- 5.5.2 Lightening the Right Half of a Picture
- 5.6 Selecting without Retesting
- 6 Modifying Pixels by Position
- 6.1 Processing Pixels Faster
- 6.1.1 Looping across the Pixels with Range
- 6.1.2 Writing Faster Pixel Loops
- 6.2 Mirroring a Picture
- 6.3 Copying and Transforming Pictures
- 6.3.1 Copying
- 6.3.2 Copying Smaller and Modifying
- 6.3.3 Copying and Referencing
- 6.3.4 Creating a Collage
- 6.3.5 General Copying
- 6.3.6 Rotation
- 6.3.7 Scaling
- 6.4 Combining Pixels: Blurring
- 6.5 Blending Pictures
- 6.6 Drawing on Images
- 6.6.1 Drawing with Drawing Commands
- 6.6.2 Vector and Bitmap Representations
- 6.7 Programs as Specifying Drawing Process
- 6.7.1 Why Do We Write Programs?
- 2 SOUND
- 7 Modifying Sounds Using Loops
- 7.1 How Sound Is Encoded
- 7.1.1 The Physics of Sound
- 7.1.2 Investigating Different Sounds
- 7.1.3 Encoding the Sound
- 7.1.4 Binary Numbers and Two’s Complement
- 7.1.5 Storing Digitized Sounds
- 7.2 Manipulating Sounds
- 7.2.1 Open Sounds and Manipulating Samples
- 7.2.2 Using the JES Media Tools
- 7.2.3 Looping
- 7.3 Changing the Volume of Sounds
- 7.3.1 Increasing Volume
- 7.3.2 Did That Really Work?
- 7.3.3 Decreasing Volume
- 7.3.4 Using Array Index Notation
- 7.3.5 Making Sense of Functions in Sounds
- 7.4 Normalizing Sounds
- 7.4.1 Generating Clipping
- 8 Modifying Samples in a Range
- 8.1 Manipulating Different Sections of the Sound Differently
- 8.1.1 Revisiting Index Array Notation
- 8.2 Splicing Sounds
- 8.3 General Clip and Copy
- 8.4 Reversing Sounds
- 8.5 Mirroring
- 8.6 On Functions and Scope
- 9 Making Sounds by Combining Pieces
- 9.1 Composing Sounds Through Addition
- 9.2 Blending Sounds
- 9.3 Creating an Echo
- 9.3.1 Creating Multiple Echoes
- 9.3.2 Creating Chords
- 9.4 How Sampling Keyboards Work
- 9.4.1 Sampling as an Algorithm
- 9.5 Additive Synthesis
- 9.5.1 Making Sine Waves
- 9.5.2 Adding Sine Waves Together
- 9.5.3 Checking Our Result
- 9.5.4 Square Waves
- 9.5.5 Triangular Waves
- 9.6 Modern Music Synthesis
- 9.6.1 MP3
- 9.6.2 MIDI
- 10 Building Bigger Programs
- 10.1 Designing Programs Top-Down
- 10.1.1 A Top-Down Design Example
- 10.1.2 Designing the Top-Level Function
- 10.1.3 Writing the Subfunctions
- 10.2 Designing Programs Bottom-Up
- 10.2.1 An Example Bottom-Up Process
- 10.3 Testing Your Program
- 10.3.1 Testing the Edge Conditions
- 10.4 Tips on Debugging
- 10.4.1 Finding Which Statement to Worry About
- 10.4.2 Seeing the Variables
- 10.4.3 Debugging the Adventure Game
- 10.5 Algorithms and Design
- 10.6 Connecting to Data Outside a Function
- 10.7 Running Programs Outside of JES
- 3 TEXT, FILES, NETWORKS, DATABASES, AND UNIMEDIA
- 11 Manipulating Text with Methods and Files
- 11.1 Text as Unimedia
- 11.2 Manipulating Parts of Strings
- 11.2.1 String Methods: Introducing Objects and Dot Notation
- 11.2.2 Lists: Powerful, Structured Text
- 11.2.3 Strings Have No Font
- 11.3 Files: Places to Put Your Strings and Other Stuff
- 11.3.1 Opening and Manipulating Files
- 11.3.2 Generating Form Letters
- 11.3.3 Reading and Manipulating Data from the Internet
- 11.3.4 Scraping Information from a Web Page
- 11.3.5 Reading CSV Data
- 11.3.6 Writing Out Programs
- 11.4 The Python Standard Library
- 11.4.1 More on Import and Your Own Modules
- 11.4.2 Adding Unpredictably to Your Program with Random
- 11.4.3 Reading CSV Files with a Library
- 11.4.4 A Sampling of Python Standard Libraries
- 12 Advanced Text Techniques: Web and Information
- 12.1 Networks: Getting Our Text from the Web
- 12.1.1 Automating Access to CSV Data
- 12.1.2 Accessing FTP
- 12.2 Using Text to Shift Between Media
- 12.3 Moving Information Between Media
- 12.4 Using Lists as Structured Text for Media Representations
- 12.5 Hiding Information ina Picture
- 12.5.1 Hiding a Sound Inside a Picture
- 13 Making Text for the Web
- 13.1 HTML: The Notation of the Web
- 13.2 Writing Programs to Generate HTML
- 13.2.1 Making Home Pages
- 13.3 Databases: A Place to Store Our Text
- 13.3.1 Relational Databases
- 13.3.2 An Example Relational Database Using Hash Tables
- 13.3.3 Working with SQL
- 13.3.4 Using a Database to Build Web Pages
- 4 MOVIES
- 14 Creating and Modifying Movies
- 14.1 Generating Animations
- 14.2 Working with Video Source
- 14.2.1 Video Manipulating Examples
- 14.3 Building a Video Effect Bottom-Up
- 15 Speed
- 15.1 Focusing on Computer Science
- 15.2 What Makes Programs Fast?
- 15.2.1 What Computers Really Understand
- 15.2.2 Compilers and Interpreters
- 15.2.3 What Limits Computer Speed?
- 15.2.4 Does It Really Make a Difference?
- 15.2.5 Making Searching Faster
- 15.2.6 Algorithms That Never Finish or Can’t Be Written
- 15.2.7 Why Is Photoshop Faster than JES?
- 15.3 What Makes a Computer Fast?
- 15.3.1 Clock Rates and Actual Computation
- 15.3.2 Storage: What Makes a Computer Slow?
- 15.3.3 Display
- 16 Functional Programming
- 16.1 Using Functions to Make Programming Easier
- 16.2 Functional Programming with Map and Reduce
- 16.3 Functional Programming for Media
- 16.3.1 Media Manipulation without Changing State
- 16.4 Recursion: A Powerful Idea
- 16.4.1 Recursive Directory Traversals
- 16.4.2 Recursive Media Functions
- 17 Object-Oriented Programming
- 17.1 History of Objects
- 17.2 Working with Turtles
- 17.2.1 Classes and Objects
- 17.2.2 Sending Messages to Objects
- 17.2.3 Objects Control Their State
- 17.3 Teaching Turtles New Tricks
- 17.3.1 Overriding an Existing Turtle Method
- 17.3.2 Working with Multiple Turtles at Once
- 17.3.3 Turtles with Pictures
- 17.3.4 Dancing Turtles
- 17.3.5 Recursion and Turtles
- 17.4 An Object-Oriented Slide Show
- 17.4.1 Making the Slide Class More Object-Oriented
- 17.5 Object-Oriented Media
- 17.6 Joe the Box
- 17.7 Why Objects?
- APPENDIX
- A Quick Reference to Python
- A.1 Variables
- A.2 Function Creation
- A.3 Loops and Conditionals
- A.4 Operators andRepresentation Functions
- A.5 Numeric Functions
- A.6 Sequence Operations
- A.7 String Escapes
- A.8 Useful String Methods
- A.9 Files
- A.10 Lists
- A.11 Dictionaries, Hash Tables, or Associative Arrays
- A.12 External Modules
- A.13 Classes
- A.14 Functional Methods
- Bibliography
- Index
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- N
- O
- P
- Q
- R
- S
- T
- U
- V
- W
- X
- Z




