Description
Efnisyfirlit
- Contents
- New in the Third Edition
- Changes Made in the Second 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
- 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 Variable Recipes: Real Math-Like Functions That Take Input
- 3 Modifying Pictures Using Loops
- 3.1 How Pictures Are Encoded
- 3.2 Manipulating Pictures
- 3.2.1 Exploring Pictures
- 3.3 Changing Color Values
- 3.3.1 Using Loops in Pictures
- 3.3.2 Increasing/Decreasing Red (Green, Blue)
- 3.3.3 Testing the Program: Did That Really Work?
- 3.3.4 Changing One Color at a Time
- 3.4 Creating a Sunset
- 3.4.1 Making Sense of Functions
- 3.5 Lightening and Darkening
- 3.6 Creating a Negative
- 3.7 Converting to Grayscale
- 4 Modifying Pixels in a Range
- 4.1 Copying Pixels
- 4.1.1 Looping Across the Pixels with range
- 4.2 Mirroring a Picture
- 4.3 Copying and Transforming Pictures
- 4.3.1 Copying
- 4.3.2 Creating a Collage
- 4.3.3 General Copying
- 4.3.4 Rotation
- 4.3.5 Scaling
- 5 Picture Techniques with Selection & Combination
- 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 Combining Pixels: Blurring
- 5.3 Comparing Pixels: Edge Detection
- 5.4 Blending Pictures
- 5.5 Background Subtraction
- 5.6 Chromakey
- 5.7 Drawing on Images
- 5.7.1 Drawing with Drawing Commands
- 5.7.2 Vector and Bitmap Representations
- 5.8 Selecting without Re-Testing
- 5.9 Programs as Specifying Drawing Process
- 5.9.1 Why Do We Write Programs?
- 2 SOUND
- 6 Modifying Sounds Using Loops
- 6.1 How Sound Is Encoded
- 6.1.1 The Physics of Sound
- 6.1.2 Exploring How Sounds Look
- 6.1.3 Encoding the Sound
- 6.1.4 Binary Numbers and Two’s Complement
- 6.1.5 Storing Digitized Sounds
- 6.2 Manipulating Sounds
- 6.2.1 Open Sounds and Manipulating Samples
- 6.2.2 Using the JES MediaTools
- 6.2.3 Looping
- 6.3 Changing the Volume of Sounds
- 6.3.1 Increasing Volume
- 6.3.2 Did That Really Work?
- 6.3.3 Decreasing Volume
- 6.3.4 Making Sense of Functions, in Sounds
- 6.4 Normalizing Sounds
- 6.4.1 Generating Clipping
- 7 Modifying Samples in a Range
- 7.1 Manipulating Different Sections of the Sound Differently
- 7.2 Splicing Sounds
- 7.3 General Clip and Copy
- 7.4 Reversing Sounds
- 7.5 Mirroring
- 7.6 On Functions and Scope
- 8 Making Sounds by Combining Pieces
- 8.1 Composing Sounds Through Addition
- 8.2 Blending Sounds
- 8.3 Creating an Echo
- 8.3.1 Creating Multiple Echoes
- 8.3.2 Creating Chords
- 8.4 How Sampling Keyboards Work
- 8.4.1 Sampling as an Algorithm
- 8.5 Additive Synthesis
- 8.5.1 Making Sine Waves
- 8.5.2 Adding Sine Waves Together
- 8.5.3 Checking Our Result
- 8.5.4 Square Waves
- 8.5.5 Triangular Waves
- 8.6 Modern Music Synthesis
- 8.6.1 MP3
- 8.6.2 MIDI
- 9 Building Bigger Programs
- 9.1 Designing Programs Top-Down
- 9.1.1 A Top-Down Design Example
- 9.1.2 Designing the Top-Level Function
- 9.1.3 Writing the Subfunctions
- 9.2 Designing Programs Bottom-Up
- 9.2.1 An Example Bottom-Up Process
- 9.3 Testing Your Program
- 9.3.1 Testing the Edge Conditions
- 9.4 Tips on Debugging
- 9.4.1 Finding Which Statement to Worry About
- 9.4.2 Seeing the Variables
- 9.4.3 Debugging the Adventure Game
- 9.5 Algorithms and Design
- 9.6 Running Programs Outside of JES
- 3 TEXT, FILES,NETWORKS,DATABASES, AND UNIMEDIA
- 10 Creating and Modifying Text
- 10.1 Text as Unimedia
- 10.2 Strings: Making and Manipulating Strings
- 10.3 Manipulating Parts of Strings
- 10.3.1 String Methods: Introducing Objects and Dot Notation
- 10.3.2 Lists: Powerful, Structured Text
- 10.3.3 Strings Have No Font
- 10.4 Files: Places to Put Your Strings and Other Stuff
- 10.4.1 Opening and Manipulating Files
- 10.4.2 Generating Form Letters
- 10.4.3 Writing Out Programs
- 10.5 The Python Standard Library
- 10.5.1 More on Import and Your Own Modules
- 10.5.2 Another Fun Module: Random
- 10.5.3 A Sampling of Python Standard Libraries
- 11 Advanced Text Techniques: Web and Information
- 11.1 Networks: Getting Our Text from the Web
- 11.2 Using Text to Shift Between Media
- 11.3 Moving Information Between Media
- 11.4 Using Lists as Structured Text for Media Representations
- 11.5 Hiding Information in a Picture
- 12 Making Text for the Web
- 12.1 HTML: The Notation of the Web
- 12.2 Writing Programs to Generate HTML
- 12.3 Databases: A Place to Store Our Text
- 12.3.1 Relational Databases
- 12.3.2 An Example Relational Database Using Hash Tables
- 12.3.3 Working with SQL
- 12.3.4 Using a Database to Build Web Pages
- 4 MOVIES
- 13 Creating and Modifying Movies
- 13.1 Generating Animations
- 13.2 Working with Video Source
- 13.2.1 Video Manipulating Examples
- 13.3 Building a Video Effect Bottom-Up
- 5 TOPICS IN COMPUTER SCIENCE
- 14 Speed
- 14.1 Focusing on Computer Science
- 14.2 What Makes Programs Fast?
- 14.2.1 What Computers Really Understand
- 14.2.2 Compilers and Interpreters
- 14.2.3 What Limits Computer Speed?
- 14.2.4 Does It Really Make a Difference?
- 14.2.5 Making Searching Faster
- 14.2.6 Algorithms That Never Finish or Can’t Be Written
- 14.2.7 Why Is Photoshop Faster than JES?
- 14.3 What Makes a Computer Fast?
- 14.3.1 Clock Rates and Actual Computation
- 14.3.2 Storage: What Makes a Computer Slow?
- 14.3.3 Display
- 15 Functional Programming
- 15.1 Using Functions to Make Programming Easier
- 15.2 Functional Programming with Map and Reduce
- 15.3 Functional Programming for Media
- 15.3.1 Media Manipulation Without Changing State
- 15.4 Recursion: A Powerful Idea
- 15.4.1 Recursive Directory Traversals
- 15.4.2 Recursive Media Functions
- 16 Object-Oriented Programming
- 16.1 History of Objects
- 16.2 Working with Turtles
- 16.2.1 Classes and Objects
- 16.2.2 Sending Messages to Objects
- 16.2.3 Objects Control Their State
- 16.3 Teaching Turtles New Tricks
- 16.3.1 Overriding an Existing Turtle Method
- 16.3.2 Using Turtles for More
- 16.4 An Object-Oriented Slide Show
- 16.4.1 Making the Slide Class More Object-Oriented
- 16.5 Object-Oriented Media
- 16.6 Joe the Box
- 16.7 Why Objects?
- APPENDIX
- A: Quick Reference to Python
- A.1 Variables
- A.2 Function Creation
- A.3 Loops and Conditionals
- A.4 Operators and Representation 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