These are videos and brief assignments meant to serve as an NLP "module" appropriate for use in a high school setting, or as a first introduction to NLP for any audience with some prior programming exposure (ideally in either Java or Python).

Overview for instructors

Please see our Overview of the module for instructors (PDF) for an introduction to what this module is and how you might use it.

Questions? Please contact Greg Durrett;


Aggregated slides (PDF copy of the slides used in the videos below)

Videos (YouTube PlayList)

Title Video
Intro to ChatGPT and NLP
Machine Learning
Language Modeling
Mathematics of Language Modeling
Mathematics of Language Modeling (Advanced)

[OPTIONAL] This segment is optional and draws on some more advanced concepts from probability.

Exercise 0: Understanding Language Models
ChatGPT: The Basics
ChatGPT Part 2
How does ChatGPT know things?
Risks of Large Language Models
Future Risks of Large Language Models
Where to go next

Optional Programming Exercise

The following videos supplement the videos above by describing an optional programming exercise. Videos, code (two versions, Java and Python) and exercise instruction PDFs are linked below.

Instructions for using Follow the link to the below; make sure you choose the right language. These links can be sent to students. Your students should be able to create a free account if they don't already have one using their email addresses. Finally, students can click "Fork" in the upper-right. This will enable each student to make a copy of the code that they can modify.

To start with, the code should run but will throw an error because students haven't implemented it yet. Instructor solutions can be found in the .tgz files below.

Videos Materials
Bigram LM Code (Java) Code (tgz) | Java code in Replit
Bigram LM Code (Python) Code (tgz) | Python code in Replit
Querying the LM (Java) Exercise 1: Bigram LM (Java)
Querying the LM (Python) Exercise 1: Bigram LM (Python)