Fall 2020 Syllabus (Schedule)
Classes meet M W F 12:20 - 1:10pm over Zoom and in Kochel 77. Zoom attendance is required
for all students. The classroom is optional, but even in the classroom you will be
connecting to Zoom to team up with your classmates.
We may need to divide into groups to rotate attendance in the physical classroom.
Group assignments will be made in Canvas.
For in-class meetings, we must all wear masks and maintain a safe social distance.
Remember: Your mask protects me, my mask protects you.
This contains a detailed explanation of course policies and the basis for grades.
This link jumps to the closest day to today's date. Review the schedule as we get
started to get a sense of how this course will work on a daily basis.
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.
- <oXygen/>.
The DIGIT program has purchased a site license for this software, which
is installed in Kochel 77 and the Lilley Library computers. 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.
- Zoom: Make sure your Zoom installation is up-to-date, and you are ready to
connect. The Zoom link for our regularly scheduled class meetings is posted in
Canvas: Look for the Zoom menu option.
- 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.)
- No coding experience? Don’t worry! 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 undergraduate conferences! You will learn to develop
your own digital tools and how to manage digital projects as teamwork.
Class Web Resources:
Week 1 |
Topics |
Do before class |
Group A |
Group B |
M 08-24
|
Welcome! Introduction to the course. Intro to XML and "plain"
text in the oXygen XML Editor. |
Respond to Dr. B's Poll (see Canvas / Penn State email).
Find the Zoom link for class (on Canvas / Penn State email). |
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 08-26
|
XML coding: a
recipe for Whipt Syllabub. Elements, attributes, comments, escape
characters, and "pretty-printing" in <oXygen/>. How file systems recognize XML documents
(File extension, and XML declaration line). Introduce XML Exercise
1 (Historic Letter) |
Install oXygen XML Editor and add our license key so we
can all use this during our meeting today. Read my Introduction to XML and experiment with the code in the
tutorial: Can you tell what makes markup well-formed or not? |
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 08-28
|
Discussion of Pierazzo introduction of XML. Discussion of homework, XML
data and metadata. Document sources. Self-closing elements. Distinct identifiers:
@xml:id attributes and pointer attributes (#):
Example with Map of Early Modern London Project
Introduce XML Exercise 2 (see Do before class for M 8/31)
|
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
Week 2 |
Topics |
Do before class |
Group A |
Group B |
M 08-31
|
Discussion of XML homework. More explanation of how to work with
distinct identifiers: @xml:id attributes and pointer attributes (#):
Prosopography lists. Self-closing elements. |
Complete XML Exercise 2:
- First, revise the code in your XML Exercise 1: Try adding tags and attributes to help
track more specific pieces of information than you marked at first. Try marking people
and places, for example.
- Look for
pseudomarkup to convert into markup
- Choose another letter in the collection from XML Exercise 1 and try to encode it the
same way.
- Optional: Try making a
personography or a placeography list (even a partial one) of distinct people or places mentioned in the two letters.
This can be a third file, or embedded as a section in each letter. Code the entries
in this list to hold distinct names and any other information you wish, and give each
entry an @xml:id attribute to hold a short distinct identifier you can use in your code. Then, apply
pointer attributes (maybe @who , or @where or @ptr or @ref ) in the markup of people or places in the body of the letters to point to entries
to the personography or placeography using hashtags so you do not duplicate the xml:id . Where the xml:id would be coded only once on a page or in a project like so: identifier , the values of pointers can be used as many times as you like, and are just preceded
with a hashmark like this: #identifier .
- Submit your revised letter XML and new letter XML (and optional personography/placeography)
on Canvas for XML Exercise 2.
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
W 09-02
|
Discussion of The Ballad of Booker T. : Multiple ways to encode a poem and manuscript information. Overlapping hierarchies. |
XML Exercise 3: Mark up The Ballad of Booker T. |
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
F 09-04
|
Introduce class GitHub and how we will interact with it. Students join the class textEncoding-Hub. Intro
to GitHub markdown.Markup vs. markdown. Explore GitHub markdown for writing issues,
including code-blocks. Command line hands-on navigation, and introduction to git commands:
Clone the textEncoding-Hub to your local computer. |
Complete Git Exercise 1. Watch my video introducing
the Bash shell and "home" on your computers and practice the shell commands I am introducing.
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 3 |
Topics |
Do before class |
Group A |
Group B |
M 09-07 Labor Day, PSU classes in session anyway!
|
GitHub file management: pulling, adding, committing, and pushing to your repo.
When XML gets in the way: Overlapping hierarchies problem:
exhibited with Ozymandias . Emily Dickinson projects and reading interfaces
for encoded documents: Introduce discussion on textEncoding-Hub. |
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 09-09
|
- Seven Days of Git/GitHub. Start by (carefully) cleaning up our textEncoding-Hub? ALWAYS PULL BEFORE YOU PUSH!
- Prepare for XM Test 1: Pre-Test Class Exercise:
git pull from textEncoding-Hub.
- Open oXygen XML Editor. Open a file from textEncoding-Hub > Class-Examples > xmlPreTest
- Open the file inside: ozyMeta.xml in oXygen. (If trouble with git pull, copy and paste the file into a new XML document from here.)
- IMPORTANT! Save this file OUTSIDE of our textEncoding-Hub, so you don't save over my Class Examples as you are working. Save to your personal repo or to your Desktop or elsewhere on your computer!
- Work in oXygen on finding and correcting errors that break XML form. With each error, document your correction: write an XML comment explaining what you did to correct the problem.
- Keep making corrections until XML is well formed (and oXygen is green). Do your best! This is like the exam you will be taking over the weekend.
- Emily Dickinson Projects: Exploration
|
- Git Shell Practice (starting today for seven days): Make
sure your personal repo and the class repo are properly set up and cloned to
your computer. Using your Bash shell, practice some basic git commands to build
a habit. On alternating days, push to the other repo (if you pushed to your
personal repo today, tomorrow you will pull and push a file to our class repo). Remember: ALWAYS PULL BEFORE YOU PUSH!
- Start exploring/responding to the Comparison of Emily Dickinson Projects on the textEncoding-Hub.
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 09-11
|
Validity vs. Well-formedness. Introduce the TEI community and
shared schema. Designing your own schema. Issue Take-Home Test 1. |
Complete discussion posts on Emily Dickinson comparison exercise. |
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 4 |
Topics |
Do before class |
Group A |
Group B |
M 09-14
|
Validity for a project: what is a schema? How to write a Relax NG schema |
Complete Take-Home Test 1. Read Intro to Relax NG |
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
W 09-16
|
Writing schemas: technical details and big picture issues.
Introducing datatypes. The interesting "tag soup" of "mixed content". |
Watch my video on Relax NG and how to write it in oXygen, and
complete Relax NG Exercise 1: - Make a folder to hold this homework, since it will contain two files. Save the folder using our homework filenaming conventions.
- Open this goodMorning.xml file (open the link, and right-click to save on your computer with your homework, then open in oXygen).
- Open a new Relax-NG Compact syntax file in oXygen, and set your editor in tile view so you can see the goodMorning.xml file next to your schema file. Delete the code in the Relax NG file so you have a blank slate to start with.
- Write a Relax NG Schema in Compact Syntax that models the content of this XML file as you study it. (Save the schema in the same directory with your XML file so you can easily find it.)
- Associate the schema with the XML file (in oXygen go to Document > Schema > Associate Schema, and browse to locate the schema. Click OK and note the new schema line at the top of your XML file.
- Zip (compress) the file directory holding your XML file and the Relax NG schema file, and submit this on Canvas at the upload point for this assignment.
Review XML syntax and consult the Intro to Relax NG as you work on
this, and ask for help on out textEncoding-Hub by opening an issue if you get stuck. Continue GitHub
practice! |
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
F 09-18
|
Trioubleshooting and debugging Relax NG issues. |
Relax NG Exercise 2: Write a Relax NG schema for one of the XML documents you created for a previous homework assignment (making changes to the XML if you wish or as recommended). Upload both your XML and your schema file in a zipped (compressed) directory on Canvas.
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 5 |
Topics |
Do before class |
Group A |
Group B |
M 09-21
|
Ongoing manuscript / document transcription projects. Crowdsourcing transcription, pseudomarkup vs. markup. Examples: |
Relax NG Exercise 3:
Choose a new document (any genre,
any language, manageable size for homework, interesting to model): Try writing
a schema first, and then coding to fit the schema. (Edit both the XML structure
and the Relax NG rules as you go.) |
Fully Remote (I need to teach from off campus today.) |
Fully Remote (I need to teach from off campus today.) |
W 09-23
|
Introducing the Text Encoding Initiative (TEI): Ways of Knowing in Digital Humanities and TEI (web slides). |
- Repair any broken Relax NG syntax and/or XML validation issues on previous homework submissions.
- Get started on the Crowdsourcing Transcription exercise: Choose a resource from one of the options on the assignment and begin transcribing.
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 09-25
|
Review of major concepts about XML and document data modeling.
Relax NG Debugging Class Exercise: Pre-Test on textEncoding-Hub. (Please do not push your files to the textEncoding-Hub but save them somewhere else on your computer, like your personal GitHub or where you do homework.) |
Complete the Crowdsourcing Transcription exercise. |
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 7 |
Topics |
Do before class |
Group A |
Group B |
M 10-05
|
Introducing a TEI ODD Schema for Anna Julia Cooper TEI.
|
- TEI Exercise 3: Continue coding the AJC survey in TEI. Suggestions/options:
- Revise your code from TEI Exercise 2 to make it valid if you need to
- Try changing your approach, or adding some new elements from the TEI that you did not introduce before
- Look into how to develop the
msDesc in the teiHeader
- Try coding a little more of the survey and responses
- Complete Take-home Test 2: Relax NG (by 11:59pm)
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 10-07
|
Working with a TEI ODD customization for the AJC Survey. |
No homework to submit, for once! Before class, review the slides and resources on TEI ODDs that we discussed in class on Monday. |
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 10-09
|
Review discussion of document data modeling of the AJC survey. Preview of aggregate crowd-sourced data
and alternative published view of the AJC essay (see item 17).
Introduce Text Encoding Projects: possibilities. |
TEI Exercise 4 |
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 8 |
Topics |
Do before class |
Group A |
Group B |
M 10-12
|
Introducing Regular Expressions and autotagging. Regular patterns in documents. How to start?
Text Encoding Projects. |
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
W 10-14
|
Regular Expressions: thinking algorithmically. Inside-out or outside in.
"close-open" strategy. |
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
F 10-16
|
Regex review of Dracula. Introduce Semester Project Assignment.
|
Regex Exercise 2 |
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 9 |
Topics |
Do before class |
Group A |
Group B |
M 10-19
|
How does HTML relate to TEI and XML? HTML and file management.
Introduce HTML Exercise 1 for GitHub Pages in your GitHub repo.
|
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 10-21
|
Creating links, associations: absolute vs. relative. Building web pages in your GitHub repo. |
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 10-23
|
- Take stock of website issues, look ahead at HTML development from XML.
- Introduce XPath: Set XPath 3.1 in oXygen XML Editor.
|
Complete HTML Ex 2: Building and Styling a Site with Linked Pages
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 10 |
Topics |
Do before class |
Group A |
Group B |
M 10-26
|
Querying XML with XPath. Working with XPath arithmetic operations, searching for nodes on axes, and setting predicates.
|
- Read our Introduction to XPath.
- Start working on XPath exercise 1
- Finish up the HTML exercises from last week if you need to do that and continue tinkering with HTML and CSS on your GitHub Pages site.
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
W 10-28
|
XPath Predicates as boolean filters (using and , or and the not() function)
Revisiting XML markup decisions, based on what XPath can
show. |
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
F 10-30
|
Discuss Semester Project milestones. Review XPath Exercise 2 together. |
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 11 |
Topics |
Do before class |
Group A |
Group B |
M 11-02
|
Introducing XPath string functions: - Handling only one node at a time:
contains() , matches() , translate() , replace() , string-length() . Cutting a string in parts: tokenize() ; taking substring-before() or substring-after()
- Bundling up a sequences of strings:
string-join()
- More math XPath:
min , max() , sum() . Issue XPath Exercise 3 (due Friday this week).
|
Semester Project Milestone: Prepare and refine a schema for your project markup, and complete some significant markup toward the project.
|
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 11-04
|
Share your project code so far with your graoup: Breakout groups to get acquainted to review code, organize future meetings. Guidelines for Breakout Discussions.
Introducing XSLT (eXtensible Stylesheets Language Transformations). XML to XML, XML to HTML. Namespaces. Setting up oXygen to write XSLT and saving as .xsl . Writing your first XSLT stylesheet transformation. |
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 11-06
|
Go over XPath Exercise 3 together. Introduce XSLT. |
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 12 |
Topics |
Do before class |
Group A |
Group B |
M 11-09
|
How XSLT template matches work. XSLT to create HTML, trimming the tree . |
- XSLT Exercise 1: an identity transformation
- Review Introduction to XSLT, and (re)watch one (or both) of the following orientation videos on how to set up oXygen to write XSLT:
|
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
W 11-11
|
XSLT to HTML: Making an HTML reading view for semester projects.
|
Semester Project Milestone 2: Complete a significant amount of XML markup on your project, following your project team’s schema, and push it to your repo or a shared repo for the team. Post a link to your code on Canvas. |
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
F 11-13
|
Documenting code in a GitHub repo. |
XSLT Exercise 2 |
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
Week 13 |
Topics |
Do before class |
Group A |
Group B |
M 11-16
|
- Putting the pieces together: Workshopping XSLT, HTML, CSS.
- Modal XSLT: processing the same nodes in multiple ways.
|
XSLT Exercise 3 |
Zoom remotely |
Kochel 77 + Zoom (audio muted) |
W 11-18
|
Using sort() to sort your output. Internal links on an
HTML page, from XSLT. |
XSLT Exercise 4 |
Kochel 77 + Zoom (audio muted) |
Zoom remotely |
F 11-20
|
Introduce Creative Commons. Pulling and highlighting interesting data for project sites. Planning how to style your output; looking stuff up. |
XSLT Exercise 5: adding internal links, sorting, and styling the Dracula output with CSS
|
Fully Remote (Zoom Friday) |
Fully Remote (Zoom Friday) |
|
Topics |
Do before class |
Group A |
Group B |
M 11-23 - F 11-27
|
Thanksgiving Holiday |
Have a peaceful and productive week! See you online. |
|
|
Week 14 |
Topics |
Do before class |
Group A |
Group B |
M 11-30
|
Revisiting the Data Model, spotting errors to clean up. Schema
workshop. Introducing Schematron. |
Read Introducing Schematron
Semester Project Milestone 3: Each member of a project team work on code to help contribute to the project. Your code should be pushed to the team GitHub repo, and you should identify it by directly linking to your git commit. Each individual member of the team should work on one or more of the following:
- Continue with XML markup and refining the schema. Indicate in a Canvas message if the transcription/markup is complete or how much remains.
- Write XSLT over your project code to produce a reading view of some or all of your XML in HTML.
- Write CSS to style the output HTML. Use CSS to highlight and format anything of interest.
- Develop more content for the project website: introductions of participants, etc.
- Select a Creative Commons license for your work, and embed the code on your site.
|
Fully Remote (Zoom) |
Fully Remote (Zoom) |
W 12-02
|
Schema Workshop |
Schematron Exercise 1 |
Fully Remote (Zoom) |
Fully Remote (Zoom) |
F 12-04
|
Schema Workshop |
Schematron Exercise 2: find something to check and correct on your project XML |
Fully Remote (Zoom) |
Fully Remote (Zoom) |
Week 15 |
Topics |
Do before class |
Group A |
Group B |
M 12-07
|
Presentation vs. Semantics: What do we share? What do we
miss? |
Semester Project Milestone 4: Team members collaborate together to develop the project: - Look for interesting data from your markup that you can pull with XPath and XSLT to view in HTML sorted lists and/or tables.
- Refine and update the project Relax NG schema to share as documentation of your code. Add comments to explain the team's thinking for schema rules worth noting.
- Prepare a Schematron file to check for issues in the project XML.
- Ensure the XML is valid against your Relax NG and Schematron schemas. Check that schema lines are properly associated and work with them to produce valid team markup.
- Revise and update XSLT processing as needed with any new and improved XML markup.
- Coordinate with the team to finalize the XML markup, making sure you are applying the appropriate/up-to-date schemas.
Your code should be pushed to the team GitHub repo, and you should identify it by directly linking to your git commit. Prepare the website, update and refine the styling, make sure Dr. B has a link to the project website to post for the presentations. |
Fully Remote (Zoom) |
Fully Remote (Zoom) |
W 12-09
|
- Documentation and reflection work: writing about what isn't
there, assessing what could come next.
- Linking the code view of your repo to your GitHub Pages site
- Designing and checking for website accessibility:
|
Documentation work |
Fully Remote (Zoom) |
Fully Remote (Zoom) |
F 12-11
|
Last day. Project Presentation Schedule (10:05am - 1:15pm, Special Zoom Link posted on Canvas). Combined project presentations of DIGIT 400, PHOTO 200, and DIGIT 110. Teams present their projects to the class, invite comments and feedback. Classmates from other teams ask questions, offer commentary on project GitHub repos through early next week. |
Prepare to share a view of your project cluster
work |
Fully Remote (Zoom) |
Fully Remote (Zoom) |
Finals Week: M 12/14 - F 12/18 |
Due |
H 12-17
|
Semester projects due by
11:59pm Finish developing projects, and send a post to me on
GitHub and Canvas to indicate your team is finished.
|