NewtFire logo: a mosaic rendering of a firebelly newt
newtFire {dh|ds}
Maintained by: Elisa E. Beshero-Bondar (eeb4 at Creative Commons License Read the course description and syllabus in TEI XML. Last modified: . Powered by firebellies.

Spring 2020: Classes meet M W F 2 - 2:50 PM in 136 McKenna Hall

Jump Down to the Schedule

All the Tools You Need As We Begin:

Download and install the following software on your own personal computer(s) on or before the first day of class. These software tools are available in our campus computing labs, too.

  1. All students: <oXygen/> XML Editor. The University of Pittsburgh has purchased a site license for this software, which is installed in the Pitt computer labs on multiple campuses, and it’s in use in courses here at Greensburg and at Oakland. The license also permits students enrolled in the course to install the software on their home computers (for course-related use only). When installing this on your own computers, you will need the license key, which we have posted on our course Announcements section of Canvas.
  2. All students require a good means of secure file transfer (SFTP) for homework assignments and projects (also available in the campus computer labs). There are several good options available. We recommend you download and install on your own computers one (or more) of the following, depending on your platform: (Feel free to experiment with these and others!)
    • Windows users: one of the following FTP clients—the functionality is similar:
      • FileZilla (This is our favorite client because it behaves the same way across platforms.)
      • WinSCP (This is one we used for a long time, since the 1990s, but we now use SSH and Filezilla more frequently.)
      • SSH Secure Shell Client
    • Mac users:
    • Linux users: You probably don’t need to install anything, but look at how your system handles secure file transfer (SFTP). (FileZilla or other clients designed for Linux environments.)
  3. Read the Course Description and this Syllabus page to see how this course works on a day-to-day basis.
  4. This course fulfills general education requirements in Q2, NS, SS, and HM, and it fulfills a core requirement for the Digital Studies Certificate at Pitt-Greensburg. Think about where this course might fit in your academic career, and how you might apply the skills you learn here.
  5. No coding experience? Don’t worry! You are in very good company. We don’t expect any of you to have written a line of computer code before now. Past students in this course who never saw anything like markup or XML code have designed projects (like these) and even spoken about them at an undergraduate conference! You’ll help continue some of these projects we’ve started, and you’ll learn to build and create digital tools for yourself with skills we hope you will keep developing.
Class Web Resources Explanatory Guides and Exercises: Complete List
Week 1 In Class Due Next Time

M 1-06

Welcome! Intro to the course, and Intro to XML and working in <oXygen/>: Write your first XML. Mindful File Management (how to name, store, share, and submit files in this course). Setting up accounts for web server and for GitHub.

Write your first XML with recipes:

W 1-08

Getting started with GitHub and our DHClass-Hub. Discussion of the XML recipe homework: XML Comments and Well-formedness, and how to work with <oXygen/>. Introduce student projects from this class.

F 1-10

Discussion of homework, and XML: Well-formedness vs. Validity. XML projects in digital humanities.

Hands-on GitHub: Working with our DHClass-Hub: Open and close Issues, write markdown in Issues "help tickets" and discussions, access our class examples of code. Command line: pull and push files in Troubleshooting directory.

Week 2 In Class Due Next Time

M 1-13

Overlapping hierarchies. Document Analysis and Coding: Group Exercise with Ozymandias

The concept of “UX.” or User Experience, and discussion of projects.

GitHub Practice (starting today for seven days): Make sure your personal repo is properly set up and cloned to your local computer. Using your Git Bash Shell, practice some basic Git commands to build a habit: Always pull before you push! Then push one file per day either to your personal repo or the DHClass-Hub. On alternating days, push to the other repo (if you pushed to your personal repo today, tomorrow you will push to the DHClass-Hub). Try cloning repos on multiple computers that you may be using through the semester (including computer lab machines on campus). Pull up our quick guide Using Git Through Command Line for a ready reference of commands and look up details in our Guide to Git Shell.

UX Discussion on DHClass-Hub Choose one of the following digital archives to explore, find the appropriate discussion thread on the DHClass-Hub, and write a post discussing: 1) how visual aids are used to convey information on the site, and how well (or badly) do these work? What seems unclear to you, and/or what seems to work really well? 2) how effective is the (“UX”) in navigating at least one or two significant areas of the site? (Respond to each other as the thread develops.)

Read Intro to Relax NG.

W 1-15

Schema Languages: Writing the Rules. Writing Relax NG

  • Relax NG exercise 1: Write a Relax NG schema for one of the XML documents you created for an earlier assignment (XML exercise 2 or 3), and upload your schema and your XML file to Canvas.
  • Review XML syntax and read and work with the Intro to Relax NG tutorial as you work on Relax NG Ex 1.
  • Continue GitHub Practice (see M 1-14 assignment above).

F 1-17

Add/Drop period ends.

Relax NG: mixed content, data types.

Quick tour of course projects with strong research questions developed by coding students at two Pitt campuses in the past few years.

Relax NG exercise 2: This time, choose a small text (maybe one of the letters from the first assignment that you did NOT mark up before, or anything you like). Perform document analysis, write a schema, and mark up the text according to the schema. Work with attributes, datatypes, and mixed content in your schema.

DHClass-Hub Discussion of UX and Project Research Questions for Pitt-Greensburg and Pitt-Oakland student projects

Week 3 In Class Due Next Time

M 1-20

Dr. Martin Luther King’s birthday observance: No classes.

Continue (and conclude) GitHub Practice (see M 1-14 assignment above).

W 1-22

Test 1 (in class: 15-20 minutes): XML markup.

Course projects, further discussion. Relax-NG issues.

Collect info for personal and project webspace on newtFire.

  • Relax NG exercise 3: Choose a small text of a different type or genre than last time, perform document analysis, write a schema, and mark up the text according to the schema. Work with attributes, datatypes, and mixed content in your schema.
  • DHClass-Hub Post and Discussion on Project Proposals:
    • Beginning from today through M 1-27: Post proposal ideas for team projects to work on this semester. Each student should post an idea for the class to consider: a project involving XML markup to be managed within a team of 2-4 students to investigate something we could study and visualize from our markup more effectively with computers than with human reading and description alone. All projects must involve a team of at least two persons, but this first exploratory proposal is an individual assignment.
    • Each student must respond to at least one of the proposed ideas from another student and indicate suggestions or further ideas. You may respond to more than one if you like, and indicate which proposals interest you to work on.
    • Proposal discussions will run until class time on M 1/28 when we will form project teams.
  • Assignment for Dr. B: Set up and test student web space on NewtFire now.

F 1-24

Review Relax NG issues.

Coding for analysis: discussion of XML modeling for research questions. Network Analysis and Mapping with XML: Discussion of XML projects designed to explore networks: Tarantino, Banksy, Akira, Hamilton, Thalaba.

  • Post a project proposal on DHClass-Hub if you have not done so already. Respond to another student's project proposal.
  • Bad Graphs Reading and Discussion: Read A short tour of bad graphs and join our GitHub discussion exercise, which involves your posting examples of biased or otherwise problematic graphs you find on the web.
Week 4 In Class Due Next Time

M 1-27

Form project teams.

Review bad graphs discussion. Ambitious graphs: See A Tour Through the Visualization Zoo.

Review Relax-NG: common issues in homeworks.

  • Project Checkpoint 1: New project team leaders: initiate team GitHub repos and invite team members and instructors to join. Push content to your repo to initiate the project, such as a readme markdown file. Post and respond to the first issue(s) on your team repo, to (at least) schedule regular meeting times. Team members: respond to issues, help find a time to meet, and clone team repos.
  • Review our comments on your Relax NG homeworks and practice writing Relax NG in preparation for the Relax NG test.

W 1-29

Project discussion / initiation time in class. Review of Relax NG issues, initiation of first take-home test (Relax NG).

F 1-31

Readme and other Markdown Files for your project GitHub

Introducing up-conversion with Regular Expressions:

Week 5 In Class Due Next Time

M 2-03

Regular Expressions: thinking algorithmically. Greedy Matching.

W 2-05

Regular Expressions: thinking algorithmically. Selecting for what’s not there. Simplifying overcomplicated expressions.

XML and the Web: Introduce HTML and CSS. SFTP into the Apache Server for newtFire. File directories and their association with web URLs.

  • Project Checkpoint 2: Establish a clear file directory structure for GitHub, ensure all project team members are working consistently. Establish a project schema and associate that schema with project XML files in the repo. All team members work with and correct XML markup applying the project schema.
  • Regex Exercise 3: Pacific Voyage Narrative
  • Read our Introduction to XHTML (and HTML).

F 2-07

Building on the Web: HTML and CSS. Introduction to your web space on NewtFire and the index.html page

Hands-on: SFTP to NewtFire, association with GitHub.

Mindful file directory management: File directories and their association with web URLs.

Week 6 In Class Due Next Time

M 2-10


  • Web browsers and display variations
  • CSS Box Model
  • Controlling page layouts: Flexboxes tutorial, with simple examples.
  • Consult Learn CSS Layout, Flexbox tutorial, and w3 Schools CSS Reference as you code. (Also, check out Paletton (or hunt for other color scheme generators on the web) to help think about choosing a balanced color scheme for your website. Experiment with writing CSS to control font, layout, color, backgrounds.
  • HTML/CSS Exercise 2 (As with HTML Exercise 1, submit this homework by using FTP to post to our newtFire web server.)

W 2-12

HTML and CSS continued: Positioning and controlling layouts with HTML div, section, span, and CSS flex. Troubleshooting Server Side Includes

Review Regex issues in preparation for take-home test.

  • Project Checkpoint 3:
    • Some team members work on developing page(s) for the project website, creating navigation menu (using a SSI), and working with section, div, and span elements. Try using CSS flex to control your horizontal layout. Work out a file directory structure for the GitHub repo to separate project website files from XML markup.
    • Others concentrate on completing markup, up-converting files to project XML with regex (as needed), and refining the project schema.

F 2-14

Project meeting time in class; completion of Project Checkpoint 3.

Review and take stock of technologies learned so far. Preview of what's next: XPath. Initiate Regular Expressions Take-Home Exam

  • Test 3 (take-home): Regular Expressions
  • Preview the Introduction to XPath in preparation for the next unit.
Week 7 In Class Due Next Time

M 2-17

HTML5: Semantic web elements for accessible websites.

Introducing XPath and the XPath window in <oXygen/>: functions, axes, path steps /, and predicate filters [ ]. Hands-on: Understand XML as nodes and learn how XPath works, exploring Hamlet.

  • First, carefully read our Introduction to XPath: Follow the XPath! As you read, try experimenting with the XPath expressions on our page, by downloading the explainXPath.html file, opening it in oXygen, and experimenting in the XPath window with some of our expressions. Then, move on to XPath Exercise 1.
  • XPath Exercise 1

W 2-19

Using XPath axes to climb trees: child:: and descendant::, parent:: and ancestor::, preceding-sibling:: and following-sibling::, preceding:: and following::. The self:: axis, and when we need to refer to it in predicate expressions: [./node]. (Grouping) and [Position()].

F 2-21

XPath Functions: some common functions we use and how to write them: count(), not(), distinct-values().

Preview functions with regular expressions in XPath.

Week 8 In Class Due Next Time

M 2-24

Surgical precision with XPath on text strings: regular expressions in XPath functions

XPath Exercise 4

W 2-26

Introducing XQuery and the eXist-db on newtFire

Writing XPath in eXist-db

XPath String functions. XPath for the text() node to grab strings: string-join(), contains(string 1, string 2).

Hands on: learning to write XQuery: collections and documents, queries and FLWORs

F 2-28

  • XQuery: Writing FLWOR statements and outputting HTML lists and tables
  • Outputting files and saving them to the eXist-db database for previewing
  • XQuery online and offline: in eXist and in <oXygen/>
Week 9 In Class Due Next Time

M 3-02

  • Review and troubleshoot XQuery Ex 2: FLWOR for-loops and outputs.
  • Saving and Accessing files in the Newtfire eXist-db: set up individual and team project directories.
  • Introduce Project Checkpoint 4: Markup Analysis Sprint
  • XQuery Exercise 3: Upload one or more project files to the eXist-db database. Write XQuery to output HTML useful for your project, or work with the banksy directory. Save your query and, eventually, when your output is good, save the output to view from your personal directory following our model in 2019_ClassExamples. You must use a for-loop, and produce an HTML file containing a list and/or table of information.
  • Prepare for Network Analysis: Install Cytoscape on your computer, together with the appropriate Java package. Note: This is also installed in the campus computer labs, so you may work with it there, too or instead of on your own computer. If you have trouble with the installation, locate Cytoscape in the campus computer labs. Begin familiarizing yourself with the Cytoscape interface, working with Cytoscape session files (with .cys extension) posted in Class Examples, Network-Workshop folder in our DHClass-Hub. Try importing one of my Cytoscape session files (.cys) following our tutorial instructions.
  • Read An Introduction to Network Analysis and Cytoscape for XML Coders

W 3-04

XQuery from eXist to Web: Extracting from the XML database to publish in the Web Project

Network Analysis: Network graphs and structured data

XQuery to Network Analysis: generating plain text data (CSV or TSV) for Cytoscape

What we do in Cytoscape: Processing and Filtering; Running the Network Analyzer. Common network statistics: degree centrality, node centrality, edge betweenness, shortest paths

XQuery to Network Analysis: Exercise, Part 1

F 3-06

Withdrawal deadline.
  • XQuery to Network Analysis: Check for problems: TSV data extracted from XML.
  • Importing to Cytoscape and running the Network Analyzer.
  • XQuery to Network Analysis: Exercise, Part 2
  • Project Checkpoint 4: Analysis Sprint: Complete as much of your project markup as you can, load good files into team project space in eXist-db, and experiment with extracting data, looking for patterns, visualizing networks (as applicable).
Week 10 In Class Due Next Time

Sat. 3-07 - Sat. 03-14

Spring Break: No classes. Project Midterm Sprint
Week 11 In Class Due Next Time

M 3-16

Zoom meeting: Regrouping DH class in time of Covid-19 pandemic. Discussion: XQuery to Network Analysis: Survey issues and outputs.

Preview Schematron: Cleaning up project code with help from XPath

W 3-18

Zoom class: XQuery to Network Analysis: Survey issues and outputs. Altering and styling network graphs.

F 3-20

Zoom class: writing an XPath-based Schema language: Schematron, why you need it now, and how we use it with Relax-NG

  • Consult our Guide to Schema Writing with Schematron as you complete Schematron Exercise 1.
  • Schematron Exercise 2: Write Schematron to refine and correct messy or problematic code for your project team. Submit two things: 1) your Schematron file, and 2) a sample of project XML code to show how you are capturing errors.
  • Read and work through Fiona Carter’s Making a Basic Map with QGIS: In the process, download and install QGIS and complete the tutorial in preparation for our next class.
Week 12 In Class Due Next Time

M 3-23

Zoom class: Digital Mapping: Writing XQuery to extract place data for mapping in QGIS

QGIS Exercise 1: XQuery to TSV for import to QGIS, and creating a map from project data.

W 3-25

Zoom class: Working in QGIS: Hands-on Orientation

QGIS Exercise 2: Map your data using QGIS

F 3-27

Zoom class: Web-mapping from QGIS working with Leaflet

QGIS Exercise 3: Prepare a web map with Leaflet and post on your website.

Week 13 In Class Due Next Time

M 3-30

Zoom class: XML that makes graphics: SVG (Scalable Vector Graphics). Drawing elements, and screen grid coordinates.

Introductory Slideshow. and w3Schools SVG Tutorial.

W 4-01

Zoom class: XQuery to SVG: Pulling data for visualizing.

Plotting a timeline from project data: Part 1: Exploring the project data and doing “date arithmetic”.

  • Before next class: Read and review what we discussed in class today on our tutorial for creating timeline infographic: global variables and user-defined functions. Look at how we're setting up XQuery to produce SVG.
  • We will plot most of this SVG together in the Zoom class on Friday. You will finish it and prepare the data for visualizing in your own way for the homework assignment due after that class: (Friday 4/3 by 11:59pm).

F 4-03

Zoom class: Work together to plot an SVG timeline from our date-arithmetic work on the Rocket Launches project.

Making line and bar graphs, plotting axes. How to plot stacked bars.

SVG Exercise: Project XQuery to SVG: Plot a clear, simple, legible, labelled graph.
Week 14 In Class Due Next Time

M 4-06

Zoom class: Example: Putting the pieces together: SVG and HTML. Introducing JavaScript, the DOM, JavaScript event listeners and functions.

JavaScript Exercise 1

W 4-08

  • Zoom class: Working with global variables and for loops in JavaScript. JavaScript with CSS over SVG
  • Project Visualization and Mapping needs: discussion
JavaScript Exercise 2

F 4-10

Zoom class: JavaScript? or More SVG/Visualization

Project Development, prepare presentation material.

Week 15 In Class Due Next Time

M 4-13

Zoom class: Projects and Portfolios: Guidelines for Submission. Creative Commons Licenses

Web development for Project Checkpoint 5

W 4-15

Zoom class: prep for Project Checkpoint 5: Project presentations

F 4-17

Zoom class: Last day of classes. Project presentations .

Thurs. 4/23 by 11:59 PM

Projects due. Submit projects with a post to the instructors from your project GitHub repo.