One of the lessons that stuck with my from some workshops I took some years ago was that more interesting projects involved doing things that involve a lot of data. Doing something once can often be done manually more easily than writing code to do it. Doing that same thing 10,000 times on the other hand justifies writing code. For that reason I like to assign projects with lots of data.
A couple of examples.
- To learn about string handling I sometimes assign a project to calculate license numbers from names and birthdays. I prepared a data file of 20,000 names and birthdays for that one.
- Today I asked students to generate such a data file using a set of files I obtained from the US Census Bureau. It turns out that files listing popular first names (by year no less) and popular last names are available there. Students will randomly generate name combinations and birthdays.
- The third choice I gave students today was to count the occurrences of individual letters in a document. Project Gutenberg has some great data for that sort of project. Mark Twain’s “A Connecticut Yankee in King Arthur's Court” has over a half a million words. Plenty of data.
There is no shortage of large data sets on the Internet these days. (take a look at Big data sets available for free sometime) Computers are great at doing interesting things with data. A little interaction with students can help to determine the sorts of information they are interested in knowing about. That helps provide motivation for them as they work on projects.