The "CS1Dollars" Assignment

Meta-information

Summary Students build parts of a client-server infrastructure to create a "complementary currency" (in the sense of Lietaer). This "CS1Dollars" currency is then used by the students themselves. The assignment can touch on lots of standard modern CS1 topics; what makes it nifty is the use of the assignment to build community in the classroom, something that's often missing in introductory computer science courses. With any luck, the noncompetitive, collaborative nature of the complementary currency idea might help a bit with retention of women and disadvantaged students.
Topics

Classes, objects, composition, inheritance and polymorphism, string processing, client-server architectures, security...
Audience
Object-oriented CS1
Difficulty
Difficulty is adjustable, depending on how much students implement vs. how much is provided.  We have done it as two week-long assignments, the third and fourth assignments in a 10-week CS1 course.
Strengths
A community-building twist on the typical "bank account" OO CS1 assignment
Weaknesses
The community-building aspects may require a critical mass of students; it works best in large (>100 student) classes
Dependencies
Conceptually, not much: students should be familiar with variables, methods, basic control structures.   To implement the server side of the system, the instructor needs to be able to run a persistent process listening on a port.
Variants
The overall system is nice and modular, so you can pull out different components for students to implement.  You can even get serious about the networked client/server security issues for a more advanced course.

Supporting materials

We have done this assignment as the the third and fourth assignments in a 10-week Java-based CS1 course.  The third assignment is the first in which students define their own classes and create instances of them; the fourth assignment introduces inheritance as students extend classes they wrote in the previous assignment.

READMEs for the assigments are here: 
README for programming assignment #3
README for programming assignment #4

Some source code (maybe buggy) is here:
source code file directory


Paul Kube
Jefferson Ng

Last modified: Wed Sep 8 16:14:25 PDT 2004

Extra info about this assignment: