Nifty Assignments Info

Submissions for Nifty 2019 Nifty submissions now work through the regular SIGCSE submission pipeline. The content you need to submit is pretty simple - Make up a .zip as described below.

The Nifty Assignments project attempts to gather together great CS assignments to make their ideas and materials freely available for the CS-education community. This page gives some background on Nifty Assignments and explains how to apply for Nifty Assignments.

Feel free to email nifty-admin at (our new alias)

Where Did Nifty Assignments Come From?

At the SIGCSE conference, I would often see a neat assignment idea go by as a peripheral part of a talk. Knowing that great assignments are such a tricky and time-consuming part of putting together a course, it was natural to create a forum focused on the very practical problem of finding the best assignments within the CSE community and making their materials freely available.

What Makes A Nifty Assignment?

Over the years, Nifty Assignments have spanned quite a range. Nonetheless, here's my attempt to distill some of the features that make a Nifty Assignment...

These are just tendencies, not hard and fast rules, and there are great Nifty Assignments that go against one or more of them. All that really matters is that it's a great assignment that will be of interest to other instructors. Also, Nifty Assignments do not necessarily need to be large or complex. A project might just do one thing well, such as David Levine's Sorting Detective or Julie Zelenski's Quilt/Drawing program. They address a problem of interest to many courses, and their small focus makes them all the easier to adopt.

Nifty Assignment Materials

For each Nifty Assignment there is a short blurb in the bulletin, a 15 minute talk given at the SIG-CSE, and finally a web page, (available from that contains assignment material ready for study or adoption. For each assignment, there is material from the assignment itself -- things an instructor can use to study or adopt the assignment...

Not all of the above is required; sometimes there's just a handout, and that's enough for an interested instructor to get the idea. In general, we have not provided solution code on the site, although it may be available from each author. (Someday we could put together a more formal solution-code clearinghouse.)

For example, my 1999 assignment, Darwin's World, is pretty thin on material: just a handout, some data files, and some meta-writeup. My 2001 Assignment, Tetris, goes to the other extreme: there's starter and support code files, a handout, a sample application, an architectural overview, and a meta-writeup. Many of you may remember Julie Zelenski's 1999 assignment, the Random Sentence Generator, which has a hilarious online version (all of these nifty assignments are linked off

Meta Information

We collect meta-information about each assignment to help instructors understand where each assignment fits...

This information helps people sift through the many assignment. I want to do a better job of emphasizing meta information in the submissions. I think that people are so accustomed to writing up their assignments for students, it's hard to shift gears and add the information of interest to other instructors. To help things along, we're using the table format below to help call-out the meta information in a standard way. Here's an example using the old Random Sentence Generator assignment...

Summary Random Sentence Generator -- build a sort of grammar structure in memory -- lots of uses of pointers, collections, and hashing. Then use a simple recursion over that structure to generate random output.
A neat application of recursion and pointer-intensive data structures.
Appropriate for CS2 or a later course.
This is an intermediate to advanced assignment, taking 1 or 2 weeks for a CS2 student.
The great strength of this assignment is that the grammars and their output can be quite funny. Also, the data structure and the recursion are moderately complex but neat. Students like this assignment.
Some parsing is required to build the grammar, which is not that fun. Also, this is not a concise, focused pointer/recursion problem. It has more heft to it.
Requires and understanding of pointers, recursion, and enough sophistication to deal with a data structure with 2 or 3 layers to it. Works fine in many languages. Hashing may or may not be used. The data structure has a natural map/collection structure, so using library classes can make it easier.
Because there are quite a few collections in the RSG, we have used it as a nice driver for students to implement their own collection that is instantiated in several places to build the RSG.

How to Apply for Nifty Assignments

To apply for Nifty Assignments, we want to see a draft of what the web page for your assignment would look like. We're interested in the assignment and its materials, and the above meta information of what the assignment is good at and where it fits in the curriculum. To apply for Nifty Assignments, these things don't need to be in final form -- just roughed out enough that we can get good sense of the assignment. Or put another way, most of the judging is based on the assignment idea. That said of course a more polished package always looks better.

Put together a prototype version of what your Nifty Assignments web page would look like. Create a directory with your name and the name of the assignment (e.g. "Parlante-NameSurfer") containing an index.html that describes your assignment, its structure, how it works. (Naming note: avoid pun/misspelling type names for your project. You want a name such that when someond does a google search with a couple words they remember, they get your nifty page.) Please put the above meta-information table near the top of the index.html, and you can add more information below. Add supporting materials to the directory and link them from your index: handouts, sample applications, etc.. Please use relative links, so we can move the directory around and it all still works. It is not required that your directory be in final form to apply. The reviewers are evaluating the quality of the assignment itself and its applicability to the SIGCSE community, not the details of the presentation at this stage.

Create a .zip archive of your directory, and this is what you upload at the SIGCSE site. You should "Nifty" as one of the available categories. Reviewers are drawn from previous Nifty Assignments presenters.

If accepted, you will need to...

If you've got a nifty assignment, we'd love to hear from you!

Best regards,



Q: Does my assignment need to be a gigantic production?
A: No. Small ideas can work very nicely -- for example Julie Zelenski's Quilt or David Levine's Sort Detective. The gigantic assignments make spectacular demos, but small assignments are actually easier for other instructors to adopt.

Q: Do I need to have all the assignment materials done and in final form when I apply?
A: No. You want to have enough material in decent shape that the reviewers can evaluate the assignment. The reviewers focus on the quality of the assignment itself and its applicability to the CSE community, not the the details of the presentation at this stage. If your assignment is accepted, then you can start worrying.

Q: Is it required that this assignment has never been published before?
A: No. This is not a formal policy exactly; it's just what we've done. We have published assignments that had appeared in earlier CSE talks or papers. The justification being that we put the assignment before a wider audience and (compared to appearing as a side-point in a paper), we make the assignment files, handouts, etc. available in a uniform way. However, we do avoid publishing assignments that are too similar to previous Nifty assignments.

Q: Do I need to be a Nobel laureate like Julie Zelenski or a super-model like Owen Astrachan to apply for this?
A: No. Nifty Panelists are reassuringly ordinary academics. Their bizarre energy in the panel itself is due to the special Nifty Shakes we get at Starbucks. That, or something to do with Dan Garcia. Seriously, you just need to be an instructor who has given an assignment, where that assignment worked very well, and now you are ready to write it up and share it.

Nifty Assignments home, Nick Parlante home