7AAVMTLS Tools and Resources
20 credit module, runs in the Spring semester.
The objective of the module is to help the student develop a set of highly adaptable skills in the manipulation and transformation of data, including the ability to write programs in Python.
The module has three motivations. The first comes from the common experience of researchers, who from time to time need automatic means of making highly repetitive but essentially simple changes to masses of data. These changes can sometimes be made by such means as clever use of macros in a word-processing program, but at other times they require a specialized program; very few researchers can afford to commission such work. The second motivation is the need in real-life projects to supplement the capabilities of existing software by adding missing functions to or connections between them. The third is the intellectual training that the rigorously stepwise process of designing, writing and testing a program gives. This module is in part based on the conviction that a critical understanding of the computer and its application to humanities data depends on such training.
The module is taught entirely in a series of practical sessions, and the focus is on developing practical fluency in the application of Python. Students will make programming tools for their own use as well as learn how to get the most out of existing software. Making these tools will also give them the ability clearly to specify the requirements of software to professional programmers. Students will also learn about the range of supporting utilities routinely used by programmers in their work, and will study systematic techniques for program testing and debugging.
Since textual data tends to be inherently less complex to manipulate than visual and audio data, the former will be used exclusively. Skills developed in this course will, however, be applicable to other varieties of data as well.
The organization of the module is designed to introduce one by one the many different skills required in programming; it does not follow a straightforward development of the subject from basic principles.