Methods in Digital History II
History 8510: Methods in Digital History II is the second course in a sequence of digital methods courses for Digital History PhD students at Clemson University. While the first class focused on building foundational computational thinking skills and familiarity with the principles of turning primary sources into historical datasets for computational analysis, this class tackles a number of advanced topics and methods. Students will learn to create relational databases, implement OCR and AI-powered transcription workflows, apply computer vision and advanced text analysis techniques, and develop interactive web applications that serve as research tools for historical inquiry.
This course moves beyond R to demonstrate how computational thinking principles translate across programming languages. While some assignments will continue using R, students will also learn to apply the same core analytical concepts to other languages like Python and SQL. The syntax may change, but the fundamental computational thinking patterns remain consistent. Students will be aided by tools like GitHub CoPilot for coding syntax and troubleshooting when necessary, allowing them to focus on methodological understanding rather than getting stuck on technical syntax barriers.
Students will complete four mini assignments that apply these advanced methods to primary sources related to their research. For each assignment, they will conduct computational analysis and then write a 2-4 page paper discussing the method and its application to specific historical questions. The course continues to emphasize the core belief that history drives the digital, not the other way around. Through this approach, students develop both technical proficiency and critical evaluation skills necessary for integrating computational methods with traditional historical inquiry. Students will leave the class prepared for original research that leverages these advanced techniques to answer complex historical questions.
- Develop technical skills for advanced digital scholarship. Students will create relational databases, build processing pipelines, develop interactive web applications using Shiny, and maintain reproducible research practices through version control, preparing them for original research and dissertation work that leverages computational approaches.
- Evaluate and implement advanced digital methods. Students will critically assess and apply specialized techniques including database design, OCR/AI transcription, computer vision, named entity recognition, text reuse detection, topic modeling, and vector alignment to address specific historical research questions.
- Apply computational thinking principles across multiple programming environments. Students will demonstrate the ability to transfer core analytical concepts from R to other programming languages including Python and SQL, understanding that while syntax varies, fundamental computational logic remains consistent across platforms.
- Practice reproducible research and effective documentation. Students will create clear documentation of their computational processes, maintain reproducible workflows through GitHub, and effectively present their methodological choices and findings to scholarly audiences.
- Navigate AI technologies and their appropriate applications. Students will understand the broad spectrum of "artificial intelligence" technologies beyond large language models, evaluate when and where these methods might be appropriate for historical research, and maintain responsible AI usage policies that limit AI assistance to coding support while preserving scholarly integrity. See the courses AI policy for more information about AI for coding support.
Hardin Hall 004
- Anthony DeBarros, Practical SQL
- Hadley Wickham, Mastering Shiny
W01Aug 20Introductions, R in VS Code & R vs PythonIntroductions and syllabus overview; R in VS Code review; R vs Python overview.—›
Wed · Aug 20 — Introductions and syllabus overview · R in VS Code review · R vs Python overview
Readings, tutorials, or videos (to be completed before class)
- GitHub CoPilot in VS Code Documentation
- If you haven’t already, please download and install the following:
- Download Python. To check to see if its already installed on your machine type
which python3. Use the commands above to verify your installation worked. If you don’t have python installed, you can install it using homebrew (Mac OS only):brew install python3. Linux users can use their package manager to install python. Windows users should use the official installer from python.org. - Download (or update) R
- Download VS Code
- Sign up for GitHub Education which allows you access to the GitHub Copilot extension for VS Code for free.
- Download Python. To check to see if its already installed on your machine type
W02Aug 25–27Database design and relationshipsDesigning a relational database; Wed Tech Table.SchemaTech Table Qs›
Mon · Aug 25 — Database design and relationships
Readings, tutorials, or videos (to be completed before class)
- Read through Geek for Geeks, SQL Tutorial
- DeBarros, Practical Guide to SQL, Ch 1-8
- Install VS Code Extensions
- Search for: SQLite by alexcvzz
- Search for: SQLite Viewer by Florian Klampfer
Tech Table mini-assignment · Build a schema for a simple relational database
- Draft a schema for a relational database based on your own research and primary sources (preferred) or use one of the datasets in the DMData package. Note that if you are using a dataset from Digital Methods Data, you’ll need to load the dataset and then write it to disk in R first. If you are using a very large dataset, consider taking a random sample to make the dataset a bit more manageable for experimentation (50-100 rows).
- First, draft what you think an ideal set up would look like.
- Describe it to CoPilot and work to refine your set up and build a SQLite3 database.
- Ask CoPilot to create a Data Model Summary and Schema Diagram and write them to a ReadMe file.
- Be prepared to discuss in class on Wednesday. Please make a reasonable start on this assignment and we’ll troubleshoot and discuss if necessary in class.
- Keep notes about how you use CoPilot to refine your setup and post a 1 paragraph overview along with you tech table questions to slack.
Wed · Aug 27 — Tech Table
Due this week
- Wed · Aug 27 — Meaningful start on schema for relational database
- Wed · Aug 27 — Questions and paragraph overview of relational model (see above) to Slack by 10am
W03Sep 1–3Advanced SQL queries for historical analysisNo class Mon (Labor Day); advanced SQL queries Wed.SQL queries›
Mon · Sep 1 — No Class – Labor Day
Wed · Sep 3 — Advanced SQL queries for historical analysis
Readings, tutorials, or videos (to be completed before class)
- DeBarros, Practical Guide to SQL, Ch 9-20
Tech Table mini-assignment · Build SQL queries
- Using the relational database you built last week (Week 2), practice writing more complex SQL queries to explore your historical data in new ways.
- Write 3-5 SQL queries that go beyond basic SELECT statements. Choose from these techniques:
- using JOIN queries that connect multiple tables, Aggregate functions (COUNT, MAX, MIN, AVG) with GROUP BY, Filtering with conditions (WHERE clauses with AND/OR), or Sorting and limiting results (ORDER BY, LIMIT)
- Post each SQL statement to slack and describe what question you were trying to answer. Note any trouble you had.
- Since there is no tech table this week due to Labor Day, this tech table assignment and related questions are due Sep 10th.
Due this week
- Wed · Sep 10 — SQL queries mini-assignment and related questions (no Tech Table this week due to Labor Day)
W04Sep 8–10Flask web interface for database managementFlask interfaces; Wed Tech Table on SQL and Flask.Database ProjectFlask startTech Table Qs›
Mon · Sep 8 — Flask web interface for database management
Readings, tutorials, or videos (to be completed before class)
- Miguel Grinberg, The Flask Mega-Tutorial pts 1-4
- Real Python, Flask Project Tutorial
- Flask Documentation
Wed · Sep 10 — Tech Table: SQL and Flask review/troubleshooting
Project · Database Project & Analysis
- Create a relational database for your historical research project using SQLite with a minimum of 30 entries, at least one junction/lookup table, and demonstrate its utility by writing at least one query that addresses a specific historical question relevant to your research.
- Write a 2-4 page paper documenting your database structure, explaining the historical context and research questions that informed your design, and analyzing the results of your queries.
- Create a GitHub repository with clear documentation and code.
Due this week
- Wed · Sep 10 — Meaningful start on a Flask Interface
- Wed · Sep 10 — Questions to Slack by 10am
- Sun · Sep 21 — Database Project & Analysis, by 11:59pm
W05Sep 15–17OCR with TesseractTesseract OCR in R and Python; Wed Tech Table.Tech Table Qs›
Mon · Sep 15 — OCR with Tesseract
Readings, tutorials, or videos (to be completed before class)
- “Tesseract,” Wikipedia Entry.
- “Using the Tesseract OCR Engine in R,” CRAN Vignette.
- Documentation for “Pytesseract”
Wed · Sep 17 — Tech Table
Due this week
- Wed · Sep 17 — Questions to Slack by 10am
W06Sep 22–24Vision APIs for OCR & transcriptionOpenAI/Claude Vision API for OCR and transcription of historical documents; Wed Tech Table.Tech Table Qs›
Mon · Sep 22 — OpenAI/Claude Vision API for OCR and transcription of historical documents
Readings, tutorials, or videos (to be completed before class)
- Read: OpenAI GPT-4 Vision
- Read: Eileen Chen, Exploring OCR Tools with Two 19th Century Documents
- Mark Humphries, Practical AI for Historians (And the Arts): Part 1
Wed · Sep 24 — Tech Table
Due this week
- Wed · Sep 24 — Questions to Slack by 10am
W07Sep 29–Oct 1Work time & Tech TableNo class Mon — work on AI OCR and handwriting recognition; Wed Tech Table.OCR ProjectTech Table Qs›
Mon · Sep 29 — No Class - Work on AI OCR and Handwriting Recognition
Wed · Oct 1 — Tech Table
Project · OCR + AI Transcription Project & Analysis (20%)
- Using 5-10 pages of historical sources related to your research, create processing pipelines using both Tesseract OCR and AI-powered transcription services.
- In a 2-4 page analysis, compare and contrast these methods’ effectiveness with your specific source materials, discuss limitations unique to your documents, and propose strategies for improving transcription quality.
- You must obtain approval for your sources and AI prompts before beginning, document all code in a GitHub repository, and test at least two different AI models.
Due this week
- Wed · Oct 1 — Questions to Slack by 10am
- Sun · Oct 12 — OCR + AI Transcription Project & Analysis, by 11:59pm
W08Oct 6–8Computer vision & facial recognitionDistant viewing and computer vision; Wed Tech Table.Tech Table Qs›
Mon · Oct 6 — Computer vision & facial recognition
Readings, tutorials, or videos (to be completed before class)
- Taylor Arnold and Lauren Tilton, Distant Viewing: Computational Exploration of Digital Images (2023)
- Sarah Oberbichler, “Large-Scale Research with Historical Newspapers: A Turning Point through Generative AI”
Wed · Oct 8 — Tech Table
Due this week
- Wed · Oct 8 — Questions to Slack by 10am
W09Oct 13–15Named entity recognitionNo class Mon (Fall Break); named entity recognition Wed.—›
Mon · Oct 13 — No Class – Fall Break
Wed · Oct 15 — Named entity recognition
Readings, tutorials, or videos (to be completed before class)
- Cameron Blevins, “Space, Nation, and the Triumph of Region: A View of the World from Houston”, Journal of American History, Volume 101, Issue 1, June 2014, Pages 122–147, https://doi.org/10.1093/jahist/jau184
- Clément Besnier and William Mattingly, “Named-Entity Dataset for Medieval Latin, Middle High German and Old Norse” in Journal of Open Humanities Data, (2021).
- Torsten Hiltmann, Martin Droge et. al, “NER4all or Context is All You Need: Using LLMs for low-effort, high-performance NER on historical texts. A humanities informed approach,” arxiv.org
W10Oct 20–22Methods for tracking text reuseN-grams and shingling; Wed Tech Table.Tech Table Qs›
Mon · Oct 20 — Methods for tracking text reuse · N-grams and shingling
Readings, tutorials, or videos (to be completed before class)
- Lincoln Mullen, “Detecting Text Reuse in Nineteenth-Century Legal Documents,” March 11, 2015.
- Josh Catalano, “Digitally Analyzing the Uneven Ground: Language Borrowing Among Indian Treaties”, Current Research in Digital History, 2018.
- David Smith, Ryan Cordell, and Elizabeth Maddock Dillon, “Infectious Texts: Modeling Text Reuse in Nineteenth-Century Newspapers,” published in the Proceedings of the Workshop on Big Humanities (IEEE Computer Society Press, 2013).
Wed · Oct 22 — Tech Table
Due this week
- Wed · Oct 22 — Questions to Slack by 10am
W11Oct 27–29Sentence transformers for semantic similaritySemantic similarity and text reuse detection (catch up from last week); Wed Tech Table.Tech Table Qs›
Mon · Oct 27 — Sentence transformers for semantic similarity and text reuse detection (catch up from last week)
Wed · Oct 29 — Tech Table
Due this week
- Wed · Oct 29 — Questions to Slack by 10am
W12Nov 3–5Neural language models & semantic changeBERT Mon; temporal word embeddings and semantic change Wed.—›
Mon · Nov 3 — Neural language models with BERT
Readings, tutorials, or videos (to be completed before class)
- Ted Underwood, “Do Humanists Need BERT?”, July 15, 2019.
- Ted Underwood, “Mapping the latent spaces of culture: To understand why neural language models are dangerous (and fascinating), we need to approach them as models of culture.”, October 21, 2021.
- Transformer Models, Wikipedia
- BERT, Wikipedia
Wed · Nov 5 — Temporal word embeddings and semantic change
Readings, tutorials, or videos (to be completed before class)
- Sandeep Soni, Lauren F. Klein, Jacob Eisenstein, “Abolitionist Networks: Modeling Language Change in Nineteenth-Century Activist Newspapers,” Journal of Cultural Analytics 6, no. 1 (2021).
- William L. Hamilton, Jure Leskovec, Dan Jurafsky, “Diachronic Word Embeddings Reveal Statistical Laws of Semantic Change”, arXiv.org
W13Nov 10–12Tech Table & ShinyTech Table Mon; introduction to Shiny Wed.CV/Text ProjectTech Table Qs›
Mon · Nov 10 — Tech Table
Project · Computer Vision or Advanced Text Analysis Project & Analysis (20%)
- Select either computer vision or one advanced text analysis method (NER, text reuse detection, topic modeling, or vector alignment) and apply it to your historical sources.
- Write a 2-4 page analysis discussing your chosen method, the historical questions you investigated, your findings, and a critical assessment of this approach’s effectiveness for your research area.
- You must propose your method choice for approval and maintain appropriate dataset sizes for meaningful analysis.
Wed · Nov 12 — Shiny
Readings, tutorials, or videos (to be completed before class)
- Shiny Basics Tutorial
- Look at the gallery of examples on the Shiny Website. Be sure to view the code and the app.
- Hadley Wickham, Mastering Shiny, Introduction and Ch 1-6
Due this week
- Mon · Nov 10 — Questions to Slack by 10am
- Sun · Nov 16 — Computer Vision or Advanced Text Analysis Project & Analysis, by 11:59pm
W14Nov 17–19Flask web applications with PlotlyTech Table Mon; Flask web applications with Plotly visualizations Wed.Tech Table Qs›
Mon · Nov 17 — Tech Table
Wed · Nov 19 — Flask web applications with Plotly visualizations
Readings, tutorials, or videos (to be completed before class)
Due this week
- Mon · Nov 17 — Questions to Slack by 10am
W15Nov 24–26Work time & Thanksgiving BreakNo class Mon — work on your final visualization project; Thanksgiving Break Wed.—›
Mon · Nov 24 — No class - work on your final visualization project.
Wed · Nov 26 — Thanksgiving Break – No Class
W16Dec 1–3Flask styling, layout & hostingFlask styling, layout, and hosting options; Wed Tech Table.Visualization ProjectTech Table Qs›
Mon · Dec 1 — Flask styling, layout, and hosting options
Readings, tutorials, or videos (to be completed before class)
- TBD.
Wed · Dec 3 — Tech Table
Project · Visualization Project & Analysis (20%)
- Design and build either a Shiny (R) or Flask with Plotly (Python) web application that serves as a research tool for historical inquiry, whether visualizing analytical results, providing database interfaces, or offering other research functionality.
- Deploy your application online and write a 2-4 page paper introducing your visualization, explaining its research applications, demonstrating how it advances historical understanding through digital methods, and justifying your choice of framework (Shiny vs. Flask) based on your project goals and technical considerations.
- You must discuss your concept for approval before development and include user documentation.
Due this week
- Wed · Dec 3 — Questions to Slack by 10am
- Tue · Dec 9 — Visualization Project & Analysis, by 7pm
FINDec 9Final exam period · ShowcaseShowcase of data visualization apps and projects, 7–9pm.Final Reflection›
Tue · Dec 9, 7-9pm — Final Exam Period
Showcase of Data Visualization Apps and Projects.
Due this week
- Sun · Dec 14 — Final Reflection, by 11:59pm
Database Project & Analysis (20%) ›
OCR + AI Transcription Project & Analysis (20%) ›
Computer Vision or Advanced Text Analysis Project & Analysis (20%) ›
Visualization Project & Analysis (20%) ›
Participation and Failure Journal (10%) ›
Digital Methods Reflection (10%) ›
Grading scale ›
- A (94-100%))
- A- (93-90%)
- B+ (87-89%)
- B (84-86%)
- B- (80-83%)
- C+ (77-79%)
- C (74%-76%)
- C- (73-70%)
Required materials ›
- Anthony DeBarros, Practical SQL
- Hadley Wickham, Mastering Shiny
- OpenAI API Key - Please create a developer account and load at least $20 in so that we can experiment with the API for OCR and Image recognition.
- Optional Materials that May Be Helpful:
- Eric Matthes, Python Crash Course
Attendance and absence policy ›
Regular attendance and active participation are essential components of this class. Students are expected to attend all class sessions and engage meaningfully in discussions, activities, and collaborative work. Given the workshop-style nature of many class meetings and the importance of collaborative troubleshooting in the digital history process, your presence contributes not only to your own learning but to the success of your classmates’ projects as well.
If you must miss a class due to illness or other unavoidable circumstances, please notify the professor as soon as possible and make arrangements to catch up on any missed content or assignments. Frequent absences will negatively impact your participation grade and may hinder your ability to complete the course successfully.
Late work policy ›
Due to the technical nature of this course and the importance of maintaining consistent engagement with computational methods, it is essential that students keep up with the pace of coursework outlined in the schedule. Each assignment is designed to be reviewed and troubleshot during Tech Table sessions, where students can ask questions and work through technical challenges with peers and the instructor. Students who fall behind on assignments will miss these crucial opportunities to troubleshoot and develop fluency with each method. Given the pace of the course and the introduction of new methods each week, missing these collaborative problem-solving sessions can significantly hinder a student’s ability to master the technical skills necessary for advanced digital history work.
All assignments are due on the dates specified in the syllabus. Late submissions will result in a 10% grade deduction for each day the assignment is overdue. Assignments more than 7 days late will not be accepted. Given the scaffolded nature of this course, where each component builds upon the previous one, students must start early and work efficiently throughout the semester. Extensions may be granted only in exceptional circumstances and must be requested well in advance of the due date.
AI use policy ›
This course teaches advanced digital history methods involving R, Python, and other programming languages. You are encouraged to use AI tools (ChatGPT, Claude, Copilot, etc.) as coding assistants and learning coaches to help you debug code, troubleshoot errors, learn syntax and programming concepts, understand functions and methods, get assistance with code structure and optimization, and interpret error messages. However, you must maintain rigorous standards for their use and remember that you are the historian with domain expertise.
When using AI for coding assistance, you must understand every line of AI-generated code before submitting it, test and verify all AI-suggested solutions, and remain responsible for checking AI work for accuracy and appropriateness to your specific historical research context. You must stay the “historian in the loop,” making informed decisions about your research and code rather than blindly accepting AI suggestions. Use AI as a tool to enhance your learning and productivity, not as a crutch that prevents you from developing essential programming skills.
AI use is strictly prohibited for things like data analysis, interpretation of results, writing papers, reflections, or any written assignments, generating historical arguments or conclusions, or completing assignments without genuinely understanding the underlying processes and concepts. Any use of AI for analysis or written work will result in immediate failure of that assignment and potentially the class. Remember that per the Graduate Handbook’s minimum grade policy and the Graduate School’s probation policies, failing this course (defined as less than a C) may result in academic probation. It may also lead to the termination of your assistantship or dismissal from the program. You are the historian with specialized knowledge and critical thinking skills that cannot and should not be outsourced to AI systems.