Skip to content
Switch branches/tags
Go to file


Failed to load latest commit information.
Latest commit message
Commit time

Introduction to Cultural Analytics & Python

Designed by Melanie Walsh // Powered by Jupyter Book

This repository hosts the course materials for "Introduction to Cultural Analytics: Data, Computation & Culture," an undergraduate course taught at Cornell in the spring of 2020 and 2021. It includes an online textbook designed for the class, Introduction to Cultural Analytics & Python, which demonstrates how Python can be used to study cultural materials such as song lyrics, short stories, newspaper articles, tweets, Reddit posts, and film screenplays.

Intro Cultural Analytics home page

Course website and textbook:

Jupyter Book Overview and Repository Structure

The Python package jupyter-book processes the Jupyter notebook files from this repository and outputs them as the publication-quality HTML files that generate the corresponding website.

The HTML files are currently hidden in this branch of the GitHub repository, but you can find them in the gh-pages branch.

Below I will briefly explain the structure of this repository and some important Jupyter Book features.

  • /book contains all the materials that generate the Jupyter Book
  • /binder contains materials that set up the virtual Binder environment for running Jupyter notebooks in the cloud

Configuration file

The configuration file /book/_config.yml is where I establish key features of the book, such as the title, logo, and whether users can open the Jupyter notebook files in the cloud.

Table of Contents file

The table of contents file /book/_toc.yml establishes the table of contents structure on the left-hand side of the web page.

To include a Markdown or Jupyter notebook file in the table of contents, you include the flag - file: followed by the file path without the file extension, as shown below:

- file: welcome

- part: How To
  - file: How-To-Interact-With-This-Book
    title: Interact With This Book

- part: The Course
  - file: course-schedule
    title: Course Schedule

  - file: syllabus
    title: Course Syllabus
- part: The Book
  - file: Command-Line/The-Command-Line

  - file: Python/Python
      - file: Python/Installation
      - file: Python/How-to-Use-Jupyter-Notebooks

If you want the title in the table of contents to be different from the title in the notebook, you can also specify a different title below the - file: flag. Finally, you can include section headers within the table of contents by using the - part flag or designate nested chapters by including chapters:.


The Jupyter notebook files can be found in directories named for chapters:


Data can be can be found in /book/data


Texts can be can be found in /book/texts

Custom CSS

Custom CSS styling can be found in /book/_static/custom.css (it's a bit messy at the moment, sorry)

How to Build and Publish Jupyter Book with GitHub Pages

  • Run jupyter-book build /book or jb build /book, where /book is the directory with your Jupyter notebook files

A fully-rendered HTML version of the book will be built in /book/_build/html/. You can push these HTML files to a GitHub pages website by pushing them to the gh-pages branch of a GitHub repository.

One easy way to push to the gh-pages branch is to install gh-import.

  • Run ghp-import -n -p -f book/_build/html

Learn More About Jupyter Book

You can learn more about Jupyter Book by exploring the documentation:


This course was inspired by a range of excellent course materials, including those by Lauren Klein, David Mimno, and Allison Parrish.


This book is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License. The code is licensed under a GNU General Public License v3.0.