Name:Jordan Fonseka
Student Number: 10637217
A good grounding in fundamentals like (X)HTML and CSS based website design.
Prior experience in creating simple web sites.
Skills in using graphic creation and editing software (photoshop, illustrator etc) familiarity with HTML editing software (dreamweaver) etc.
Very limited exposure to server side technologies such as PHP and SQL.
I have experience with java and javascript, but my coding skills are very average.
The opportunity to learn some new skills which will be genuinely useful in my day to day work and experiment in a risk free environment.
Choosing a project that is too ambitious or complex for the given timeframe and consequently not completing that project goal.
I have a bad habit of getting too focused on small details. The most obvious example for a project such as this would be spending too much time on designing interface and graphics when my interest is back end scripting.
PHP is my main focus followed by SQL. And, if time allows, I will attempt to learn and implement some AJAX style functionality. However, I am considering this last item a 'bonus' goal and it's likely that it will not be possible in the given timeframe.
I want to dive into technologies and develop skills which are practical and I can transfer directly into my day to day work. To be very specific, I'm currently involved in rolling out an open source content management system called Drupal to drive my employer's website. (Drupal is in fact used on the DMT website: www.dmt-uts.net, see also: www.drupal.org). Drupal is quite powerful 'out of the box' but for serious customisation it's essential to posses a knowledge of the underlying technologies.
Drupal is written entirely in PHP. Custom 'modules' may be appended to the Drupal core to extend functionality. My primary goal is to get acquainted with PHP. Additionally, for the last couple of versions of Drupal have incorporated a javascript library called JQuery (http://jquery.com). If I implement the AJAX portion of the project I will use JQuery to handle the AJAX routines in my own application.
Drupal is also a database driven CMS, specifically MySQL. My secondary goal is learning more about SQL databases and database design.
I will attempt to create a web application which acts as a support or subscription tool by distributing files to users on request. Depending on the level of access users have they will be able to request files and be provided with download links by a web page.
I am choosing not to work directly with Drupal because Drupal provides a level of abstraction through it's (php) API and handles a lot of the database manipulation automatically. I think I can learn more by creating my own custom web app.
One possible scenario for this application would be a music subscription service which provides users with audio files related to interests they specified when creating an account. By using this model I will be able to include a wide range of categories in my database with which to match files and users. For example genres, year of publication, bitrate/quality (anything in an ID3 tag really) and so on. I will also have a ready collection of files to use in my application.
To realise the application I will need to create a facility to allow users to register and create a unique username/password combination, as well as a stored profile which gives an indication of what files the user will be interested in.
I will need to devise a security strategy to handle login and registration processes. My application will also be required to send email as part of a verification process or password retrieval process. I will need to access stored files on the server and have the ability to provide unique links to each (possibly based on a session token) to ensure the user is not able to simply post a static file link elsewhere (such as on a message board).
I will also need to create an interface for administrator level users to upload and 'tag' files for appropriate distribution amongst registered users.
The pages will be quite plain visually so that I can concentrate my efforts can be the back end.
From an end user point of view there will not be a great deal of substance in the final result - just a couple of pages dealing with login and download, however I think there are enough concepts involved to make the project worthwhile as far as my learning objectives go. For example, security, file upload and download, sending email via php, database management and design and so on. The focus is squarely on PHP and SQL, and there are range of realistic functions which will easily transfer to 'real world' projects.
Keeping in mind what I listed under 'threats' (see above) I think the scope is probably about right for what will end up being about 10 weeks of work, especially when the only other subject I'm taking this semester is Database Fundamentals (31271) which deals almost entirely with SQL and ought to make things go a lot smoother for me in that respect. If I find things progressing well I can add AJAX functionality and have the entire web app operate from within a single web page and add in more administrator functions such as modifying other user permissions via the webpage.
Flow chart illustrating how I imagine a user might navigate through this web page/app. This may be modified at a later date as the project evolves..

Hunter Dunlap, Issac. Open Source Database Driven Web development, Chandros Publishing, 2006 Oxford UK
Mannino, Michael V. Database design application development and administration Third edition, McGraw Hill Irwin, 2007 New York.
Coggeshall, John. PHP 5 Unleashed , Sams Publishing 2004 USA
Henderson, Cal, Building Scalable Web Sites O'Reilly Media, Inc. 2006 USA
W3Schools Online Web Tutorials www.w3schools.com/
http://www.opensourcetutorials.com/tutorials/Server-Side-Coding/PHP/
http://www.builderau.com.au/program/php/