Machine Learning / Artificial Intelligence
Course Highlights
This course introduces students to the technological and philosophical foundations of the AI revolution. The course is 1/3 philosophy and ethics, 1/3 programming, and 1/3 software engineering practices. As the course progresses, students are encouraged to use ChatBots to help them produce code and understand new ideas more quickly. At each step, students then reflect on their experience to see if the ChatBot added to, or detracted from their learning.
The class is designed to mold around the current AP curriculum. The reason for this is that many students in the class will take the AP class the year after taking this class and many students in the class have already taken the AP class. By focusing on philosophy, ethics, and Software Engineering, students of all abilities are exposed to new and challenging content.
Years Taught
Main Links
Course Units
Unit 00: Foundations of Intelligence

In this unit, we explore the technical and philosophical roots of AI. We first talk about how most problems can be thought of as a form of search. Then we talk about (and demonstrate) the original Turing Test and what its strengths/ weaknesses are. After this, students do a quick “skills assessment”. On the last day of the assessment, students are encouraged to use a ChatBot to aid them. This leads to a final discussion about the role of ChatBots for learners.
Keywords
Search Space, Turing Test, ChatBots, Learning, Python
Resources
Unit 01: SDE Boot Camp
In this unit, students are exposed to the core technologies that enforce good engineering practices. They learn to use the terminal, git, and deploy projects that utilize CI/CD. The point of this is not to turn them into experts, but to expose them to the power of these tools that, should they choose, will allow them to scale their knowledge in future classes. Throughout the rest of the year, they will be returning to these tools again and again, reinforcing their understanding.
Keywords
Types, Terminal, Git, Markdown, CI/CD, Testing
Resources
Unit 02: Introduction to Data Science
In this unit, students get to programming. In particular, they learn to use Python to represent different types of data visually via the matplotlib library. In the process, students use the Monte Carlo method to find the area of a circle experimentally, see how difficult it is to create a truly random series of numbers, and examine old texts to see how language changes over time. In the process, students learn how good data can lead to interesting conclusions while bad data can lead them astray.
Keywords
Matplotlib, Graphing, Randomness, Monte Carlo, CSV Parsing
Resources
- Slides
- Funny Graphs Worksheet
- Monte Carlo Method Worksheets
- Class Randomness Worksheets
- Plotting the Classics Worksheets (based on inferentialthinking.com course)
Unit 03: Lists, Sets, and Maps
In this unit, students learn about the power of Python’s built-in data structures. In particular, they learn about the properties that the core data structures share and what makes them unique. From this foundation, students start to visualize different ways to link and traverse data. They come to understand how to build graphs and use them to represent FSMs and Markov Chains. The end result is the creation of a simplistic ChatBot that highlights how data and program combine to create an interesting result.
Keywords
Data Structures, JSON, Manufactoria, Finite State Machines, Markov Chains, N-Grams
Resources
- Slides
- Nerd Dice Worksheets
- Text Analysis Worksheets
- Emoji Pics Worksheets
- Markov Models Worksheets
- Ouroboros Worksheet
Unit 04: Learning Machines
In this unit, students are given the basic vocabulary, concepts, and experiences required to understand how ML is used in the “real world”. Then, students will use this ML terminology to accurately discuss and critique their own learning experience. In particular, students will read and discuss various aspects of teaching/learning such as the purpose of grades and how humans learn best. The unit culminates with students creating their own lesson plan for a three class unit on debugging with references to best practices for both machine and human learning.
Keywords
Learning Types, Classifiers, Decision Trees, Weka, PRIMM, Teaching Methods, Abstraction
Resources
Unit 05: Bayesian Learning
In this unit, students will develop simple “Bayesian Deciders” (not to be confused with Bayesian Classifiers, which are a bit too complex for the median student). They will investigate this by playing the game Skull, creating a simple, text-based Black Jack game, and analyzing cancer data. The overall point of the unit is to have students appreciate how you can make better predictions about the future if you use past data that reflects your current situation.
Keywords
Bayes Theorem, NamedTuples, Blackjack, Skull, Interfaces, Refactoring
Resources
- Slides
- Bayesian Probability Worksheet
- Basic Blackjack Worksheet
- Blackjack Bot Worksheet
- Bayesian Blackjack Worksheet
- Cancer Decider Worksheet
Unit 06: App Development 1
In this unit, students begin with a debugging “murder mystery” to practice reading unfamiliar code, then build Pong in groups with escalating checkpoints. Along the way, they learn advanced git workflows (branching, merging, remotes) needed for multi-developer collaboration. This unit is scaffolded practice for the open-ended capstone in Unit 08 — students learn to work in groups, manage shared code, and iterate on a codebase before they’re asked to do it without guardrails.
Keywords
Debugging, Vibe Coding, Pygame, Git Branching, Pair Programming
Resources
Unit 07: AI in Society
This unit sits between the two app development units intentionally: students should think critically about what they’re building before they’re given full autonomy to build it. Students read Ted Chiang’s “ChatGPT is a Blurry JPEG of the Web”, explore red teaming via OpenAI’s system card, and debate the trolley problem in the context of autonomous vehicles. They discuss the importance of originality, what a super-intelligence might look like, and what happens when there’s misalignment between what humans want and what an AI is pursuing. The unit culminates with a research paper on the OpenAI board/CEO power struggle. The goal is for students to develop their own informed position on AI’s role in society — not to arrive at a predetermined answer, but to practice reasoning carefully about tradeoffs that don’t have clean solutions.
Keywords
P-Doom, Red Teaming, Trolley Problem, Paperclip Maximizer, AI Safety, Ethics
Resources
Unit 08: App Development 2
In this unit, students pitch, plan, and build a capstone group project of their choosing. They go through a full development cycle: elevator pitch, group planning (using AI to generate implementation plans), and extended work days. This is the most open-ended unit in the course and serves as the culminating assessment for the year.
Keywords
Capstone, Elevator Pitch, Planning, AI-Assisted Development, Group Projects
Resources
Unit 09: Wrapup
The course ends with a viewing and discussion of the film “Her” (2013), which ties together themes from the entire year: the nature of intelligence, human-AI relationships, and what it means to form a connection with a non-human. Students reflect on how their understanding of AI has evolved over the course via an exit questionnaire. This unit is intentionally low-pressure — after the intensity of the capstone, students need space to step back and consider what they’ve learned. The film serves as a mirror: students who began the year asking “what is AI?” now watch a story about that question and bring a full year of technical and philosophical context to the discussion.
Keywords
Film, Consciousness, Human-AI Relationships, Reflection
Resources
Course Threads
These themes recur across units and tie the course together:
- Search as a Metaphor — Most problems can be framed as searching a space for a solution. From battleship to decision trees to Bayesian narrowing to prompting a ChatBot, students repeatedly encounter the question: how do we efficiently find what we’re looking for?
- Data → Model → Decision — Students collect data, build models from it (Markov chains, classifiers, Bayesian deciders), and use those models to make predictions. Each unit adds sophistication to this pipeline.
- ChatBots as Tools and Objects of Study — Every unit engages with ChatBots differently: defining them, building one, using them as coding assistants, critiquing their societal role, and relying on them for capstone work.
- The Feeling of Learning — The course treats metacognition as a first-class objective. Students predict quiz grades, reflect on AI usage habits, study how humans learn, and design lessons for others.
- Scaffolding That Fades — Problem sets come in structured/unstructured pairs. AI access is toggled on and off. The course deliberately reduces support as students gain confidence.
- Engineering Discipline — Code reviews, TIL entries, git, CI/CD, testing, and types recur in every unit as habits to reinforce rather than content to teach once.
- Philosophy Interleaved with Programming — Every technical unit is paired with readings and discussions that ask “what does this mean?” The programming never exists without the philosophical question.
- Meeting Students Where They Are — The course serves students ranging from post-Intro-to-CS sophomores to post-AP seniors. Pair programming, skill-level worksheet selection (structured vs. unstructured), and flexible AI access let students of different abilities engage with the same material at different depths.