Topic
- ❑ Part I: INTRODUCTION
- ❑ Introduction to Media Computation
- ❑ What is computer science?
- ❑ It's about recipes, and computer scientists study different kinds of recipes (argument from slides)
- ❑ Programming languages are different ways to express recipes
- ❑ Why should normal people learn it?
- ❑ The communication argument goes here
- ❑ Introduction to Programming
- ❑ Much of computer science, and all of programming, is all about naming
- ❑ You name media in files, and can also name them in memory
- ❑ Why files? Because files are spaces on disks which are huge. You can have acres there.
- ❑ Programs live in memory, which is more like an apartment building. You can bring things from your country home into your apartment building, but only in bits and pieces -- won't fit otherwise.
- ❑ You can bring them in and name them
- ❑ Bring in a picture and name it
- ❑ getAFileName()
- ❑ makeSound, makePicture
- ❑ show, play
- ❑ We can also name the recipe for bringing a particular media element into memory and playing or showing it
- ❑ def some function for doing just that.
- ❑ KEY IDEA: Everything can be named
- ❑ What does a computer know REALLY
- ❑ KEY IDEA: Everything is an encoding on top of numbers
- ❑ Basically, computers only understand numbers
- ❑ Sequences of numbers from 0 to 255, to be exact
- ❑ But we can create standard definitions and agreements on how to interpret those numbers
- ❑ When you save an "A" in a file, your word processor actually stores the number 65. It agrees to INTERPRET that 65 as an A. (DEMO)
- ❑ Look at an A on the screen. It's actually a series of lit and unlit dots on the screen. We can represent a "graphical" A as a series of binary numbers that correspond to the dots on the screen.
- ❑ We can encode more complicated things by relying upon increasingly sophisticated encodings
- ❑ Complicated things like sounds, pictures, and movies (DEMO)
- ❑ The way we handle media is by making codes from pictures/sound to numbers in various structures/units
- ❑ Like deciding to work in tablespoons or metric tons, in tables or columns
- ❑ Part 2: SOUND
- ❑ The Encoding of Sounds
- ❑ A sound is a series of samples
- ❑ How sounds work
- ❑ Introducing the loop
- ❑ Manipulating Sounds
- ❑ Changing the volume of sounds
- ❑ Rearranging sounds
- ❑ Changing the frequency of a sound
- ❑ Creating sounds
- ❑ Summing sounds
- ❑ Creating frequencies to sum
- ❑ Part 3: Debugging
- ❑ Computers only do what you tell them to do: What did you tell them to do?
- ❑ Flow of execution
- ❑ Flow of data
- ❑ show_vars
- ❑ Printing out where you are
- ❑ Programs that make decisions and that repeat
- ❑ Expanding a program into a linear list
- ❑ Part 3: PICTURES
- ❑ The Encoding of Pictures
- ❑ Pixels in two-dimensions
- ❑ RGB values
- ❑ Manipulating Pictures
- ❑ Changing RGB values alone
- ❑ Simple filters
- ❑ Converting to grayscale
- ❑ Changing RGB values between two or more pictures
- ❑ Background subtraction
- ❑ Bluescreening
- ❑ Changing RGB values between own pixels
- ❑ "Painting" or averaging
- ❑ Creating pictures
- ❑ Drawing on a picture
- ❑ Putting text on a picture
- ❑ Compositing images to make new images
- ❑ Creating pictures for manipulating pictures
- ❑ Creating a mask
- ❑ Using a mask to grayscale something that you're inserting via bluescreening
- ❑ Part 4: FILES
- ❑ The Encoding of Files
- ❑ Trees
- ❑ Manipulating files
- ❑ Doing something to whole sets of files
- ❑ Walking directories
- ❑ Doing things to individual files
- ❑ Having to face your OWN encodings!
- ❑ Reading values from files
- ❑ Moving files
- ❑ On your disk
- ❑ Via FTP
- ❑ Making decisions
- ❑ Making files from files
- ❑ Compression
- ❑ Part 5: TEXT
- ❑ The Encoding of Text
- ❑ ASCII
- ❑ HTML
- ❑ Manipulating and Creating Text
- ❑ Chopping up existing text
- ❑ Generating text
- ❑ Part 6: MOVIES
- ❑ The Encoding of Movies
- ❑ MPEG
- ❑ Series of frames
- ❑ Manipulating Movies
- ❑ It's easy: Make them frames!
- ❑ Adding something to every frame: Titles, characters
- ❑ Creating Movies
- ❑ Animations
- ❑ Morphing
- ❑ Part 7: MAPPING MEDIA
- ❑ Putting text and numbers into databases
- ❑ Generating text: Creating HTML
- ❑ Generating graphs: Mapping numbers into graphs
- ❑ Part 8: Can't we do this any faster?
- ❑ Introduce ImageMagick
- ❑ Why is ImageMagick faster?
- ❑ How computers work
- ❑ Why machine language is faster: No encoding
- ❑ How do we get there? Compilers
- ❑ How fast can we get?
- ❑ O(n) and complexity
- ❑ How some recipes can't be written
- ❑ How some recipes can never finish (in our lifetimes
- ❑ Part 9: Can't we do this any easier?
- ❑ Functional decomposition
- ❑ Making up a drawImage() function to make image composition easier
- ❑ How we think about functional decomposition?
- ❑ Using functions for more map/apply
- ❑ Recursion: Using functions to do everything
- ❑ Different ways of thinking about recursion
- ❑ Objects: Lifting the lid on our media
- ❑ Pixels have pieces and understand different things
- ❑ Pictures and sounds both understand writeTo()
- ❑ Dot notation
- ❑ Part 10: Other ways of writing recipes
- ❑ JavaScript: Orchestrating lots of things
- ❑ But really only manipulating text
- ❑ Java: Get below the encodings