Rock Paper Scissors demo


In this assignment, beginning students have the opportunity to build 2 incredibly simple, fun Rock Paper Scissors projects. The first is a simple RPS simulator as one of the first coding projects they ever do. This project was built for a 40 hour workshop that covers 3 projects, with our previous Nifty project, 2048, bridging the gap. Then, the third project in the sequence, which is a natural extension of RPS, provides a high level introduction to concepts in Artificial Intelligence for beginning students in a fun, easy to grasp way.

Since these two projects are targeted towards CS0 and CS1 students and heavily interrelated, they ship together in the same repository and utilize the same autograder framework, though they have separate specs. The project includes skeleton code and plenty of hints to make sure students can get ‘unstuck’ and the comprehensive autograder ensures that their implementations are completely correct before moving on.

Example Methods

Here are a few examples of the type of methods the students would be responsible for understanding or implementing:

  • Project 0 — RPS
    • play_again: returns "True" if user wants to play again and "False" if not
    • determine_winner: determines the winner between the user and computer based on each of the players’ moves
  • Project 2 — AI Extensions
    • biased_strategy: has a single weighted move, equal split for other two
    • deterministic_strategy: repeats a pattern of moves
    • reflexive_strategy: Keeps track of all past opponent moves and adjusts weights/probability of playing each move

Abstraction Reference Guide

All 3 Nifty projects (RPS, 2048, and the AI Extensions) rely on a central principle of abstraction and this concept is reinforced throughout the set of projects. All 3 projects also include an “Abstraction Reference Guide” which helps students understand all provided and student-implemented functions. These also continue to strengthen the idea of creating abstraction barriers and allows the students to focus on the problem at hand, rather than be overwhelmed by the entire project.


Overall, the projects are applicable, interesting, and directly relevant to students while also building systems of increasing complexity that challenges your 10x student programmers while providing enough support to the rest of the class to help them push through problems. Teachers will find that they also don’t need to micromanage students’ code as they get instant feedback from comprehensive tests and grading is made easy with the provided autograder.

Assignment Materials

Project Resources

Extra Resources

Meta Information

Summary — Build one of the most timeless classical playground games using Python and a variety of key Computer Science concepts.

Topics: Various levels of exposure to large projects and abstraction, understanding/modeling/maintaining existing code, variables, loops, conditionals, functional programming, multidimensional arrays/lists, randomness and distributions, and terminal GUIs.

Audience CS0, CS1

RPS is a clearly CS0 assignment, meant to be a student’s first project ever in Computer Science. AI Extensions is a more difficult and conceptually challenging project that is closer to CS1 level. We recommend taking students through the trio of projects first described — RPS, 2048, and AI Extensions — as each project builds up each student’s engineering maturity and comfort with programming.

RPS is calibrated to take between 1-5 hours depending on student ability.

AI Extensions is calibrated to take 5-10 hours depending on student ability.


Specifically designed with complete beginners in mind, this project starts with plenty of hints and handholding for struggling students who have a tendency to get stuck.

When tested among HS students first learning Computer Science, the projects were reviewed very well for their teaching components and "cool factor" — the final products at the end of each project are incredibly relatable to students and they are excited because of how much they’re able to do within such a limited time frame in learning how to program.

One final strength is the customizability of the project to fit a particular skill level — the spec and starter code can be modified quite easily to artificially increase the difficulty of the project by providing less "handholding".

A comprehensive autograder and printable Python prep worksheets (with solutions) for concepts that show up in the project are included as well.


The project is relatively linear, though the level of synthesis required of students can be adapted. Students can be confused by distributions without help and/or prior preparation. There’s minimal discussion of OOP, with a lot of the things students are responsible for implementing, highly abstracted away.


RPS assumes knowledge of Python syntax and introductory concepts (print statements, comments, variables, data types, operators, conditionals, loops, functions, and optionally objects), but without mastery or even comfortability with them. It was tested with students that had ~10 hours of lecture/lab/homework who started as complete beginners coming into this project.

AI extensions builds on the knowledge and comfort students acquire after working through many more problems and the two aforementioned projects. We recommend they have closer to 30-40 hours of lecture/lab/homework coming into the project so that they’re more comfortable writing code from scratch and building agents. At that point, they likely also would have had adequate experience with debugging problems and that is a key skill the AI Extensions in particular help develop in students.


Can flex difficulty for CS1 students by turning Project 0 into a smaller and relatively simple engineering project and removing the starter code entirely.

AI Extensions contains 3 more optional challenges which challenge 3 different sets of programming skill:

  1. building a challenging, complex strategy with less handholding from the spec
  2. engineering an all-knowing simulator that “cheats” by looking at the User’s choice and beating it every time
  3. Learning about and utilizing memoization to make the predictive strategies much faster and more efficient
Each of these challenges taken alone would be a challenge for most CS1 students and the combination of the 3 should keep anyone who completes the projects early very occupied.

Contact Us

If you have any questions, feel free to email us at

To learn more about what we've been working on, check us out here.