S511
Tech Foundations of Net-enabled Organizations

* Home  * Description  * Overview  * Schedule *
* Projects  * Grades  * Discussions *


S511 Project Descriptions

For this year, teams will choose one of two projects, each of which have different types of challenges. You need to decide on what interests you the most, and select one of the projects. You should decide on the projects in a team and sign up for one of the projects by the deadline of Nov 10, 2004. The projects must be finished and turned in by the final's week, with a project open house scheduled during the dead week. All the projects described here would require you to do the following tasks:

  1. Resarch and document the resources necessary to create this system.
  2. Put together a design of the system (including web design, database design, and class design if any). The design should have documentation on each of the components you are planning to develop.
  3. Prepare a prototype of each of the webforms and classes, and create the database tables as needed.
  4. Complete the application with a top down design - drill down to the details as time permits.

Since we have only about six weeks, I have a weekly schedule for the project. Make sure you meet at least once each week, and plan the week's objectives as a team, and one of you must ensure that all the objectives are fulfilled. As you would see, the objectives aren't much, but falling behind will cause you unnecessary load at the end of the course.

Week 1 (Nov 8-14): Project selection, Research and Documentation of research
Week 2 (Nov 15-21): Design of system, including forms, database and classes
Week 3 (Nov 22-28): (Thanksgiving week - classes do not meet) - finalizing design, starting work on prototyping.
Week 4 (Nov 29-Dec 5): Finish Prototyping - prepare for Project open house on Dec 8. Project does not have to be complete by Dec 8, but you should be able to show other students in the class how you approached the problem and thought about its solution.
Week 5 (Dec 6-10): Dead week. Dec 8 is the project open house. No presentations need to be prepared. Simply show and tell with your designs and current versions of prototype.
Week 6 (Dec 11-15): Wrap up - finish up the incomplete code and documentation and submit. Final submission Date: Dec 15.

Project Choice 1: XML search engine

In this project, you need to develop a rudimentary search engine for XML documents. You are going to allow people to "load" documents into the search engine, at which point you will need to process the documents using any method you find suitable, to either dump the data into a backend database, or in some kind of file storage that would then allow the users to run queries against the documents. This project will give you the experience of incorporating both the things we learnt in the first half of the course and what we are doing now with developing applications.

Challenges that need to be resolved for this project:

  1. Loading the documents. You are welcome to try a generalized search engine for many XML documents, but start with the simplifying assumption that the searches will always be on one document, which means you will be able to upload a document (or ask for a URL) and process the document from the file uploaded or the URL provided. Once the document is retrieved, you will need to load your database with the data present in the document. You may ask for the user's assistance with this process, by asking for which parts of the documents are searchable. You will need to decide on a user interface that would represent your thought process for coming up with a solution to this problem, and use this user interface to load the data into your repository, either in a database (recommended) or in the file system.
  2. User interface for querying You want to make sure that the user interface is as intuitive as possible for the user. Ask the user for the file or URL to upload, then possibly select the tags/regions that he/she needs to search on, and then display an interface that allows users to perform the search, and finally, something that shows the results of the search
  3. Translating the user specified search into a query for your repository: Whatever the user specifies in your search interface, will now need to be converted into a query and run against the backend database. This translation process is one of the biggest challenges in this project.

Complexity Variations

  1. Base level. To start with, create an interface that allows users to upload just one file in a known schema, create a static user interface for searches and perform the searches. For example, create a static user interface for searching the Bosac Shakespeare Collection. The user can upload one of the plays into your system, which can then be searched using your search interface.
  2. Challenge level 1. Change the complexity then to dynamically generate the search interface based on input from the user regarding which tags can be searched.
  3. Challenge level 2. Then allow multiple documents from the same schema to be uploaded and searched. A new document uploaded will not clear the database but will add to what has already been uploaded.
  4. Challenge level 3. You can make your searches intelligent by using an ontology (a set of pre-defined relations and associations that can be derived from the data). The allow queries using these associations. If any of the teams want to achieve this challenge level, I would be happy to point you to papers that have such techniques.

Project Choice 2: Scheduling

This is one of my personal favorites. Here the task for you is to schedule several presentation sessions with a number of presenters into a schedule with times and rooms where presentations are to be scheduled. You will be provided with the data that contains information on the rooms and the time slots, and also data about the sessions and included presentations. You will need to use automatic as well as manual methods to create and update the schedule.

Challenges in this project

  1. Developing a user interface that makes it simple for administrators to generate, and subsequently modify the generated schedule, as well as view the schedule in some logical form (e.g., by day, as a calendar, etc.)
  2. Developing a method using which the sessions get scheduled, ensuring that the same session is not scheduled in two different timeslots, as well as each timeslot does not have more than a set maximum number of sessions.
  3. Ensuring that if two sessions are scheduled in the same time slot, the same presenter does not belong to both these sessions.
  4. Generating different views of the schedule, e.g., by type of sessions, by presenter, etc.

Levels of complexity

  1. Base level: At this level all processing is user-driven. Everything happens through the user interface that allows users to create and modify schedules.
  2. Challenge 1 - automatic random scheduling: At this level, you will automatically generate timeslots for presentations, using a random method. However, you will still need to ensure that one presenter is not scheuled in two concurrent sessions, and you adhere to the generic constraints regarding the number of presentations per time slot and so forth.
  3. Challenge 2- Preferred times: Usually early morning or late in the day presentations are not very popular. At this level you will need to ensure that you schedule the most popular presentations (presentations that receive preferences from moost people) are scheduled during the preferred timespots.
  4. Challenge 3- rating-based-scheduling You can use a "rating" based scheduling where ratings are available for all presentations. This rating data can also be used to schedule the presentations, by placing the most highly rated presentations to the preferred timespots.

Those of you interested in working on this project, here is the DDL (data description language) with all create table statements, create index statements that builds the database. It does not have the data - once you create the database, I can export the data to your servers directly from mine.

Scheduling DDL file

To create the database, you will need to do something like:

osql -S bl-uits-clark -E -i scheduling-ddl.sql -o scheduling-ddl.out

Then look in the scheduling-ddl.out file to see if any errors were generated.

If necessary, I can give you an algorithm that ensures the criteria in Challenge levels 2 and 3.