Contents

    Preface

    Talking with Computers
        Sample Lecture Material
            Recreational Hacking
            Plumbing and Programming
            Asking Good Questions
        Example Exercises
            Navigating in File Space
        Code Fragments

    The Shell Game
        Sample Lecture Material
            Getting Started
            Memory and Variables
            Conditionals and Iteration
            Manipulating Audio Files
        Example Exercises
            Writing Shell Scripts
            Ciphers and Secrets
            Files, Dates and Times
        Code Fragments

    Keeping Track of Your Stuff
        Example Exercises
            Searching Email Files
            Building Database Systems
        Code Fragments

    Don't Sweat the Syntax
        Supplementary References
        Sample Lecture Material
            Ubiquitous Syntax
            Syntactic Drawings
            Recursive Definitions
        Example Exercises
            Rube Goldberg Machines
        Errata
        Code Fragments

    Computational Muddles
        Supplementary References
        Sample Lecture Material
            Numbers and Functions
            Conditional Expressions
            Data Structures
            More Good Questions
        Example Exercises
            Manipulating Lists
            Snowflakes and Grammars
            Fuzzy String Matching
            Designing Personalities
        Code Fragments

    Getting Oriented
        Sample Lecture Material
            Organizing Memory
            Procedures With State
        Code Fragments

    Thanks for Sharing
        Supplementary References
        Example Exercises
            Mythical Man-Month
        Code Fragments

    You've Got (Junk) Email
        Supplementary References
        Example Exercises
            Scheme for Filtering Spam
        Code Fragments

    Modern Architecture
        Supplementary References
        Sample Lecture Material
            The Logic of Control
            Representing Numbers
            Assembly Programming
        Code Fragments

    Do Robots Sleep?
        Supplementary References
        Sample Lecture Material
            Managing Processes
        Example Exercises
        Code Fragments

    Under the Hood
        Example Exercises
        Code Fragments

    Analyze This
        Supplementary References
        Sample Lecture Material
            Analyzing Algorithms
            The Halting Problem
        Example Exercises
        Errata
        Code Fragments

    Forest for the Trees
        Supplementary References
        Sample Lecture Material
            Drawing Graphs
            Web Crawling
            Vectors and Matrices
        Example Exercises
        Code Fragments

    Searching the Wild Web
        Sample Lecture Material
            Summarizing the Web as a Vector Space
            Search Engines and Term Frequency Vectors
        Example Exercises
        Code Fragments

    Darwin's Dangerous Algorithm
        Supplementary References
        Sample Lecture Material
            Introduction Genetics and Natural Selection
            Simulating Natural Selection
        Code Fragments

    Ain't Nobody Here But Us Machines
        Example Exercises
            Pet Rocks and Things That Think