Fall 2022: Classes meet M W F 2:30 - 3:20pm in Kochel 77.
Schedule: Fall 2022
DIGIT 400: Lionpath class number: 6098. This course fulfills a 400-level requirement for the DIGIT major at Penn State Erie, The Behrend College. You should have taken at least one of either DIGIT 110 (Text Encoding) or DIGIT 210 (Text Analysis) as preparation for this class. Please talk to me and your advisor to revise your schedule as soon as possible if you have not taken either of these courses. (I am teaching DIGIT 110 this semester, so if you need it and there is room, please enroll in that course.)
Instructor
Dr. Elisa Beshero-Bondar (Dr. B
),
Professor of Digital Humanities and Program Chair of DIGIT.
- E-mail: eeb4 at psu.edu
- Office: 128 Kochel
- Office Hours: Wednesdays 3:30pm - 5pm, Thursdays 3 - 4:30pm, and by appointment. (Check with me by e-mail to arrange a Zoom meeting.)
Digital Project Design: Course Description
This course is all about working with computers and digital technology to build cultural resources on the public web. In taking this course you will gain experience with digital interface design and digital production, and you will learn a variety of coding designed for systematic building and sharing of information resources.
Students who complete this course will gain skills in practical hands-on programming, digital project management, and web development. Your digital projects will distinguish you as investigators and makers, able to wield computers creatively and effectively for human interests. Your success will require patience, dedication, and regular communication and interaction with us, working through assignments on a daily basis. Your success will not require perfection, but rather your regular efforts throughout the course and your documenting of problems when your coding doesn’t yield the results you want. Homework exercises are a back-and-forth, intensive dialogue between you and your instructors, and we plan to spend a great deal of time with you individually over these as we work together. Our guiding principle in developing assignments and working with you is that the best way for you to learn and succeed is through regular practice as you hone your skills. Our goal is not to make you expert programmers (as I am far from that myself). Instead, I want you to learn how to apply coding technologies for your own purposes, how to track down answers to questions, how to ask for help, and how to find answers to questions by searching and experimenting. In designing a digital project, you will gain skills in thinking algorithmically (step-by-step) through problems to find good solutions.
This course concentrates intensively on digital project development and publication, taking your experience with these areas from previous courses to new levels. You students will propose and select the project ideas we will work on in this class, with guidance from me to investigate a research topic in the humanities. You will apply and your skills in working with eXtensible Markup Language (XML) and languages connected with it and gaining new experience with project documentation as well as interface design and platforms for publishing on the worldwide web.
New in this course
In DIGIT 400, you will gain experience with how to design and optimize systems for publishing a complex project on the worldwide web. This includes designing to assist navigation, to optimize sharing of multipe forms of media and their metadata, as well as how to compartmentalize repeating features across a website. You may gain new experience working with an XML database in conjunction with a web service to dynamically publish files. And you will gain experience with writing JavaScript for assisting with locating, highlighting, hiding, showing, and other dynamic user interactions on a website, optimized for the design of your project. This experience builds on the smaller-scale attempts at digital project publishing you explored in previous DIGIT courses.
Review from earlier courses
In the process of learning more about interface design, project development and deocumentation,
you will also be reviewing skills from DIGIT 110 and DIGIT 210, such as working with regular expressions
to match patterns in plain text and up-convert
them to an XML document. You’ll revisit how to
write XPath expressions: a formal language for searching and extracting information
from XML code which serves as the basis for transforming XML into many publishable
forms. You will review and write XSLT: a programming “stylesheet” transforming language
designed to convert XML to publishable formats, as well as to extract information and
plot it in charts in graphs in Scalable Vector Graphics (SVG). You will learn how to
design your own systematic coding methods to work on projects, and how to write your
own rules in schema languages (like Schematron and Relax-NG) to keep your projects
organized and prevent errors. Depending on the project you work on, you may gain
experience with the international XML language TEI (the language of the Text Encoding
Initiative) which serves as an international standard for coding digital archives of
cultural materials. Since one of the best and most widely accessible ways to publish
XML is on the worldwide web, you will definitely gain working experience with HTML
code (another markup language related to XML). You will be styling HTML with
Cascading Stylesheets (CSS), and adding dynamic features to your website with
JavaScript. You will also, all along, be working with Git and GitHub for
collaborating with the class and your project team, and gaining command line (or
shell) experience.
While we are using XML in an academic research context,
what you learn here is also important in the tech industry, where XML is the internal
format for many general applications (used for bank and hospital records, and the
basis of educational content management systems, the entire Microsoft Office and LibreOffice software packages).
XML is important, too, for web developers, where the HTML (hypertext markup language)
of web pages to be viewed in browsers is often expressed as a form of XML (as we will
be applying it). Developers of relational databases work widely with XML, too, as
a universal data interchange format.
Finally, gaining fluency in the XML family of languages
in a humanities context may give you a strong foundation in practical computing experience
and I hope what you learn here will help you build a distinctive
portfolio of skills and projects.
Learning Objectives:
- Work with Documents and Media as Virtual Objects:
- Create digital editions: Build a website that curates a collection and investigates a significant research question about that collection.
- Reflect and write on the issues and problems with digital representation, as well as the capacity of the digital medium to enhance or add dimensions to a physical text.
- Practice coding in eXtensible Markup Language (XML) and related
coding technologies: to
mark up
, process, and extract information about the structure, physical condition, and cultural contexts of media artifacts.
- Gain experience with information retrieval, distant reading, and autotagging
techniques:
- Write code to apply searching and data extraction methods through multiple kinds of pattern-matching algorithms, including forms of regular expression matching. Take conventional boolean searches and library database searches to new levels.
- Apply
mining
anddrilling
methods to interact with texts and visualizations differently than we could domanually
or with unassisted eyes and brains. - Practice
autotagging
collections of texts for practical results: to code the structure of enormous texts from a distance, in order to navigate them and make them accessible through distant reading. - Reflect on the strengths and limitations of data processing and visualization.
- Gain Project Design and Editing Experience:
- Gain digital editing experience with proposing, designing, and contributing to a digital research project
- Gain experience with collaborating and documenting code using a version control system (GitHub) in a team repository
- Transform XML code and other digital resources into publishable web formats to build a project website.
- Experiment with designing and revising user interfaces and navigation elements. Reflect and test your designs to refine them for your project.
- Gain experience with plotting digital graphs and charts. Write code to generate meaningful charts and visual aids and models (such as timelines, line graphs, and network diagrams) from data you have curated.
- Last but not least: Discover that you read and write with
new eyes,
with greater precision and agility, thanks to your adventures with digital projects!
Optional Textbook and Other Class Resources
- Michael Kay, XSLT 2.0 and XPath 2.0: Programmer’s Reference, 4th edition (Wiley Publishing, 2008) ISBN-13: 978-0-470-19274-0 This book is optional, and I have not requested it at the bookstore. I have two copies in my office, and it is available in the Penn State Libraries as an e-book. This is really the authoritative word on XSLT and XPath, written by a designer of the official W3C specifications of XSLT that we’re using. We’re not requiring that you buy it, but we recommend it to have a powerful reference at your fingertips and for learning more on your own. There’s a Kindle edition available but poorly designed for searching, so we prefer the hardcover print edition. If you’re going to purchase it, be sure you pick up the latest edition (from 2008), and not the earlier versions.
Other resources: Project Guidelines and Past Student Projects
Explanatory Guides and Exercises: Complete List
Class Web Resources:
- Course Home Website: https://newtfire.org/courses/digitProjectDesign/ Home of our syllabus and schedule.
- digitProjectDesign-Hub: https://github.com/newtfire/digitProjectDesign-Hub Class GitHub Repository and Issues Board
- Canvas: https://courseweb.pitt.edu To submit homework assignments and exams and read private course announcements
- File Conventions for Canvas Assignments
Grading:
Homework Exercises (40%):
To keep up with this class, you must work on exercises regularly. Each day will involve some small assignment, to prepare you for the next of class, and to help you to build your course project. 90% Rule: If students do not submit at least 90% of the regular homework assignments, the grade for the homework portion is based on the percentage of homework they completed. Students should therefore aim to submit at least 90% of the regular homework assignments, and complete at least 90% of the work in each component of the course.
About homework assignments: Coding and project review exercises in this course are about your active learning, and not—as in other courses—a way of testing whether you have already learned something we covered in class or in an assigned reading. You may often need to look up how to do something that you don’t already know how to do. Often there will be multiple ways of accomplishing the task and I am not simply looking for you to do things perfectly in just one way. Instead, I am looking for signs of your active learning process as you take on a challenge. Documenting problems is key to learning, and sometimes just writing out what you are trying to do helps lead you to a solution! There may be times when you don’t get the result you want in the homework, and that is to be expected! 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 else you tried, what results you expected, what results you got, and what you think went wrong. Getting stuck is part of the learning process. You will see me get stuck sometimes, and I will need your eyes to help me fix something! As long as you’ve described your understanding of the problem and your attempts to resolve it on your own, you will do well: documentation of how you get stuck is key. One of our goals is to form a supportive coding community in this class, so we are comfortable with unsticking each other,
I will read and evaluate all student homework, and will post assessments on Canvas. Coding homework is basically marked complete
(1 point) or incomplete
or redo
(0 pts). If you are asked to redo an assignment it is considered incomplete or problematic. If you resubmit a redo
to correct a serious problem, you will receive full credit for the assignment. I will post comments for feedback and learning purposes and you will find these comments on Canvas, sometimes in your coded homework file. If you have
not engaged with the assignment adequately (whether that means solving the tasks or
discussing the coding obstacles you encountered and how you dealt with them), I may
ask you to meet with me to review the issues and then complete a followup (redo) task
in order to receive credit. For assignments with posted solutions, I will invite you to
review the posted solution on GitHub and comment on it (we will show you how to do
this) to address something you learned from the solution or did in a different way.
For some assignments where we review posted solutions together in class, we will write back to you with individual comments only if your
specific submission raises an issue that we don’t address elsewhere. When much of the class is stuck
on something, we will go over assignments together in class, too. If I don’t return
your assignment, that means that I found nothing to add to our posted solution. In those cases, if you have any questions about your work after reading the posted solution, please ask.
Issue posts: Throughout the course, we’ll assign discussion posts on Canvas, Slack, or our class GitHub site in which you will respond to online readings or evaluate web resources. Your posting should do more than summarize the article or site (which you could just do by skimming or reading the first paragraph), but should demonstrate a thoughtful reflection on specific ideas and issues. When evaluating a web resource, don’t simply praise or condemn it without going into details about why a key component is effective or poorly designed. Good posts demonstrate care and reflection, and you may choose to respond to the overarching ideas of a piece, or to selected details of specific interest.
Participation: In Class , on GitHub, and on Slack (15%):
Coding and programming in real life is a social activity, and professionals in
the real world aren’t “know-it-all” experts who work alone, but rather are tuned
into discussion boards and regularly ask and answer questions to stay sharp and to
learn from their community. In this class, we want you to work together and talk
to each other and your instructors as your community resource, so we have built
this into our course participation grade as a formal expectation. Beginning by week two, we’ll expect each student to post at least once per
week on our course GitHub repo, and we strongly encourage you
to do more than this minimum. Earn an A
in participation by asking questions, making suggestions, and sharing helpful
resources you’ve found. Help each other out by trying to answer questions on GitHub
(and
read the instructor posts too as we wade in to help). Your instructors will likely
be dominating the class time as we model concepts and methods, so the GitHub Issues
board gives the students a good space to form into a coding community to help each
other and reflect together. Also, if you have a question about an assignment, always think of our GitHub Issues board as your first resource to
check for helpful hints and to post your questions, because others may have the
same question and answers are best shared! Of course you may e-mail us, but we
really prefer you go the discussion board first, and doing so is, after all, worth
course credit as your participation grade.
Projects and Milestones (45%):
Throughout the semester you will be working as part of a team on a course project. Early in the semester each student posts a proposal for a semester project to work with a text (or collection of texts) in the public domain and a set of research questions to explore in a coding project. Teams will form around a selection of these projects in mid-September and begin work, performing document analysis, developing and implementing a system of markup and project rules, marking up text following that system, writing programs to conduct research and create a resource to share on a public website you will develop together that represents your investigation and your conclusions. Each project team must meet regularly together and check in with me outside of class for project planning and discussion. Each of the project components described below adds up to 40% of your grade for the course.
Project Milestones There will be a series of project milestones to complete by due dates set throughout
the semester. Each milestone is worth a portion of the project grade ( and earns a letter
grade on the following scale: exceeds target
(A+), meets target
(A), some progress
(B), negligible progress
(C), no progress
(F). Each checkpoint will expect you to complete a stage of serious work on the course
project with your project team. Project Checkpoints are met using the Issues and/or
Projects tabs on your project GitHub repository and by posting files on the project
website on newtFire.
The course project develops throughout the semester, but is fully assembled in the final weeks of the course and submitted in two places, through code and documentation shared in your GitHub repository and on your project website due in Finals Week. Projects are evaluated as a team effort, but if unequal effort is observed, project members may receive different project grades accordingly. The Final Project grade is worth 20% of the course grade.
Grading Scale:
Grades for the course are calcuated and posted on Canvas, and follow this standard scale: A: 93-100%, A-: 90-92%, B+: 87-89%, B: 83-86%, B-: 80-82%, C+: 77-79%, C: 70-76%, D: 60-69%, F: 59% and below. In taking the course on a S / NC (pass-fail) basis, students must earn a C to receive Satisfactory credit.
Course Policies:
Each day we are covering material that builds on earlier material and assignments, so your success depends upon regular attendance and completing each assignment on time.
Due dates and why we need them:
Your daily homework for this course is time-sensitive! Coding assignments, response posts, and other homework exercises must be uploaded to Canvas (or GitHub or our web server as specified), by the due date and time indicated on the class schedule. Homework assignments will be posted online to our class website and linked from our schedule, so students who miss class are nevertheless expected to consult the schedule and submit assignments on time. Because we post and share answers to homework exercises after submission deadlines, we will usually not accept late homework submissions.
Attendance and Classroom Courtesy:
Attendance is about connecting, being part of our class community of coders. I expect your active presence and interaction with me and your classmates this semester, as we need to rely on each other in the classroom and online in our coding environemnts to learn and develop projects.
Our class is fast paced and requires that we all be making the best use we can of our in-person class sessions. Arriving late and leaving early (physically or remotely!) disrupts the important collective mental activity of class. So does in-class texting and checking your cell phone. During class time, I ask that you put mobile devices in Do Not Disturb mode. While class is in progress, talking disruptively, leaving the classroom, texting or using a cell phone or computer, reading a newspaper, or other distracting behavior will be actively discouraged.
Current Masking Guidance
The University strongly recommends face masks be worn indoors on campuses in counties designated by the CDC to have high COVID-19 Community Levels. Even on campuses in counties with low or medium COVID-19 Community Levels, the University encourages anyone who wishes to wear mask indoors on these campuses to continue to do so. Face masks are required in facilities providing health care and in other locations where required by law, including indoors at the College of Medicine, Penn State Health locations, University Health Services and other campus health care centers. Individuals are expected to review campus policies and procedures and local municipal ordinances related to COVID-19 mitigation. Per CDC guidance, individual municipalities, businesses and other organizations may set their own masking and physical distancing expectations.
Please do not attend our physical class if you are not feeling healthy! This is not the semester to suffer through a fever or chills heroically to attend class in person. Stay home, report symptoms, get tested. This applies to me as your professor as well as to you!
If you need to miss classes for health reasons, make arrangements with me and your peers to catch up. We will always be connected in some way on line (via chat and GitHub asynchronously) and we will find ways to keep you looped in.
Student (and Faculty) Health and Wellness Services
If any of us, you students or me, are feeling sick, with COVID or flu-like, or other serious ailments this semester, please contact the Behrend Student Health & Wellness Center at 814-898-6217. None of us can be sure what will happen with the COVID pandemic, and we are taking on a great risk this semester. Reporting in when you do not feel well is not shameful; it is responsible and important to protect yourself and our community.
Counseling Services
Many students at Penn State face personal challenges or have psychological needs that may interfere with their academic progress, social development, or emotional wellbeing. Seek help! The university offers a variety of confidential services to help you through difficult times, including individual and group counseling, crisis intervention, consultations, online chats, and mental health screenings. These services are provided by staff who welcome all students and embrace a philosophy respectful of clients’ cultural and religious backgrounds, and sensitive to differences in race, ability, gender identity and sexual orientation. Get started from the Behrend Personal Counseling Site: https://behrend.psu.edu/student-life/student-services/personal-counseling or visit the Personal Counseling Office in Reed Union Bldg. Rm 1: 814-898-6504.
Equity
Penn State takes great pride to foster a diverse and inclusive environment for students, faculty, and staff. Acts of intolerance, discrimination, or harassment due to age, ancestry, color, disability, gender, gender identity, national origin, race, religious belief, sexual orientation, or veteran status are not tolerated and can be reported through Educational Equity via the Report Bias webpage (http://equity.psu.edu/reportbias/).
E-mail:
Each student is issued a University email address (username@psu.edu) upon admission. This email address may be used by the University for official communication with students. Students are expected to read email sent to this account on a regular basis. Failure to read and react to University communications in a timely manner does not absolve the student from knowing and complying with the content of the communications. The University provides an email forwarding service that allows students to read their email via other service providers (e.g., Hotmail, AOL, Yahoo). Students who choose to forward their email from their psu.edu address to another address do so at their own risk. If email is lost as a result of forwarding, it does not absolve the student from responding to official communications sent to their University email address. To forward email sent to your University account, go to http://accounts.psu.edu, log into your account, click on Edit Forwarding Addresses, and follow the instructions on the page. Be sure to log out of your account when you have finished.
Academic Integrity
Penn State Erie, The Behrend College, puts a very high value on academic integrity, and violations are not tolerated. Academic integrity is the pursuit of scholarly activity in an open, honest and responsible manner. Academic integrity is a basic guiding principle for all academic activity at The Pennsylvania State University, and all members of the University community are expected to act in accordance with this principle. Consistent with this expectation, the University’s Code of Conduct states that all students should act with personal integrity; respect other students’ dignity, rights and property; and help create and maintain an environment in which all can succeed through the fruits of their efforts. Academic integrity includes a commitment by all members of the University community not to engage in or tolerate acts of falsification, misrepresentation or deception. Such acts of dishonesty violate the fundamental ethical principles of the University community and compromise the worth of work completed by others.” (Senate Policy 49-20 and G-9 Procedures (found at https://undergrad.psu.edu/aappm/G-9-academic-integrity.html). Any violation of academic integrity will receive academic and possibly disciplinary sanctions, including the possible awarding of an XF grade which is recorded on the transcript and states that failure of the course was due to an act of academic dishonesty. All acts of academic dishonesty are recorded so repeat offenders can be sanctioned accordingly. More information on academic integrity can be found at: https://behrend.psu.edu/academics/academic-services/academic-integrity-students.
Source Citation and Plagiarism: One goal of our course is to reflect on how best to cite sources in digital contexts. We will consider how and why such citations differ from documenting printed texts. We will also consider the ease and frequency with which digital texts and graphics are plagiarized on the worldwide web, and discuss how the omission of source citations detracts from the authority of a digital information resource. We expect you to practice mindful source citation, and plagiarism on your part will have very serious consequences.
Representing the voice of another individual as your own voice constitutes
plagiarism, however generous that person may be in helping
you with an
assignment. Turning in an assignment generated collectively under the name of a
single individual is considered plagiarism. When instructed to collaborate
on a project, project collaborators share collective authorship and should
identify themselves directly as a team. To avoid plagiarism, cite your
sources whenever you quote, paraphrase, or summarize material, or use digital
images from any outside source (including websites, articles, books, course
readings, Courseweb or GitHub postings, or someone else’s notes). When using the
“copy” and “paste” features as you read and research, be sure that you are
carefully marking that these passages are unprocessed from their source, so that
you know to process it later. Forgetting to do so not only produces sloppy work
but (whether you intended it or not) results in a false representation. As long as
you make a good faith and clear effort to cite your sources, you will not be
faulted for plagiarism, but your work will be penalized if citations are
inaccurate, unclear, or lack important information.
That said, the coding and digital development we do encourages collaboration, and for that reason we adopt our colleague David Birnbaum's Collaboration policy, since his course is very similar to ours. This policy specifies that students identify collaborators in a comment on submitted asignments and take care on projects that all students contribute equally (and no student is contributing excessively more than what everyone else has done). When joining a group homework session, always work on the assignment by yourself first so you can be an equal participant, and write up the assignment by yourself, after the session is over so you take care not to copy from the other students. While we want you to consult with each other, you are responsible for doing all your writing and coding by yourself, using your own words.
Disability Services:
This course could pose certain issues related to physical abilities. Please talk to me if you need help navigating the course or accessing our resources. In the case of documented disabilities, students must meet with the instructor to discuss their specific accommodations. In order to receive consideration for reasonable accommodations, you must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation: See documentation guidelines (http://equity.psu.edu/sdr/guidelines). If the documentation supports your request for reasonable accommodations, your campus disability services office will provide you with an accommodation letter. Please share this letter with your instructors and discuss the accommodations with them as early as possible. You must follow this process for every semester that you request accommodations. Penn State Behrend’s Disability Services Coordinator is Amy James (ajk7@psu.edu)
Career Services
Career Services prepares Penn State students to enter the workforce or graduate school through a variety of services. Career professionals will assist with resume and cover letter reviews, internship and job searches, interview prep and mock interviews, career fair prep, development of career competencies, and graduate school prep. Be sure to utilize Career Services for all of your career endeavors, start planning your career early! See the Career Services website at https://behrend.psu.edu/Academics/academic-services/acpc/career-resources and/or stop into their office which is located in Reed 125 during drop-in hours Monday-Friday, 12:00-4:00 p.m. You may also schedule an appointment through Starfish or call 814-898-6164.
LionHELP
LionHELP is a smartphone application, available for both iOS and Android, that you can download if you or someone you know may be facing a mental health emergency. This app provides information about the signs of a mental health crisis, how to talk to someone who may be in crisis, a guide to help refer someone to the appropriate resource, and a full list of resources available on campus. The app can be downloaded free of charge, and there is absolutely no tracking of any information. Please note that LionHELP is not a diagnostic tool and should not take the place of services provided by a licensed mental health professional.
Projects that inspire us:
- Obdurodon: where we learned what we can teach, and where we’re still learning.
- The Programming Historian (full collection of tutorials)
- Venice Time Machine: very ambitious, enormous project team of faculty and students to study and model a thousand years of Venice, digitizing "kilometers of archives."
- Map of Early Modern London
- Lord Byron and His Times: The very thoughtful stylistic design of this important project reproduces the style of nineteenth-century print and layout. The content makes many rare materials about Lord Byron’s social network searchable and connected to the web of linked open data.
- The Shelley-Godwin Archive: digitizes the manuscripts of Percy and Mary Shelley, and Mary Shelley’s parents, William Godwin and Mary Wollstonecraft—manuscripts often written in multiple hands. Provides an important study of the Frankenstein notebooks to demonstrate how much of a role Percy Shelley played in the writing of Frankenstein. The archive provides a good model of the use of TEI for manuscript encoding and of complex and multiple visualizations of manuscript texts.
- Voyant Tools: a text visualization, analysis, and play tool
- A Tour Through the Visualization Zoo
- Clay Shirky on Love, Internet Style (9 minutes of Youtube inspiration: on what lasts, and why community matters in our digital worlds.)
Previous versions of this course
- Fall 2020:
- Fall 2021: