Syndetics cover image
Image from Syndetics

Exploratory Programming for the Arts and Humanities

By: Montfort, NickUSA : MIT Press : 2016Description: 25cm : 328 PagesContent type: text Media type: unmediated Carrier type: volume001: 42107ISBN: 9780262034203Subject(s): Education Studies | Programming | Graphic arts -- Data processing | Generative programming (Computer science)DDC classification: 702.85 MON
Holdings
Item type Current library Collection Call number Copy number Status Date due Barcode
Book MAIN LIBRARY Book PRINT 702.85 MON (Browse shelf(Opens below)) 1 Available 099386

Enhanced descriptions from Syndetics:

A book for anyone who wants to learn programming to explore and create, with exercises and projects to help the reader learn by doing.

This book introduces programming to readers with a background in the arts and humanities; there are no prerequisites, and no knowledge of computation is assumed. In it, Nick Montfort reveals programming to be not merely a technical exercise within given constraints but a tool for sketching, brainstorming, and inquiring about important topics. He emphasizes programming's exploratory potential--its facility to create new kinds of artworks and to probe data for new ideas.

The book is designed to be read alongside the computer, allowing readers to program while making their way through the chapters. It offers practical exercises in writing and modifying code, beginning on a small scale and increasing in substance. In some cases, a specification is given for a program, but the core activities are a series of "free projects," intentionally underspecified exercises that leave room for readers to determine their own direction and write different sorts of programs. Throughout the book, Montfort also considers how computation and programming are culturally situated--how programming relates to the methods and questions of the arts and humanities. The book uses Python and Processing, both of which are free software, as the primary programming languages.

Table of contents provided by Syndetics

  • Acknowledgments (p. xiii)
  • Introduction (p. 1)
  • Exploration vs. Exploitation (p. 3)
  • A Justification for Learning to Program? (p. 5)
  • Creative Computing and Programming as Inquiry (p. 6)
  • Programming Breakthroughs (p. 8)
  • Programming Languages Used (p. 9)
  • Free Software and No-Cost Software (p. 10)
  • How to Program and Explore (p. 13)
  • Programming as You Go (p. 15)
  • Essential Concepts (p. 16)
  • Creative Computing and Programming as Inquiry (p. 17)
  • Programming Is a Practice and Requires Practice (p. 17)
  • Installation and Setup (p. 19)
  • Text Editor (p. 19)
  • Python (p. 20)
  • CNU/Linux (p. 22)
  • Mac OS X and Windows (p. 22)
  • Checking the Installation (p. 23)
  • Python Libraries: Pillow/PIL (p. 23)
  • Python Libraries: TextBlob (p. 24)
  • Processing (p. 25)
  • The Command Line (p. 25)
  • 1 Modifying a Program (p. 27)
  • 1.1 Appropriating a Page (p. 28)
  • 1.2 Quick and Easy Modifications (p. 30)
  • Free Project: Modifying a Simple Text Machine (p. 32)
  • Share and Discuss Your Project (p. 32)
  • Essential Concepts (p. 33)
  • Programming Is Editing Text (p. 33)
  • Code and Data (p. 33)
  • 2 Calculating (p. 35)
  • 2.1 Encountering an Error (p. 38)
  • 2.2 Syntax and Semantics (p. 40)
  • 2.3 A Curious Counterexample of the Valid and Intentional (p. 42)
  • Essential Concepts (p. 44)
  • Arithmetic Expressions (p. 44)
  • Syntax, Syntax Errors, and Formal Validity (p. 44)
  • Valid Programs vs. Intentional Programs (p. 44)
  • 3 Double, Double (p. 45)
  • 3.1 Trying out the Function (p. 48)
  • 3.2 Describing the Function (p. 50)
  • Free Project: A Modified "Double, Double" (p. 54)
  • Essential Concepts (p. 55)
  • Interface (p. 55)
  • Patterns in Code (p. 55)
  • 4 Programming Fundamentals (p. 57)
  • 4.1 Abstracting Related Code: Functions (p. 58)
  • One Complexity: Scope (p. 62)
  • 4.2 Abstracting along Sequences: Iteration (p. 64)
  • 4.3 Abstracting across Types: Polymorphism (p. 68)
  • 4.4 Revisiting double () (p. 70)
  • 4.5 Another Fundamental: The Conditional (p. 72)
  • 4.6 Division and Types (p. 74)
  • Exercise: Positive Numbers (p. 77)
  • Free Project: Another Modified "Double, Double" (p. 77)
  • Essential Concepts (p. 77)
  • Functions Bundle Code (p. 77)
  • Arithmetic Expressions Can Be Made into Functions (p. 77)
  • Iteration (p. 78)
  • Types (p. 78)
  • The Conditional (p. 78)
  • 5 Standard Starting Points (p. 79)
  • 5.1 Hello World (p. 79)
  • Alternate Strings and String Theories 84 Exercise: Rewriting the Greeting (p. 86)
  • 5.2 Temperature Conversion (p. 86)
  • 5.3 Object-Oriented Temperature (p. 89)
  • 5.4 "Converting" a Number to Its Sign (p. 94)
  • Exercise: A Conversion Experience (p. 98)
  • Exercise: Categorical, Imperative (p. 98)
  • 5.5 Factorial (p. 99)
  • Exercise: Negative Factorial Fix (p. 102)
  • Exercise: Factorial Mash-up (p. 103)
  • 5.6 "Double, Double" Again (p. 103)
  • Free Project: Modify and Improve a Starter Program (p. 104)
  • Free Project: A Starter Program (p. 104)
  • Exercise: Critique My Starter Programs (p. 105)
  • Essential Concepts (p. 106)
  • Computing Is Cultural (p. 106)
  • Classes, Objects, Methods, Attributes (p. 106)
  • Categorizing with the Conditional (p. 106)
  • Iteration and Recursion (p. 106)
  • 6 Text I (p. 107)
  • 6.1 Strings, Their Characters, and Their Slices (p. 107)
  • Selecting a Slice 109 Detecting Double Letters (p. 112)
  • 6.2 Splitting Strings, Joining and Sorting Lists of Strings (p. 115)
  • Splitting a Text into Words (First Attempt) (p. 116)
  • Working across Strings: Joining, Sorting (p. 117)
  • Existence without joining (p. 120)
  • Exercise: Same Last Character (p. 121)
  • Exercise: Counting Spaces (p. 121)
  • Exercise: Counting Nonspaces (p. 121)
  • Exercise: Determining Initials (p. 122)
  • Exercise: Removing Vowels (p. 122)
  • Exercise: Tautonyms (p. 123)
  • Essential Concepts (p. 123)
  • Examining and Manipulating Strings (p. 123)
  • Iterating over Strings, Accepting Strings, Returning Strings (p. 123)
  • 7 Text II (p. 125)
  • 7.1 Verifying Palindromes by Reversing (p. 125)
  • 7.2 Verifying Palindromes with Iteration and Recursion (p. 128)
  • 7.3 Introducing Regular Expressions (p. 133)
  • A Simple Python Program with Regular Expressions (p. 138)
  • Counting Words Again, with Regular Expressions (p. 142)
  • 7.4 Verifying Palindromes-This Time, with Feeling (p. 144)
  • Exercise: Match within Text (p. 145)
  • Free Project: A Poetry vs. Prose Shootout (p. 145)
  • Essential Concepts (p. 145)
  • Solving Problems with Recursion and Iteration (p. 145)
  • Regular Expressions (p. 145)
  • 8 Image I (p. 147)
  • 8.1 A New Data Type: Tuples (p. 148)
  • 8.2 Generating Very Simple Images (p. 150)
  • 8.3 Pixel-by-Pixel Image Manipulation (p. 155)
  • Generalizing to Images of Any Size (p. 158)
  • Loading an Existing Image (p. 160)
  • Lightening and Darkening an Image (p. 161)
  • Increasing the Contrast of an Image (p. 164)
  • 8.4 Flipping an Image (p. 165)
  • Exercise: Flipping along the Other Axis (p. 167)
  • Free Project: Cell-by-Cell Generator (p. 167)
  • Essential Concepts (p. 168)
  • Using a Library (p. 168)
  • Image Basics (p. 168)
  • Two-Dimensional, Nested Iteration (p. 168)
  • Swapping Values (p. 168)
  • 9 Image II (p. 169)
  • 9.1 Blurring an Image (p. 169)
  • Visiting Every Pixel (p. 177)
  • 9.2 Manipulating Many Images (p. 178)
  • Inverting Images (p. 179)
  • Exercise: Old Skool Filter (p. 180)
  • Practical Python and Imagemagick Manipulations (p. 181)
  • Free Project: Image Manipulation as You Like It (p. 184)
  • Essential Concepts (p. 184)
  • Checking the Neighborhood (p. 184)
  • Generalizing to Many Files in a Directory (p. 184)
  • 10 Text III (p. 185)
  • 10.1 Words and Sentences (p. 185)
  • Adjective Counting (with Part-of-Speech Tagging) (p. 188)
  • Sentence Counting (p. 190)
  • Comparing the Number of Adjectives (p. 190)
  • 10.2 Text Classification: Verse or Prose? (p. 192)
  • 10.3 Text Classification: Sentiment Analysis (p. 196)
  • Training on Positive Words and Negative Words (p. 197)
  • A Thought Experiment (p. 200)
  • Using the Included Sentiment System (p. 201)
  • Approaches to Classification (p. 204)
  • 10.4 Word Lists and Beyond (p. 205)
  • Accessing WordNet in a Program (p. 208)
  • Free Project: Creative Conflation (p. 212)
  • Free Project: Your Very Own Classifier (p. 213)
  • Essential Concepts (p. 213)
  • Words, Sentences, and Parts of Speech (p. 213)
  • Classification (p. 213)
  • Lexical Resources (p. 213)
  • 11 Statistics and Visualization (p. 215)
  • 11.1 The Mean in Processing (p. 216)
  • 11.2 A First Visualization in Processing (p. 220)
  • 11.3 Statistics, Descriptive and Inferential (p. 226)
  • 11.4 The Centers and Spread of a Distribution (p. 227)
  • Exercise: Median (p. 228)
  • Exercise: Mode (p. 228)
  • Exercise: Variance and Standard Deviation (p. 229)
  • The Meaning of the Mean (p. 230)
  • 11.5 Gathering and Preparing Data (p. 231)
  • 11.6 Probability and Generating Numbers (p. 232)
  • Free Project: Reweighting Your Text Generator (p. 235)
  • 11.7 Correlations and Causality (p. 235)
  • 11.8 More with Statistics, Visualization, and Processing (p. 238)
  • Free Project: An End-to-End Statistical Exploration (p. 239)
  • Essential Concepts (p. 240)
  • Programming Fundamentals Span Languages (p. 240)
  • Different Averages Have Different Meanings (p. 240)
  • Probability and Statistics: Two Sides of the Same Coin (p. 240)
  • Principled Visualization (p. 240)
  • 12 Animation (p. 241)
  • 12.1 Drawing in Frames (p. 241)
  • Exercise: The Bounce Test (p. 244)
  • 12.2 Changing Intensity (p. 245)
  • Exercise: Multiple Rectangles with Color (p. 246)
  • Exercise: Fifty Rectangles (p. 246)
  • 12.3 Exploring Animation Further (p. 247)
  • Free Project: A Novel Clock (p. 247)
  • Essential Concepts (p. 248)
  • Functions as Part of a Framework (p. 248)
  • Drawing in Time (p. 248)
  • 13 Sound (p. 249)
  • 13.1 Bytebeat from Zero (p. 250)
  • Sidebar: The Math Joke (p. 251)
  • 13.2 Exploring Bytebeat, Bit by Bit (p. 252)
  • Free Project: Two Bytebeat Songs (p. 255)
  • 13.3 Further Exploration of Sound (p. 255)
  • Essential Concepts (p. 255)
  • Bitwise Operations (p. 255)
  • Sound as a Stream of Bytes (p. 256)
  • 14 Interaction (p. 257)
  • 14.1 Typed Input in Python (p. 257)
  • Free Project: Word to You (p. 258)
  • 14.2 Key Presses in Processing (p. 258)
  • Free Project: Create a Virtual, Navigable Space (p. 260)
  • Essential Concepts (p. 261)
  • Accepting Input (p. 261)
  • Controlling a Window (p. 261)
  • 15 Onward (p. 263)
  • Appendix A Why Program? (p. 267)
  • How People Benefit from Learning to Program (p. 267)
  • Cognitively: Programming Helps Us Think (p. 269)
  • Modeling Humanistic and Artistic Processes Is a Way of Thinking (p. 270)
  • Programming Could Improve Our Thinking Generally (p. 272)
  • Culturally: Programming Gives Insight into Cultural Systems (p. 273)
  • Programming Allows Better Analysis of Cultural Systems (p. 273)
  • Programming Enables the Development of Cultural Systems (p. 274)
  • Socially: Computation Can Help to Build a Better World (p. 275)
  • Programming Is Creative and Fun (p. 277)
  • Appendix B Contexts for Learning (p. 279)
  • Semester-Long (Fourteen-Week) Course (p. 280)
  • Quarter-Long (Ten-Week) Course (p. 280)
  • One-Day Workshop (p. 281)
  • Individual and Informal Learning (p. 281)
  • A Final Suggestion for Everyone (p. 281)
  • Glossary (p. 283)
  • References (p. 289)
  • Index (p. 293)

Reviews provided by Syndetics

CHOICE Review

Montfort (digital media, MIT) provides a wonderful resource for those who are engaged in scholarly inquiry and want to extend the reach of computing. The book combines sound pedagogy with clear exposition to move readers from possible uncertainty about using technology to a solid grounding in both writing code and using open source resources productively. The book is written so that readers will actively work with code,and stimulates thought with additional "free projects" to encourage deeper understanding of the material. The presentation is carefully structured to minimize disruptive material, while including topics that are critical but easy to leave out as "too advanced for the beginner." For example, rather than gloss over cryptic error messages, the text induces the reader to encounter and glean useful information from them. Python, Processing, and JavaScript are the programming languages introduced. Readers will use open source libraries to do lexical analyses of literary texts, Photoshop-type manipulations of images, creative sound generation, and other exercises. The book will make an excellent text for a general education course, and is equally serviceable as a self-instructional guide for any individual interested in learning more. Summing Up: Highly recommended. All readers. --Christopher Vickery, Queens College of CUNY

There are no comments on this title.

to post a comment.

Powered by Koha