These are big databases. Huge! Most people don’t even think about how they work behind the scenes. For a computer science student though they make great thought exercises. Take your average instant message software.
Obviously there is a database that tracks who ones contacts are. What happens when you log into the software. Probably some thing like this:
- Verifies username and password. Is the date encrypted? How is it passes safely?
- Changes your status to online.
- Checks the database for a list of your contacts and looks at the status of each of their records.
- Builds your initial display of contacts
These options (and there are probably others that people can think of) have pros and cons. What are they? How is performance different with each option? Which way scales best (works best for larger numbers of contacts?) There is a lot to discuss. I don’t know the answers but I’ll bet a discussion among several people would be instructive. Can you write a simulation? How would that work and how would you use it to test your theories?
What about Facebook? How might that database work? There you also have the fact that each item also has information about who can see it. How is friends of friends handled differently from just friends or from public? If you have 500 friends and each of them have 500 friends who many people can see an item? What about duplicates? Do duplicated play into things and if so how?
At the university level most computer science majors will take formal course work in databases. One, two or more courses. Most often we don’t have time for that in high school. In fact many times there isn’t time for more than a discussion of databases. It’s a reality. But I think that students can learn a lot from discussions of databases around data applications that they know and love. The technical issues are fascinating (well they are to me) but I also think that students can get value from discussion the ethical and social impact of database applications. Topics like encryption of data (passwords if nothing else) and how all this data is used are natural discussion points.
Privacy and the use of data for marketing purposes on Facebook is a huge topic among those people concerned with data privacy. Our students even aware of the issue? I think that a well educated CS student should at least be exposed to the issues. What do you think?