Exploratory Programming for the Arts and Humanities by Nick Montfort.
From the webpage:
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.
Full Disclosure: I haven’t seen a copy of Exploratory Programming.
I am reluctant to part with $40.00 US for either print or an electronic version where the major heads in the table of contents read as follows:
1 Modifying a Program
3 Double, Double
4 Programming Fundamentals
5 Standard Starting Points
6 Text I
7 Text II
8 Image I
9 Image II
10 Text III
11 Statistics and Visualization
The table of contents shows more than one hundred pages out of two hundred and sixty-three are spend on introduction to computer programming topics.
Text, which has a healthy section on string operations, merits a mere seventy pages. The other one hundred pages is split between visualization, sound, animation, etc.
Compare that table of contents with this one*:
Chapter One – Modular Programming: An Approach
Chapter Two – Data Entry and Text Verification
Chapter Three – Index and Concordance
Chapter Four – Text Criticism
Chapter Five – Improved Searching Techniques
Chapter Six – Morphological Analysis
Which table of contents promises to be more useful for exploration?
Personal computers are vastly more powerful today than when the second table of contents was penned.
Yet, students start off as though they are going to write their own tools from scratch. Unlikely and certainly not the best use of their time.
In depth coverage of the NLTK Toolkit historical or contemporary texts, in depth, would teach them a useful tool. A tool they could apply to other material.
To cover machine learning, consider Weka. A tool students can learn in class and then apply in new and different situations.
There are tools for image and sound analysis but the important term is tool.
Just as we don’t teach students to make their own paper, we should focus on enabling them to reap the riches that modern software tools offer.
Or to put it another way, let’s stop repeating the past and move forward.
* Oh, the second table of contents? Computer Programs for Literary Analysis, John R. Abercrombie, Philadelphia : Univ. of Philadelphia Press, ©1984. Yes, 1984.