Nifty Assignments Info
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.
Applications are due a little before the regular SIGCSE paper date.
For Nifty 2013, submissions are due Sep 4th.
Feel free to
email
Nick
Parlante if you have any questions (try to include "nifty" in the subject).
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...
- Nifty -- the Nifty Assignments often have a playful sort of "fun
factor"
to them. They are very visual, or they build a game, or they have
entertaining
output. The assignments invite the students to play around with the
material.
Of course we shouldn't regard this as a requirement. Not all CS fits
into
the "game with blinking lights" motif.
- Topical -- most Nifty Assignments fit into the curriculum and
difficulty
range that makes sense for most schools (typically CS0-CS2). This is
just
a practical bias, where we want to promote assignments that can work
for
the greatest number of students. Platform independence is also
desirable,
and we try to avoid dependencies on non-portable or non-standard
libraries. At present,
Java is a great language to make your Nifty Assignment adoptable by the
widest audience.
- Scalable -- many Nifty Assignments operate at two levels. First
and
most
importantly, there's the mainstream part of the assignment that is
nifty,
meaningful, and effective for the average student. Beyond that, many
Nifty
Assignments have an open-ended aspect where advanced students can take
the assignment beyond its original boundaries.
- Adoptable -- for an ideal Nifty Assignment, the author has put
together
materials that make the assignment easy for another instructor to
adopt:
handouts (.rtf, .doc, or .html formats), starter source code,
data
files, and other ancillary materials. Here again, platform
independence,
use of open, vendor-neutral languages, libraries, etc., is a plus. Although it
lacks glamor, I have grown to appreciate the value of high-quality
materials. It's easy to think of Tic-Tac-Toe or whatever as an
assignment, but there's a big gap between the idea and having all the
materials tested and ready to go.
In this way, Nifty Assignments can complete that last step for the community,
making the idea concretely available for the whole community.
- Inspirational and thought provoking -- sometimes a Nifty assignment is just thought provoking about what is possible in an assignment ... inspiring people to work out their own assignments more than being something a lot of people adopt.
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 20
minute talk given at the SIG-CSE, and finally a web page, (available
from
http://nifty.stanford.edu/)
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...
- The assignment handout (RTF or PDF or HTML)
- Sample data files
- Starter and support code files
- Model grading criteria
- A runnable demo application
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 http://nifty.stanford.edu/).
Meta Information
We collect meta-information about each assignment to help
instructors understand where each assignment fits...
- What is so great about this assignment?
- What niche/student is it suited for (CS1, CS2, advanced, easy,
...)?
- What does it teach?
- How hard is it?
- How long does it take?
- What does it depend on?
- What are its strengths and weaknesses?
- Are there any lessons on assignment craft in general that can be
drawn
from the assignment?
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.
|
Topics
|
A neat application of recursion
and pointer-intensive data structures.
|
Audience
|
Appropriate for CS2 or a later
course.
|
Difficulty
|
This is an intermediate to
advanced assignment, taking 1 or 2 weeks for a CS2 student.
|
Strengths
|
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.
|
Weaknesses
|
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.
|
Dependencies
|
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.
|
Variants
|
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 CSE
community, not the details of the presentation at this stage.
Create a .zip archive of your
directory
and
email it to nick.parlante@cs.stanford.edu
with 'nifty' in the subject line. I will email back a short
confirmation
that your application has been received within a couple days, and we
can deal with
any file snafus at that time. Applications are reviewed by previous
Nifty
Assignments presenters.
If accepted, you will need to...
- Finalize your assignment page and its various materials
- Prepare a very short blurb for the proceedings
- Attend SIG-CSE to give your talk at the panel session
- Your materials will be widely distributed for free on the web
(although
you may retain copyright), so you will need to be comfortable with that
If you've got a nifty assignment, we'd love to hear from you!
Best regards,
Nick
FAQ
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