UW-Madison
Computer Sciences Dept.

CS739 Spring 2009: Assignment 7 -- Chatting in Erlang with Persistence

Due: Friday, May 15 by 5:00 pm
Reading: Chapter 13 and/or 15 of Programming Erlang

For this assignment, you will extend your chat application from Assignment 6. (Though technically, you are free to go back to the original version of the chat application and ignore your previous extensions if you would like.) The idea of this assignment is to add some persistent data to the chat application; you can either use files (described in Chapter 13) or DETS, Disk Erlang term storage (desscribed in Chapter 15), whichever you think is most appropriate.

You should implement one of the following sets of extensions:

  • Add statistics that track the usage of the chat application over its lifetime installation. For example, how many users have chatted? How many times has each user chatted? Who has chatted with whom? What is the largest group that has ever chatted? How long is each (or the average) chat session? Choose about 5 different statistics that seem interesting to you. Displaying these statistics as a side panel in the I/O graphics widget probably makes the most sense.
  • Add the ability to record and playback conversations. For example, a user could type a command that starts the recording and a later command that stops the recording; the user or the service could pick the name to associate with this recording. In a later session, the user can then type a command to playback any previously recorded conversation. It is up to you to determine if the recording should only contain the messages from the initiating client or from all clients. You can decide how playback messages should look to everyone else.
  • Any other interesting functionality you can think of that uses either files or DETS and seems of comparable difficulty to the two extensions described above.

Turning in your assignment

Please copy your code to the directory ~cs739-1/Spring09/handin/[login]/P7 where [login] is your CS login name.

You can either:

  • In a README file, please briefly describe the extensions that you implemented and how you setup and run your chat server. Again, comment your code enough that someone can follow what you did.
  • Demo your chat server to me. Then, you don't have to provide any documentation.