- Meeting a real need with their software can be a powerful motivator for students.
- Students learn to collaborate with potential users or clients in the process of completing the project.
- Needing to distribute software to real clients teaches students current software development tools and techniques.
- Assign a project to write and distribute software that can be used by others to perform a task or meet a need.
- Design the project to be completed in one semester.
- Publish the deliverables of the project so that users outside of your institution or class can download, use, and modify them.