CS130 Project 2b

(updated 9/26/2005)

Personalized Music Player

Due 12:45pm Friday, September 23, 2005

The purpose of this extension of the second project assignment is several-fold.  One primary goal is to give you the opportunity to complete a project assignment.  Additionally, you should be continuing to improve your Java coding skills, gain familiarity with your favorite development environment, and get used to working with CVS.

CVS Environment
First, you will want to setup a new CVS environment (as directed last week).  It is important that you change your CVSROOT to point to: /home/cs130exp/projects.  You should create a new (cvs) project for this assignment so that you can create new projects in the future for other assignments.  Use the CVS tutorial to help you with importing and adding files as you develop the rapid prototype.

Personalized Music DJ
For project 2b, you will need to integrate your code with a music player and add some additional functionality to what was required for Project 2.  Although we discussed in class that you should never reuse code from a rapid prototype, we might think of this as still working on the rapid prototype and since I want you to improve your Java coding skills, you may use whatever parts of your existing code you choose.

As further background on this project, and as an example of a final exam for this course, I am providing last year's final as well as an ideal solution submitted by Nicholas Burwell: architectural design, project plan, and training plan.  Note, your prototype is not required to implement all of the features discussed in the Final.  Work only on the requirements specified here and, where appropriate, in last week's assignment.

In addition to previous requirements:
2b.1. The user interface should also have a pause/resume button.  When a song is playing, clicking the pause button should pause the player.  When paused, pressing the play or resume button should restart the song from where it was.  It is ok if you want to make this a single button that toggles its label and function.
2b.2. Contrary to the previous requirements, the thumbs down button should interrupt the song and begin the next one.  (That is, from the user's perspective, the behavior of the thumbs down and the skip buttons are the same.)
2b.3.  I will provide a folder of songs.  Your prototype must process that folder and play the songs in that folder.  That is, if I provide fifteen songs, all fifteen must stand a chance of getting played.  Similarly, if I give you a folder with a hundred songs.
2b.4.  It would be desirable to support both mp3 and ogg song formats.  However, you may focus on a single format, provided that you inform me of your choice 48 hours prior to the deadline.

As you work on this project, be sure to use appropriate documentation in the code and informative log messages when committing changes in CVS.

Submission Instructions
You will not need to do anything special for submission.  At the deadline, I will checkout the the current code-base and test it.  (You will want to be sure all changes are committed to CVS.)