Programming II: Assignment
This is a summative assessment (it does count towards your final mark)
You must submit your assignment both via study space and your GIT account
Your assignment brief is to make a Desktop Application that helps users to manage their music collections more effectively. It should be written in Java, C++ or Objective C. The main body of teaching support will be for Java.
The exact set of functions performed by your Application is left up to you. Here are some examples functions that you may wish to consider:
– Listing all the music tracks contained in the user’s computer hard-drives and removable storage media
– Make a playlist of the user’s music, randomly selected from a particular genre to transfer onto a mobile device
– Compile a list of duplicate items, and albums with missing tracks, and perform file system operations to re-organise the items
– Allow the user to specify which music is most important to them, to allow selective backups
– Using web-services to locate additional information about the music stored on the user’shard drive and removable storage
– Make lists of music that you a user may want to acquire
– Compare two users’ music collections to show the similarities and differences
– Acoustic fingerprinting using Echoprint to identify tracks by an audio sample.
– Retrieving cover art for albums using Discogs or Cover Art Archive API’s.
– Using web services to locate information and store in ID3 tags.
– Getting a list of events an artist has played at using Last.fm and plotting locations on a map.
– Your programme may work with audio files (e.g. mp3), or playlist files (m3u) or other data to do something useful.
– Please DON’T commit any audio data to GIT – this will make your repository too big and slow
– A test data repository is available you can DOWNLOAD THE test-data.zip for use when not at the University. It represents two music collections, A and B, with some overlap.
Technology that you may consider using includes (but is not limited to):
– The Files and Paths packages to inspect and manipulate the file system
– Storage of data in either text, JSON or xml formats.
– A command line user interface that allows the user to get things done by issuing parameterised commands
– A graphical user interface that allows the user to access the functionality you provide with a mouse (and keyboard).
– Components that consume music meta-data web services, such as Music Brainz, Discogs,Decibel, 7Digital, Last.fm and the Echo Nest.
– Java Media Framework components for analysis of media files.
Marks will be assigned as follows:
User Stories: 15 marks
– Presentation of top level stories and also of smaller, specific stories, and a plan that
Describes what system functionality was attempted (and what was successful). Notes that
Describe the success of each development iteration, i.e. which stories were attempted, and
Which attempts were successful?
Evidence of Iterative Development: 35 marks
– A GIT log that shows iterative development in practice, i.e. evidence of at least three
Iterations regularly submitted throughout the development lifecycle that tackle selected
User stories, some continuity and evolution of code.
Test suites: 15 marks
– Unit Tests and / or functional tests for your application (and its components). Marks will be
Awarded to reflect the extent and effectiveness of the tests you provide. All test artifacts should be included, e.g. test files
Final Functionality achieved: 35 marks
– The User Stories you have completed, will be tried out, using your software, on a similar archive of music meta-data. Marks will be awarded on the quality, effectiveness and scope of your software.k1234