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.

Autumn 2019: Classes meet M W F 3 - 3:50 PM, 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/>. 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 Courseweb.
  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, 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 08-26

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. Bread recipe

W 08-28

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 08-30

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 09-02

Labor Day Holiday: No classes.

W 09-04

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, and write a post on the DHClass-Hub addressing 1) something interesting the site is inviting us to explore about centuries-old texts, and 2) the effectiveness of the user experience (“UX”).

Read Intro to Relax NG.

F 09-06

Hands-on introduction to schemas with Relax NG: How to write the rules for an XML project

  • 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 it and your XML file to Courseweb. Be sure to consult Intro to Relax NG as you work.
  • 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 W 9-04 assignment above).
Week 3 In Class Due Next Time

M 09-09

Relax NG: mixed content, data types.

Review and discussion of XML rules, Relax NG and modeling XML

  • Relax NG exercise 2: This time, choose a small text (maybe one of the letters from the first week's 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. Be sure to consult Intro to Relax NG as you work.
  • Review XML syntax for test on Wednesday.
  • Install FileZilla (or other SFTP client) on your own computer if you have not done so already.
  • Assignment for Dr. B: Set up and test student web space on NewtFire now.

W 09-11

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

Course projects: Introduction, discussion and tour: digital projects with strong research questions by Pitt students in recent years:

  • 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 9-16: 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 W 9/18 when we will form project teams.
  • Install FileZilla (or other SFTP client) if you have not done so already: we'll use it next class! Follow instructions posted on Courseweb for setting up SSH keys to access your personal webspace on Newtfire.
  • Read our Introduction to HTML in preparation for next class.

F 09-13

Building on the Web: Introducing HTML and CSS: Make a simple index.html page. Make a simple CSS page. CSS resemblance and difference from Relax NG (those curly braces)

What is "index.html" to a web server? Website addresses and file directories on a remote web server

Hands-on: Work with FileZilla (or other SFTP client) to connect to the Apache Server for newtFire. SSH keys.

File directories and their association with web URLs.

How to customize SFTP (Filezilla) to work with your GitHub repo.

  • Review our comments on Relax NG homework and make revisions as needed.
  • Consult our Introduction to HTML, and our Introduction to Cascading Stylesheets (CSS) as you work on the homework exercise: HTML/CSS Exercise 1. NOTE: Do not submit this assignment on Courseweb. Instead, submit this homework by using SFTP to post to our newtFire web server.
  • DHClass-Hub Project Proposal Posting and Discussion:
    • Post your project proposal if you have not done so already, in the designated DHClass-Hub Issue.
    • Through next W 9/18 before 3pm: Each of you must respond on DHClass-Hub to at least two of the proposed ideas from another student and indicate suggestions or further ideas. You may respond to more than two if you wish. Indicate which project ideas you would like to work on as a team member.
    • Proposal discussions will run through next week, until class time on W 9/18, when we will meet to form project teams.
Week 4 In Class Due Next Time

M 09-16


  • Mindful file management: mirroring directory structures on GitHub and the web server
  • Web browsers and display variations
  • CSS Box Model
  • Controlling page layouts: Flexboxes tutorial, with simple examples.
  • Write and respond to project proposals on DHClass-Hub. Project teams form in our next class!
  • 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, and do NOT use standard filename conventions, but rather simple filenames for your own website.)

W 09-18

Form project teams!

Review Relax NG issues in preparation for test

HTML and CSS continued: Image editing, more on flexboxes and page layouts.

  • Project checkpoint 1:
    • Launch the project GitHub repo and post an issue.
    • Post in the Issues board of your new Project Github your available meeting times to help determine a regular meeting time for your group.
  • Revise Relax-NG exercise(s) if we have asked you to do that.

F 09-20

Project customizations and boilerplate with Server Side Includes

  • Relax NG questions / review
  • How to customize SFTP (Filezilla) to work with your GitHub repo (if we didn’t cover this before).
  • Decide on project website directory names and URLs.
  • Server Side Includes for boilerplate content: Examples:
  • Hands on: Add SSI’s to your personal website and test to make sure they are working on the server.
Work on your HTML and website development over the weekend if you did not finish the HTML exercises.
Week 5 In Class Due Next Time

M 09-23

Review of tech so far. File dependencies (XML and Relax NG; HTML and CSS). Sharing over the web (GitHub, SFTP with SSH keys)

Project web directories on NewtFire

Document Analysis of Manuscripts: Hands-on Workshop

Project schemas and community schemas: controlled markup vocabularies. Introduction to the The Text Encoding Initiative (TEI)Text Encoding Initiative (TEI)

W 09-25

Review Relax NG for take-home test.

Document Analysis and TEI Exercise continued: review code developed so far.

Data and metadata in the TEI document model: exploring the TEI Header

  • Test 2 (take-home): Relax NG
  • Resolve SSH key and SFTP issues if you are having issues with accessing NewtFire.

F 09-27

  • The TEI Header and organizing a TEI document
  • TEI ODD customizations: choosing only the elements and attributes you need. Introduce Roma JS.
Week 6 In Class Due Next Time

M 09-30

  • Project management tools for improving communication, completing tasks: GitHub projects, Slack.
  • How to write a TEI ODD. Explore Roma JS and work on developing a TEI ODD.
  • Generate a Relax NG schema from the ODD file in <oXygen/>.
  • TEI ODD-schemas versus hand-coded Relax-NG: Which is better for your project?
  • Finish TEI ODD exercise.
  • Project Checkpoint 2:
    • Locate all sources for project XML markup.
    • Establish a clear file directory structure on your project GitHub, including a distinct directory for website files.
    • Ensure all project team members are working consistently with the GitHub directory structure (all agree on it, and no one changes without notice).
    • Start work on a project schema (Relax NG or TEI): planning stage.
    • A significant quantity of project documentation and/or markup is present in the GitHub repo.
  • Read our Intro to Regular Expressions and start reading the Regular Expressions Quick Start in prep for next class.

W 10-02

Readme and other Markdown Files for your project GitHub

Introducing up-conversion with Regular Expressions:

Preview Regex Exercise 1: Shakespeare’s Sonnets. Consult our Intro to Regular Expressions and the Regular Expressions Quick Start as you work on the regex exercises.

F 10-04

Regular Expressions: thinking algorithmically. Greedy Matching. Start / finish(?) Regex Exercise 1 together in class

Week 7 In Class Due Next Time

M 10-07

  • Regular Expressions: Selecting for what’s not there, simplifying over-complicated patterns
  • Regex searching over highlighted portions of a document

W 10-09

  • Review, work through issues with Regex exercise 3. Prep for Regex test.
  • Revisit Project Management tools (Markdown files, Slack, GitHub Projects)
Start Test 3 (take-home): Regular Expressions

F 10-11

Hands-on Project Team work together in class on Project Checkpoint 3
  • Test 3 (take-home): Regular Expressions
  • Project Checkpoint 3:
    • Some team members work on developing page(s) for the project website, creating a navigation menu (using a SSI), and working with section, div, and span elements. Try using CSS flex to control your horizontal layout. Make a file directory in the GitHub repo to separate project website files from XML markup.
    • Others concentrate on completing XML markup and refining the project schema to ensure a clear, well-developed XML hierarchy.
    • The schema is documented and everyone can find and review it.
    • All XML markup for the project features a correct schema association line pointing to the project schema.
    • Significantly more XML markup and/or improved XML markup is prepared by this time by comparison with Project Checkpoint 2
Week 8 In Class Due Next Time

M 10-14

Navigating XML with XPath: Introducing the XPath window in <oXygen/>, functions, axes, path steps /, and predicate filters [ ]. Hands-on: navigating 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 10-16

Using XPath to climb trees—up and down and side to side. Predicate expressions: [ ]. (Grouping) and [Position()]. XPath syntax: some tricks.

F 10-18

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

How to combine functions: when to use simple map vs. the arrow operator.

How to put functions in a predicate filter to return XML nodes that have qualities that you test for with functions.

XPath Exercise 3: experimenting with functions
Week 9 In Class Due Next Time

M 10-21

Work on XPath and manipulating text strings. Using Regular Expressions in XPath. Preview Schematron if time.

W 10-23

writing an XPath-based Schema language: Schematron, and how we use it with Relax-NG

How we use Schematron in project management.

Consult our Guide to Schema Writing with Schematron as you complete Schematron Exercise 1.

F 10-25

More applications of Schematron to your ongoing project. Schemas to work with Personographies, Placeographies, Prosopographies (Relax NG, ODD with Relax NG, Schematron: Keeping track of xml:ids with Schematron).
  • 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.
  • Preview our Introduction to XSLT in preparation for the next class.
Week 10 In Class Due Next Time

M 10-28

  • Introducing XSLT (eXtensible Stylesheet Language Transformations). XSL Transformations from XML to XML, and from XML to HTML. Namespaces
  • Start hands on together in class: XSLT Exercise 1

W 10-30

XSLT to HTML: How it works.

F 11-01

XPath and XPath Patterns. XPath review: axes, functions, and predicates in prep for XPath test. Using XPath functions to make counts and do calculations for charts and graphs. Test 4 (take-home): XPath
Week 11 In Class Due Next Time

M 11-04

XSLT: What template rules are doing. Push and Pull processing. Attribute value templates (review). XSLT to HTML Table transformation in class.

W 11-06

XSLT templates, push processing, and preparing/styling HTML for editions. Putting it all together with CSS.

F 11-08

How Modal XSLT works.

Processing collections of files

XSLT Exercise 5 (due before next W 11/13). Consult Modal XSLT page as you work on the coding exercise.
Week 12 In Class Due Next Time

M 11-11

(Dr. B is away at a digital project consultation meeting in Texas.) Semester Project workday: Review Project Guidelines

Work on developing HTML, CSS, and XSLT for projects. Also work on recording project documentation and decisions in markdown on your GitHub repo (GitHub issues and Readmes).

Finish XSLT Exercise 5. Consult Modal XSLT page as you work on the coding exercise.

W 11-13

Sorting with XSLT

HTML with internal links: how it works and how to create internal links with XSLT

XSLT Exercise 6

F 11-15

Writing XSLT for your projects. Review of metadata and TEI, and using XSLT to extract metadata: Example: Digital Mitford letter.

Checking your HTML with the w3c Markup Validation Service.

XSLT Exercise 7 (also part of Project Checkpoint 5). Project Checkpoint 5:
  • Goal: complete and refine the project’s XML markup, and be actively processing it with XSLT for this stage.
  • Work on XSLT to HTML transformations that help present your texts as a web archive.
  • Work on improving the project website, updating its organization and navigation, describing and introducing the project and its team members.
  • (Other goals: specific to project teams)
Week 13 In Class Due Next Time

M 11-18

W 11-20

SVG from XSLT, working with variables to plot coordinate space

SVG Exercise 2: XSLT to SVG to make a graph

F 11-22

User experience (UX): Setting SVG in a webpage and providing explanation. Project applications of SVG.

Introducing JavaScript and client side interaction with users

  • SVG Exercise 3 Options:
    • Plot a Timeline with SVG
    • Plot a Graph from your project data
  • Javascript Exercise 1
Week 14 In Class Due Next Time

M 11-25 to F 11-29

Thanksgiving Recess: no classes Work on project websites, SVG, JavaScript Exercise 1.
Week 15 In Class Due Next Time

M 12-02

Introduction to JavaScript, and writing and associating JavaScript files with HTML. Working with variables and for loops in JavaScript. Coordinating JavaScript with CSS on project HTML.

Start by doing Javascript Exercise 1 (due by W 12/04). As soon as you are ready, choose one of the JavaScript Exercise 2 options (due by F 12/06):

W 12-04

Putting it all together: JavaScript with CSS to interact with SVG; project needs for SVG and JavaScript. Review of creative commons licensing, project guidelines.

Work on Project Checkpoint 6: preparing material for project presentations, final project code sprint.

Project development. Complete JavaScript homework exercises (and apply to projects):

F 12-06

Project coding consultation and development, review of project guidelines.
  • Teams prepare for Project Checkpoint 6.
  • Classmates (from other teams) ask questions, offer commentary on project GitHub repos.

Mon. 12/09: 10:45am - 12:45pm

Team presentations in our classroom (McKenna 136) during our Final Exam session. Teams present their projects to the class, invite comments and feedback. Classmates (from other teams) continue to ask questions, offer commentary on project GitHub repos: commentary due by the end of the day.

Thurs. 12/12 by 11:59pm

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