Nifty Assignments

The Nifty Assignments session at the annual SIGCSE meeting is all about gathering and distributing great assignment ideas and their materials. For each assignment, the web pages linked below describe the assignment and provides materials — handouts, starter code, and so on.

Applying for Nifty is now done as its own track with a similar deadline to special sessions. The format and content of the .zip you submit is unchanged. See the info page for ideas about what makes a nifty assignment and how to apply for the Nifty session.

Please email any suggestions or comments to the nifty-admin email:

Nifty Assignments 2023
Rising Tides - Keith Schwarz CS2 - Recursive flood fill with real-world climate data.
Enigma Machine - Eric Roberts and Jed Rembold CS1 - Bring the Engima machine algorithm to life beautifully — code + CS History
Fatal Police Shootings - Melissa Lynn CS1 - Data science with Washington Post police-shooting dataset - code work with social impact.
Nifty Illusions - Faan Tone Liu CS1 - optical illusions make great little draw code exercises.
Hex Game - Andrew Godbout CS2 - Neat game algorithm fueled by graph algorithm, shows game/testing strategy
Musical Dice Game - Kevin Wayne CS1 - Mozart as an algorithm - a logical combination of a few steps and patterns and you won't believe how great it sounds.

Nifty Assignments 2022
Spelling Bee + Wordle - Eric Roberts, Jed Rembold CS1 Fantastic string-logic, now with Wordle
Food Web Zombies - Ben Stephenson and Jonathan Hudson CS1 Fun Graph Logic
Handwriting Recognizer - Stephanie Valentine CS1 Graphical handwriting recognition with templates
Bias Bars - Nick Bowman, Katie Creel, Juliette Woodrow CS1 Exploring bias in data, bringing ethics discussion into code
Reddit Bot - Mike Izbicki CS1-2 Code to interact with reddit threads
Ray Marching - Joshua Crotts, Andrew Matzureff CS1-2 Neat computational geometry

Nifty Assignments 2021
Sankey Diagrams - Ben Stephenson CS1 Sankey diagram - neat data visualization algorithm
Rocket Landing Simulator - Adrian A. de Freitas and Troy Weingart CS1 Rocket Landing Simulator - fun algorithm
Covid Simulator - Steve Bitner CS1-CS2 Covid 2D infection simulator - timely if scary
Linked List Labyrinth - Keith Schwarz CS2 Neat memory / debugger skill exercise, custom per student

Nifty Assignments 2020
Thanks to our presenters for getting everything together including videos for this COVID-interrupted year.
Typing Test - John DeNero et al CS1 Fill in algorithm of fun typing-speed test. (Video) (intentionally silent)
Color My World - Carl Albing CS1 or later: Students are given a data file, but no description about what it represents. Can they solve the mystery by generating a reasonable image?
Bar Chart Racer - Kevin Wayne CS1 - use real data to make a animated bar chart - captivating! (Video)
DNA - Brian Yu, David J. Malan CS1 or CS2 Neat DNA project. (Video)
Recursion to the Rescue - Keith Schwarz Nifty recursion projects using tied to real-world applications. (Video)
Decision Makers - Evan Peck Two hour exercise illuminating algorithms and life

Nifty Assignments 2019
Nifty Post It - Jeffrey L. Popyack CS0-CS1 Hands On Manipulative
Hawaiin Phonetic Generator - Kendall Bingham CS1 Fun Text
Motion Parallax - Ben Dicken CS1 Awesome Graphic Experience
Gerrymandering - Allison Obourn CS1-CS2 Election Data Analysis and Visualization
Code Crusher - Ben Stephenson CS1-CS2 Great Popular Game + Code
Blocky - Diane Horton and David Liu CS2 Recursion Tree Fabulous

Nifty Assignments 2018
Hurricane Tracker - Phil Ventura CS0/CS1 Art of Wind
Mondrian Art - Ben Stephenson CS1 Beautiful Recursion
Pong AI Tournament - Michael Guerzhoy CS1 Build Pong AI
Wiki Racer - Ali Malik CS2 Wiki Graph Race
Nifty Remixes - David Reed CS1/CS2 High Level Nifty
Bear Maps - Josh Hug (CS2) Bear Maps

Nifty Assignments 2017
Falling Sand - Dave Feinberg CS1 Very engaging falling simulation
2048 in Python - Kunal Mishra CS1 The fantastic 2048 game works great as a CS assignment
Fractal Sound - Josh Hug CS1 Amazing sound generation and visualization
SAT Synonyms - Michael Guerzhoy CS1-CS2 Fun big data application to the familiar SAT word problems
NBody Simulation - Kevin Wayne CS2 Captivating gravity simulation. Gravity .. it's everywhere!

Nifty Assignments 2016
Mountain Paths -- Baker Franke CS1 Neat simple algorithm in 2D arrays
Restaurant Recommendations Yelp Maps -- Brian Hou, Marvin Zhang, and John DeNero CS1 Nifty data visualization of restaurant data
Rack-O Game -- Arvind Bhusnurmath, Kristen Gee, and Karen Her CS1 Play and AI code for an easy game
Movie Review Sentiment -- Eric Manley and Timothy Urness CS1/CS2 Neat word analysis from a surprisingly simple algorithm
HugLife -- Josh Hug CS1/CS2 Grid simulation game that shows off testing
Autocomplete-me -- Kevin Wayne CS2 Neat applied use of word storage and binary search

Nifty Assignments 2015
Counting Squares -- Mark Sherriff, Luther Tychonievich, and Ryan Layer CS0/CS1 Neat and easy squares activity
Speed Reader -- Peter-Michael Osera CS1 Nifty Animation
GeoLocator -- Stuart Reges CS1 Fun Geo Data
Packet Sniffing -- Suzanne Matthews and David Raymond CS1 Eye Opening Networking
Melody Maker -- Allison Obourn and Marty Stepp CS1 Fun with Sound
Seam Carving -- Josh Hug CS1/CS2 Amazing Image Resize Trick

Nifty Assignments 2014
Analyzing Google Books Dataset -- Josh Hug CS1 Amazing Language Data in CS1
Game Of Sticks -- Antti Laaksonen and Arto Vihavainen CS1 Neat Game "AI" from shockingly simple trick
Purple America -- Kevin Wayne CS1 Big Map Data
Ants vs. SomeBees -- John DeNero, Tom Magrino, and Eric Tzeng CS1 Riff Plants vs. Zombies
Segregation Simulation -- Frank McCown CS1 Neat Real-World 2-d Modeling
Image Stacker and The Pesky Tourist -- John Nicholson CS2 Two very neat 2-d image manipulations

Nifty Assignments 2013
Twitter Trends -- John DeNero and Aditi Muralidharan CS0-CS1 Neat output with a hip big-data source
Collage -- Mark Guzdial CS0 Novel media output by combining images
Authorship Detection -- Michelle Craig CS1 Surprisingly effective data driven categorization with basic coding
Recursive TurtleGraphics -- Eric Roberts CS1 Get at the essential recursive idea very easily
Campus Shuttle -- David Malan CS1 Stunning graphical tour
Estimating Avogadro's Number -- Kevin Wayne CS1/CS2 Surprisingly easy image processing of lab data to get a real-world result

Nifty Assignments 2012
Stereo Sound Processing -- Daniel Zingaro CS1 (early) - Fun and impressive early in the quarter - remove vocals from sound
Guitar Heroine -- Kevin Wayne CS1/CS2, Extremely neat -- math model creates realistic guitar sound
Uno -- Stephen Davies CS1, Strategy AI to play Uno.
Image Editor -- Joshua T. Guerin and Debby Keen CS1/CS2 Code to experiment with images, but requiring only the ability to change text files.
Igel Ärgern -- Zachary Kurmas CS2 Hedgehogs in a Hurry game
Binary Bomb -- David O'Hallaron Post CS2 -- neat assignment puzzle to play with understanding of compiled code and memory as they truly are. On the linked page, see the README, Writeup, Release Notes, Self-Study Handout which all work without a password. To play with the code, email Dave and he'll send you what you need to get the binaries.

Nifty Assignments 2011
Image Puzzles -- Nick Parlante CS0 or later, great puzzles using images, tiny code required
BMP Puzzles -- David Malan CS1, More and better image puzzles, looking at bytes of BMP file representation
Book Recommendations -- Michelle Craig CS1, Like the Netflix movie-recommendation system, generate book recommendations. Surprisingly simple algorithms give a neat results.
Generic Scrolling Game -- Dave Feinberg CS1, Project pattern which supports a variety of games. Easily allows students to customize rules, graphics etc. of simple game.
Wator World -- Mike Scott CS1-CS2, Shark/fish simulation using GridWorld type abstraction. Neat simulation/modeling example working from simple rules.
Hamming Codes -- Stuart Hansen CS2, Neat exercise with a real algorithm. Push the students to understand that it's really all bytes.
Evil Hangman -- Keith Schwarz CS2 or late CS1 - Awesome variant of Hangman, where the computer cheats by dodging all the user's guesses

Nifty Assignments 2010
Picobot -- Zachary Dodds CS0-CS1, day-1 assignment -- neat environment to get students started, works in the browser
Pig -- Todd Neller CS1, intermediate difficulty game to implement, but students love it and lots of variations
Song Generator -- Daniel Zingaro CS1, implement filters with short bits of code, but it all works in the domain of sound, making in a novel and engaging domain for the students
CSI: Computer Science Investigation -- David Malan The instructor accidentally erases the compact flash card containing their images. Students write code to recover the images, solve the treasure hunt using the images
Encryption Chase -- Mark Sherriff CS2, encryption coding, embedded in a team active-learning campus treasure hunt
Chatting Aimlessly (IM) -- Thomas Murtagh CS1, implement simple instant messaging client in CS1 -- talk about a technology near to the student heart!

Nifty Assignments 2009
Star Map -- Karen Reid CS1, neat drawing of the night sky and constellations -- simple file reading and drawing
Face Pamphlet -- Mehran Sahami CS1, simple Facebook application built with just CS1 technology, students love it
Secrets In Images -- Brent Heeringa, Thomas Murtagh CS1, hide secret messages inside images -- neat image manipulation with data as simple arrays
Random Art -- Christopher A Stone CS1, build nifty images with recursive nested random symbolic math expressions (python)
Enigma Encryption -- Dave Reed CS1-CS21, range of easy to complex cryptography projects, using paper/manipulation model to get started
DNA Splicing -- Owen Astrachan CS2, surprisingly easy DNA manipulation, set up for the students to measure/experiment with their code

Nifty Assignments 2008
Catch Plagiarists -- Baker Franke CS1-CS2, typical CS2 data structures, difficulty can be adjusted. Search within a set of documents to find pairs with copied content
Genetic Algorithm TSP -- Raja Sooriamurthi CS1-CS2, basic genetic algorithms. Use genetic algorithms to solve the traveling salesman problem
Asteroids -- Dan Leyzberg, Art Simon CS1-CS2, objects, inheritance, abstract classes. An impressive implementation of Asteroids with OOP design and inheritance
Huffman Images -- Morgan McGuire, Tom Murtagh CS1(late) or CS2(early). Labs to explore huffman compression in the context of image bitmap manipulation
Maze Solver -- Don Blaheta CS2, stacks, queues, 2d arrays. Play around with algorithms to solve a maze. Works with gridworld
Dice Flip -- Cay Horstmann CS1-CS2, prolog for advanced CS2, java for late CS1 variant. Explore simple but subtle dice game

Nifty Assignments 2007
Media Manipulation -- John Cigas CS0-CS1, spreadsheet use or basic code. Transfer media data to spreadsheet form to make manipulation easy
ASCIImations -- Dave Reed CS0-CS2. ASCII animations make fun, creative output with surprisingly simple code (Javascript, Java, ...)
Mindreader -- Raja Sooriamurthi CS1, CS2. basic logic, map interface (arrays or Hashmaps). Build a surprisingly good computer opponent for a guessing game
Solitaire OOP -- Robert Noonan CS2, OOP and patterns to explore family of solitaire games
Sliding Blocks Puzzle -- Mike Clancy CS2, significant recursion and data structures. Recursive and heuristic work to solve the sliding blocks puzzle.
Fire -- Angela Shiflet CS2, 2-d arrays, simulation. Neat, real-world example simulating spread of fire across a terrain, depending on humidity etc.

Nifty Assignments 2006
Book Code (ISBN) -- John Motil CS1, basic logic to play with ISBN numbers. Fun because we are surrounded by these numbers .. use them for basic examples
Natural Prestidigitation -- Steve Wolfman CS1, basic logic, loops, arrays. Appears dull, but has a neat surprise ending.
Breakout -- Eric Roberts CS1, basic logic, loops using ACM graphics early in the term
Dancing Turtles -- Chris Nevison CS1, inheritance with dancing turtles and ACM graphics
Solitaire Encryption -- Lester I. McCann CS2, list manipulations, algorithmic code, file reading. Implements a very novel type of encryption.
Anagram Solver -- Stuart Reges CS2, recursive backtracking ... a very fun application of recursive search
RSS Reader -- Jerry Cain CS2, data structures, networking ... neat to implement a client for a real protocol

Nifty Assignments 2005
Test Me -- David Levine CS0-CS1, students write tests to examine black box code -- nifty and no code writing
Grid Plotter -- Alyce Brady and Pam Cutter CS1, neat way to learn and practice loop code
Complementary Currency -- Paul Kube CS1, OOP by creating a currency ... has a community/social aspect among the students
Name Surfer -- Nick Parlante CS1, loops, arrays, files. Graph baby name data for the last 100 years. Nifty because the data is nifty.
Photomosaics PPT (PDF version) -- Rich Pattis CS2, create image made of many little images .. but there is a patent on it
Image Lab -- Aaron Gordon CS2, framework to allow students to write filters on 2-d data and see them applied to images
  • Nifty Assignments 2004

  • Nifty Assignments 2003

  • Nifty Assignments 2002
  • Nifty Assignments 2001
  • Nifty Assignments 1999
  • Also of interest: The Stanford CS Education Library of free CS Education Materials, home of the Binky Pointer Video!