Computational Methods in the Humanities is one of the very few courses offered at the University of Pittsburgh that is applies quantitative and formal reasoning to the interests and needs of students in the humanities. To this end, it combines lecture, discussion, and practical programming exercises.
There are no prerequisites: this course assumes that students have zero prior coding experience.
This course will introduce students to the role that computational methods can play in primary research and scholarship in the humanities, using as a framework eXtensible Markup Language (XML) and related technologies. XML has excellent properties for document modeling, which makes it singularly useful for humanities computing, and it is not an accident that many Digital Humanities projects today are built around XML and related technologies. The related technologies addressed in the course include a powerful declarative programming language (XSLT), a formal model for the navigation of XML documents (XPath) used by XSLT, a metalanguage for the formal modeling of documents (Relax NG), a constraint modeling language (ISO Schematron), a graphic description language (SVG), and others. If this description does not make sense now, it will by the time you finish the course!
Upon successful completion of this course students will be able to 1) identify opportunities for the application of computer technology to authentic research problems in the humanities; 2) analyze the structure of texts in the humanities and develop formal representations of those structures; 3) write original computer programs, using languages in broad use in the Digital Humanities and document processing communities, to conduct research on those texts; and 4) operate comfortably with industry-standard development resources for code development, project management, and discussion.
An Honors course provides a research-oriented, graduate-level educational opportunity, and students who complete this course have frequently commented that it was simultaneously one of the most demanding and one of the most rewarding experiences of their academic careers. That experience requires a commitment, appropriate for an Honors course, to attend all course meetings and complete all homework conscientiously and in a timely fashion. Given that commitment on your part, the instructors will be eager to work with you to help you finish the course having acquired skills that will enable you to use computational methods to conduct professional-level original research in the humanities.
Students are required to have a laptop (not a tablet) in order to access coding software at home and/or during project meetings. Pitt IT offers Chromebooks for students to borrow for free. Students can access Windows-based software on University Chromebooks and desktop machines in computing labs through the Virtual Computing Lab.
The principal (and required) textbook is Michael Kay, XSLT 2.0 and XPath 2.0 programmer’s reference, 4th edition, Indianapolis: Wiley/Wrox, 2008, ISBN-10: 0470192747. ISBN-13: 978-0470192740. Earlier editions are not acceptable. Most students will access the free, digital version of the textbook through the Pitt library system. If you wish to have access to a hard copy (which you are not required to buy), this book is available from Amazon (do not buy the Kindle edition, which is difficult to use because of poor indexing) and other on-line vendors. Other required materials are available at no cost on the Internet. All of these materials, including the Kay book, are intended primarily for reference, which is to say that students should anticipate using them frequently and intensively to research solutions to particular problems, but they are not expected to read them cover to cover.
This course will use the <oXygen/> XML Editor and IDE (integrated development environment), which is available in all CSSD computing labs (including the Virtual Computing Lab) through a site license purchased by the University. The site license also permits students enrolled in this course (and only those students) to install a copy of the software on their personal computers (Windows, Mac, and Linux) for use at home (for course-related purposes only). The software can be downloaded from https://www.oxygenxml.com and the license code to register your home copy is available as an announcement inside Canvas. We will notify you about other course software (all free) as the need arises.
The centerpiece of this course, and single most important grade, are student-driven, team research projects. Students are at liberty to select any topic of interest to them, so long as (a) it has research value within what we broadly consider "the humanities", and (b) the project takes advantage of many of the digital methods covered in this course. For additional guidelines, and examples of past projects, see this webpage.
In addition to project tasks, course activities include reading, coding, and response paper assignments, as well as participation in formal and informal online discussion. Students must complete at least 90% of each homework component (programming assignments, response papers, project tasks, participation in online activities) on time in order to pass the course. For students who meet the 90% requirement, these assignments, taken together, are worth 25% of the course grade. Students will need to observe file-naming conventions for all uploaded homework and project files; please ask the instructors if anything is unclear.
Coding assignments in this course are a technique for learning and studying,
and not—as in many other courses—a way of testing whether you’ve already
learned something covered in class or in an assigned reading. Because a
crucial skill in Digital Humanities development is the ability to look up
how to do something you don’t already know how to do, these assignments will
frequently challenge you to write code that you do not yet know how to
write. Students who are used to the homework-as-test model of course design
may find this disconcerting (But they haven’t told us how to do
this!
), but professional developers have to look things up all the time,
and learning how to look things up is a critical pedagogical goal of this
course. There may be times when you don’t get the result you want, and in
those cases you can still get full credit for the assignment if you’ve made
a serious attempt and if you submit, along with your code, a description of
what you tried, the results you expected, the results you got, and what you
think went wrong. Getting stuck is part of the learning process and the
instructors will be happy to help unstick you as long as you’ve described
your understanding of the problem and your attempts to resolve it on your
own. To help you develop the habit of carefully reading, and then
explaining, your code, you must submit at least one relevant, thoughtful
comment with each coding assignment.
Note: When submitting commentary with your homework
assignment, refrain from using any Canvas-specific commenting feature;
instead, you should write your message directly in your homework file as a
formal comment (we’ll show you how). This is the only way to guarantee that
the instructors will be able to see it.
The instructors will post solutions to and discussion of programming assignments on this website after the assignment deadline. The instructors will read and evaluate all student homework, and will post an assessment on Canvas, and we will write back to you with individual comments only if your specific submission raises an issue that we don’t address in our general posted solution. If we don’t return your assignment, that means that we have nothing to add to our posted solution, which you nonetheless need to read, and should you have any specific questions after you’ve done that, please ask the instructors.
Coding assignments are assessed as check plus
,
check
, and check minus
. Don’t think of these as grades,
since they all receive full credit; they are feedback, for learning
purposes, about how well you engaged with the assignment. If you have not
engaged with the assignment adequately (whether that means solving the tasks
or discussing the coding impediments you encountered and how you dealt with
them), we will ask you to meet with us to review the issues and then
complete a followup (redo) task in order to receive credit. Submissions that
are blank, inappropriately short, or otherwise not reflective of reasonable
time or effort being spent on the assignment will be marked as not
submitted
. Because we post solutions to coding assignments and
review them in class and because homework assignments are sequenced, and
therefore time-sensitive, we cannot accept late homework submissions.
This course draws on a wide variety of online resources for its content, which means that many coding assignment descriptions will be hosted on Obdurodon, but some will be posted on Bactriana or Canvas. However, links to all assignments will be posted on the syllabus: students should not wait for them to be posted as Canvas assignments to get started, even though Canvas is where they will ultimately be submitted.
Students will be asked to submit 300- to 400-word response papers to readings
or as evaluations of Digital Humanities web sites, projects, and resources.
Your response does not have to be long, but it must show a thoughtful
intellectual engagement with the material. For example, don’t summarize an
article (which you could do just by skimming or reading the first paragraph)
and don’t just praise or condemn a web site without going into specifics
about why some component is or is not well designed and suggesting specific
ways it could be improved. Good response papers show thought and attention,
and may respond to a reading or site in general, or to a detail of specific
interest. Some sites are significant for their design and user experience,
others for their research methodology, and response papers should engage
with the aspects that are most significant to the project. In some cases the
syllabus will specify the focus of the response papers for a particular
assignment. Response papers are also assessed as check plus
,
check
, and check minus
, all of which earn full credit, and
your instructors will return them with individualized feedback.
Students are expected to consistently engage with each others projects throughout the semester, and also to code and troubleshoot "in the open." To this end, starting in the second week, each project team is expected to post a weekly update on their Github repo page; each student must individually comment on another project team's update at least once per month; and all students are expected to consistently engage on the Slack troubleshooting and coding channel. On these standing assignments, see this page for more details.)
There are seven coding tests, of which only the best five are incorporated into the course grade (15%). There are no make-up tests; if you miss a test, it is effectively excused, since it just becomes one of the two that don’t count.
All test are assigned over a weekend. They will be open-book/open-notes, but they must be completed individually, which means that although you can look things up (and you are encouraged to do so, as needed, much as professional developers do), you are not permitted to request or receive help from any other persons.
There is no final examination.
Below is a table summarizing all the assignments, exams, posts, etc. that are expected of you throughout the semester. Please refer to the above description (and standing assignment explanation) for more detail.
Assignment | Brief Summary | How Often/Due Date | Location |
---|---|---|---|
Semester-Long Project | Completed in a small group throughout the semester. | Groups meet ~1x/week; complete weekly 'checkpoints' (see below); final submission and presentation due at end of semester. | n/a |
Exams | Take-home, open-book (closed-classmate) subject exams. | Seven throughout semester (see syllabus); done over the weekend. Lowest 2 dropped. | Canvas |
Team Project Updates | Update on project progress. | ~1x/week,; only 1 per team | Github |
Team Project Update Discussions | Interact/reply to another groups' updates. | ~1x/month or more; done individually | Github |
Response Papers | 300-400 word responses to readings, past projects, etc. | Varies: see syllabus but ~1-2/week | Canvas |
Coding Assignments | Coding assignments on the current unit. | Varies: see syllabus, but ~1-2/week | Canvas |
Slack Posts | Actively posting in Slack channel (coding questions, answer questions, etc.) | no set amount, just being consistently involved in the Slack. | Slack |
Homework assignments | 25% |
Tests (best five) | 15% |
Standing assignments | 20% |
Project grade | 40% |
Although you will not receive an attendance grade, showing up for class is especially important for this course: students who miss more than four class sessions will receive a failing grae.
The material in this course is inherently challenging, but grading policies are designed to facilitate learning and reward effort: full credit is awarded for coding assignments for which students make an honest effort (receiving at least a check minus); "test" may seem like an intimidating grade category, but is proportionally the least emphasized grading category, and we drop the two lowest grades; and feedback is offered very frequently in the standing assignment and project catetories, offering ample opportunity for improvement.
Students may enroll under any of the cross-listed rubrics and both undergraduate and graduate students are welcome (graduate students should enroll in Slav 2050, which is the same course, but the 2000 number means that graduate students will earn graduate credit). Whether the course satisfies requirements for a departmental major is up to the individual departments, and interested students should inquire about this with their major advisors. The course carries a University Honors College (UHC) designation; for information about enrolling in UHC courses, see https://www.frederickhonors.pitt.edu/academics/courses.