Nifty Assignments Info

The Nifty Assignments project gathers 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 with your assignment.

Feel free to email questions to 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. The Nifty Assignments archive was thus born. Each year at the SIGCSE conference, the Nifty session presents a set of new additions to the archive.

How to Apply for Nifty Assignments

Do you have a great assignment you would like to share with other educators? We'd love to have you apply to Nifty!

The Nifty Assignments track is part of the annual SIGCSE Symposium. Proposals for assignments are submitted through the regular SIGCSE submission pipeline for consideration. Submissions will be considered in late summer/early fall 2019 for presentation at the SIGCSE 2020 Symposium.

The Nifty archive at has a web page for each accepted assignment. This web page introduces the assignment and links to the assignment materials ready for review or adoption by other educators. For your assignment to be considered, submit a draft version of the web page for your assignment along with zip of the assignment materials.

Reviewers for Nifty are drawn from the SIGCSE community, including many previous Nifty Assignments presenters.

What to submit: zip of assignment materials + web page

A submission consists of a directory of assignment materials and a web page to introduce the assignment and provide the metadata to reviewers and adopters.

Gather the materials from your assignment. Both student-facing and instructor-use materials may be appropriate. For example:

  • The assignment handout given to students (PDF or HTML)
  • Sample data files
  • Starter and support code files
  • Autograder tools and/or model grading rubric
  • Possibly a runnable demo application
  • Prepare a draft of the web page for your assignment, including the table of metadata described below. The purpose of the web page is to introduce the assignment to another educator.

    Organize your submission in a directory with your name and the name of the assignment (e.g. "parlante-namesurfer") and your web page as the index.html. (Naming note: avoid pun/misspelling type names for your project. You want a name such that when someone does a google search with a couple words they remember, they get your nifty page.) Please put the above metadata 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. That said of course a more polished package always looks better.

    Create a .zip archive of your directory. Upload this zip to the Nifty track at the SIGCSE site.

    The following table of metadata about your assignment should be included in your web page. This information is used by the reviewers to evaluate the proposal and by instructors considering adopting the assignment.

    Here's an example for the 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.

    For Acceptance: Final materials, SIGCSE presentation

    If your assignment is accepted, you will need to...

    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.


    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