AI Camp Curriculum
This page provides resources for our NetsBlox-based AI summer camp curriculum. Over the course of this module, students are introduced to some of the earliest history of AI, a few "classical" AI algorithms, and finally some of the most recent breakthroughs in AI, such as the Large Language Models that power ChatGPT. However, we won't only be learning these topics: we'll be building many of them in NetsBlox!
This curriculum is based around group projects and group discussion, but could be completed individually if provided additional time. Some prior programming experience with NetsBlox is recommended. You may use any other NetsBlox curriculum as pre-work assignments prior to starting this module.
Materials
- Syllabus and Lesson Plan. Note that these documents were originally created for a 5-day camp and were restructured into the following 4-day plan.
- NetsBlox Extensions provide various new blocks for constructing some of the projects we use. Feel free to check them out!
- The official NetsBlox Documentation page provides information about some of the internet-based services we use in our AI projects.
- Slides for Day 1, Day 2, Day 3, and Day 4
Projects
- Ball-Balancing Reinforcement Learning Agent - In this project, we provide students a starter project that implements a reinforcement learning (RL) agent tasked with balancing a ball on a beam without letting it roll off either side. Students are challenged to come up with a "reward function" that quickly/efficiently teaches the RL agent what kinds of behaviors are good/bad in order to learn.
- Minecraft Maze Reinforcement Learning Agent - In this (more difficult) RL project, students must come up with a reward function that can teach a 2D character how to explore a maze and find diamonds. Students are encouraged to create reward functions that do not assume anything about the maze (i.e., the reward function should not include the distance to diamonds or any other information that a player should not be able to know).
- Turing Test Activity - In this project, students join a NetsBlox distributed chatroom and are randomly paired either with another student or with an instance of ChatGPT. Students are then put into a time- and round-based back and forth dialog and are tasked with determining whether the other person is a human or a computer. Obviously, students are instructed to not ask "gotcha" questions that are designed specifically to fool the AI based on local or privileged information (e.g., what time it is, where you are, what your name is, details about your appearance, etc.).
- Client Project
- Server Project - Note that whoever runs the server will need to have an OpenAI API key in order to use the OpenAI blocks provided by the extension. To add your key, use the puzzle-shaped Extensions menu near the top right of the NetsBlox editor. The API key is saved in local storage, so only do this on your personal computer!
Continued Learning
In this camp, we use the NetsBlox block-based programming environment in order to lower the barrier for entry to some of these traditionally more advanced topics that we covered. Although all of the topics we've mentioned can be done in NetsBlox (indeed, you can now open some of the projects we used and delve inside some of the provided custom blocks to see how it was done), it is unfortunately the case that most external machine learning and AI material uses other, more complex programming languages such as Python (sort of the de-facto AI programming language, among other wide-spread uses).
In order to help ease the transition from NetsBlox to Python, we have created a dedicated tool called PyBlox, which provides you the full power of Python but still with the familiar features of the block-based editor you have been using. Feel free to use this tool if you would like to make this transition.
Alternatively, if you would like to remain in NetsBlox for the time being, we have many other resources for delving into other topics such as robotics (including autonomy), interacting with phones (through code), and various internet-based topics such as distributed computing and multiplayer games (or shared applications in general). These and other resources can be found on various pages of this website.
AI Topic Exploration
- But what is a neural network?
- Gradient descent, how neural networks learn
- What is backpropagation really doing?
- Backpropagation calculus
- But what is a GPT? Visual intro to transformers
- Attention in transformers, visually explained
AI Coding in Python
- Q-Learning in Python (this is the algorithm we implemented for you in our RL projects)