Learning to Teach - breakout Morning Session Speakers

Original documentation by the conference participants 

Nick Montfort (MIT)

Exploratory Programming for the Arts and Humanities

What is Programming?
Tyranny of wordclouds
Esoterism and abstraction

Alan Kay, Pre-secondary Smalltalk instruction and collaboration

1. Characterize exploratory programming (existing style in use by others)
  • Exploration of landscape vs. exploitation of existing knowledge base
  • Both exploration/exploitation needed; beginning/intermediate students often only learn the latter
2. Alas
3. Relationship to creative computing
  • Journal pub 1974-75 (?)
  • Alan Kay (smalltalk), Seymour Papert (Logo), J Kemeney & T Kurtz (BASIC)
  • BASIC at Dartmouth as broad curricular effort across programs
4. Relationship to programming as inquiry
  • D Englebart, 1962: computers as augmentation of human intellect
  • Improved us of computing leads to better inquiry - e.g. distant reading and large scale visualizations in DH projects
  • Educational work often involves using small, manageable datasets
  • Interesting to martial CAD as an example of augmentation rather than drafting tool
  • In what ways are CC & P@I the same thing?
  • C Hartman & generated poetry
  • Critical Code Studies
  • Something missing in here about political content of the rhetoric of self-empowerment

5. How to teach exploratory programming
  • Teach in more than one language, to minimize understanding of syntax expertise as skill/knowledge acquisition (cf teaching blocks/lambdas in Python for use in Ruby)
  • E.g. type systems or iteration may have different syntax, but you pick up their underlying concepts regardless
  • Work across media - demonstrate applicability of techniques to both image, audio, animation, text
  • Teach both analysis ('inquiry') and 'creative' work
  • At the very beginning:
  • Start with simple but extensible program modification
  • JS strengths (communication/demo-ability) weaknesses (janky language)
  • Importance of both data and process
  • Code/data/parameter distinction
  • Reasoning about code
  • Next step - truly essential fundamentals
  • Iteration
  • Functions/methods
  • Type