Cunningham’s Fieldstone Yard
H. Conrad Cunningham
13 July 2022
Browser Advisory: The HTML version of this textbook requires a browser that supports the display of MathML. A good choice as of June 2022 is a recent version of Firefox from Mozilla.
A few years ago I read software engineering consultant and writer Gerald Weinberg’s [12,13,15] book Weinberg on Writing: The Fieldstone Method [14]. Weinberg describes his method for writing with the metaphor of builders constructing a stone wall. If the builders have previously collected interesting stones that they discovered lying about in the fields and organized them systematically into piles, then the builder can select from these “fieldstones” and readily fit them together quickly into the new wall.
Weinberg suggests that writers can approach writing in a similar way. In his approach [14], they collect various interesting items discovered or created over time—ideas, insights, quotes, articles, etc.—including their previously and perhaps partially written pieces—and organize these “fieldstones” into piles. Then, when writing new, larger projects, writers can draw on their piles of “fieldstones”, chose appropriate items, adapt them as needed for the new purposes, add missing pieces, apply the needed glue, and “build” the new project.
Weinberg also suggests that writers should have multiple writing projects going at a time. When unable to make progress on one project, they can just shift to another, returning to the first project later.
I was a faculty member in Computer and Information Science at the University of Mississippi from 1989 until I retired in 2019. I created, used, adapted, and reused lots of code examples, assignments, handouts, and lecture notes during that time. Fortunately, I kept much of this work and had put much in digital form. Unfortunately, I did not always collect extensive metadata—on the sources of ideas and the precise intentions and context of the codes examples. And, I did not organize the various pieces of work as well as I wish I had done.
In creating this collection of documents and examples in 2022, I am attempting to “mine” this body of work and organize it—some as partial books, some as loose collections. Unlike physical fieldstones, I can put the same stone in more than one pile. A significant aspect of this effort is the construction of a unified set of bibliographic references and modification of the the collected documents to use this set of references.
This is a work in progress—probably will be such forever. However, I hope to construct larger pieces of work that may be made useful to others.
In-progress Haskell-based textbook Exploring Languages with Interpreters and Functional Programming (ELIFP) [8]
Pile Notes on Domain-Specific Languages [7]
Pile Notes on Functional Programming in Scala [10]
In-progress Haskell-based textbook Exploring Languages with Interpreters and Functional Programming (ELIFP) [8] — chapters 2 and 4-30 for course on functional programming using Haskell
Legacy 2014 textbook Notes on Functional Programming with Haskell [5] — mostly merged into in-progress textbook ELIFP
Single document: as PDF
Pile Notes on Abstraction and Modularity
Pile Multiparadigm Programming with Python [9]
Pile Scala
TODO
TODO
TODO
Pile Notes on Software Patterns
Pile Notes on Software Families and Frameworks
TODO
TODO
TODO
TODO
Legacy 2006 textbook A Programmer’s Introduction to Predicate Logic [3]
Single document: as PDF
Legacy 2006 textbook Notes on Program Semantics and Derivation [4]
Single document: as PDF
Legacy 1994 notes Feijen’s Table of Cubes Problem [2]
Single document: as PDF
Slides: as PDF
Pile Notes on Models of Computation — notes to accompany lectures on the 5th edition of the Linz textbook [11]
TODO
I retired from the full-time faculty in May 2019. As one of my post-retirement projects, I am continuing work on possible textbooks based on the course materials I had developed during my three decades as a faculty member. In January 2022, I began refining the existing content, integrating separately developed materials together, reformatting the documents, constructing a unified bibliography (e.g., using citeproc), and improving my build workflow and use of Pandoc. I adapted this index page from a portion of my Spring 2019 CSci 555 course notes.
I maintain this chapter as text in Pandoc’s dialect of Markdown using embedded LaTeX markup for the mathematical formulas and then translate the document to HTML, PDF, and other forms as needed.