CSP 301/601 Design Practices in Computer Science (Semester I 2008-2009)

This is a design course with focus on developing large software systems in teams. During the semester, you will be developing 3 software applications while working in groups of up to 4 students. The team members will be selected by the instructor (i.e., you do not have a choice as to who your team mates are!). There will be no scheduled lectures for this course; however, I will slot few regular meeting slots during which you can come and discuss with me any issues pertaining to this course. Following grading of assignment 1, we may meet to go through some of the working demonstrators developed by the students in the course. This course will be programming heavy, with significant emphasis on Web-based applications.

We will be using moodle for managing this course. The moodle page will come live when the first assignment is released. Assignments and instructions pertaining to the assignment, however, will be posted on this Web page.

This page provides information on the following:

Announcements

20/10/08: Please read through the submission and evaluation guidelines posted below for project 2.
04/10/08: Some of you are having issues downloading the Data Series software. Since we are short on time, I am going to give you a choice for project 2. You can either do project 2(a) which is the project related to the Data Series s/w, or do project 2(b) which will be posted shortly.
03/10/08: For assignment 2, please form your own group. Each group should have at least 2 members but cannot have more than 4 members. I will ask for group details next week, so please settle on the constituents of your group asap.
16/09/08: Assignment 2 is now available. Please have a look and think about it on your own. New groups will be created for this assignment. The new groups will be made public by Friday, 3 October 2008.
02/09/08: Assignment 1 submission deadline extension; the assignment is now due on Monday 15 September 2008 by midnight. This is the last and final extension for this assignment. Make sure you submit by this deadline. Submission guidelines will be made available later this week.
12/08/08: Please contact your group members asap; this is very very important. If for some reason, you are unable to contact your group member(s), do send me an email and also come and talk with me. You can find contact information of your group members on poorvi by following this link. If, for example, you are assigned a group member with entry number 2008MCSabcd, then the corresponding user id for this member would be "mcs08abcd". B.Tech's can use similar logic to find contact information of their group partners.
07/08/08: I will not be available in the afternoon of Friday, August 8th. If you need to catch me, come in the AM hours.
07/08/08: Group details are posted below. See Administrative details for details.
04/08/08: Please register yourself with Moodle (Design Practices in CS). We will use the online system for submitting and grading assignments.
04/08/08: A draft version of project 1 has been released. The task will be fine-tuned in the next few days; however, the core will not change. Read the description carefully and start thinking.
28/07/08: Course page goes live!

Administrative Information

Here you will find administrative information for the CSP 301.

Assignments

Project 1: An Online Service for Touring Incredible India

Every year, several million foreigners visit India to taste our rich cultural diversity, and experience first hand the beautiful blend of the ancient and modern day civilizations. In addition, millions of Indian travel from one corner to another, experiencing all the niceties of India. It is believed that tourism and related services will increase manifold in the years to come, and in the years to come contribute significantly to India's GDP.

Your task in this project is to build an online travel facilitation service. This online service will help travellers identify the places and sites they would like to visit, and also help them plan how they may undertake the planned visit. One aspect of your online service would be to leverage both Google Maps API and the Flickr API. You will use Google Maps to show the current location of the visitor, and highlight touring opportunities in nearby locations. For example, if the visitor is currently located in Delhi (or wishes to start her trip from Delhi), then you could highlight on the map of India nearby cities such as Agra, Jaipur, and Udaipur. When the user clicks on one of these cities, your service shows them interesting photographs (e.g., of historic monuments such as Taj Mahal) from Flickr, put together in some interesting format (e.g., as a slide show).

Clearly, there are many ways of providing this type of service, and therefore, I will leave some of the service choices upto your imagination. (Needless to say, creative design will enable you to win more points!) In the following, I will suggest some add-on services that you may consider providing:

Your primary deliverable for this is a working demonstrator. You will also produce a detailed document pertaining to various aspects of this project. It is important that you produce a very good document as a substantial portion of your grade will depend on the quality of your document. You should pay special attention to design choices and challenges encountered, and remember to discuss these in your document. For this project, you will find the following URLs useful:

Finally, some very important points concerning this project. First, you should carefully read the "Terms of Use" for Google Maps, Flickr API services, and any other service that you leverage. Do not violate the stated "Terms of Use". Second, make sure each member of the group contributes substantially to the project. I will ask each member to submit a note detailing their individual and group members contributions. I reserve the right to call any group or its member for an interview regarding the work submitted. Third, assignments in this course will be open ended. Use this as an opportunity to learn how to work in groups and how to think "outside the box". Last, but certainly no less important, DO NOT copy code from the Web or from your friends. If you use Online resources for your work, provide appropriate attribution. Plagiarism of any form will not be tolerated.

Submission and evaluation of Project 2 (Important)

The deadline for finishing assignment 2 is fast approaching. NO extensions will be given, so please plan accordingly. This time, you will deliver a CD/DVD of your work to the TAs; you do not have to submit anything on moodle or to me. The TAs will send out instructions regarding submission of this project and its evaluation. We will try to schedule the demos after 5 PM or on the weekends. Nonetheless, we need you to be flexible with scheduling of demos.

As mentioned above, your deliverable for the project is a CD/DVD which should allow seamless installation on a machine provided by us. We will provide you with a standard Windows machine or a standard Linux machine. Your software should install and run seamlessly on one of these machines. This is an important requirement of the submission and evaluation process. You will be graded on the seamlessness of the installation process, the usability of your software, and the enhancements you made. You will also be graded on the quality of your documentation. Please generate a good quality, well thought out design documentation; your document should be well written, and should read like a professional technical document. Also, provide easy to follow installation guidelines. Each group will be given no more than 1 hour to demo their work. The TAs will retain your DVD/CD.

Finally, note that I will be on paternity leave starting Tuesday, 22 October for a period of 2 weeks. I will sporadically be available on email but will not be available for one-on-one meetings. Do not email me for extensions. Do not send emails with last minute problems. There's only one week to the deadline, and at this point, you should be working on finishing your software and writing a high-quality design document.

Good luck and happy programming!

Project 2 a: A Cost-Effective, Secure Data Retention Appliance

More data will be created in the next few years than since the dawn of history. At the same time, new regulations are forcing organizations to retain data for extended periods of time. Many businesses are unprepared for this information explosion. The purpose of this project is to build a cost-effective, secure data retention appliance. The project will leverage and extend the open source DataSeries (http://tesla.hpl.hp.com/public_software) tool. In particular, the project will add an SQL interface to DataSeries, to facilitate simpler integration into existing environments. Encryption will also be added, to satisfy the "secure" requirement. The project will identify an interesting (public) data set, and conduct a performance evaluation of the final product. The project will also provide documentation on the various aspects of the project, and contribute their modifications to the open source community.

Tentatively, this assignment will be due on Friday, 31 October 2008. This assignment was suggested by Martin Arlitt, senior researcher at HP Labs, Palo Alto, USA.

Project 2 b: A Gaming Service

The objective of this project is to build a multi-player gaming service that creates the best possible user experience by combining a set of useful functionalities into a single Web interface. The focus of this project is on automating the integration of various gaming related services and their deployment on virtualized hardware infrastructures as opposed to developing a new gaming application. Students will work with an existing open-source multi-player game of their choice. They will also work on integrating entities such as VOIP-based messaging services, Instant Messaging services, and TWIKI pages of players to enhance the gaming experience. To further enhance the user experience, the students will investigate the suitability of Web 2.0 as an integrating mechanism. The team will also develop tools to automate the deployment of the gaming service. Specifically, one of the deliverables of the project will be a CD/DVD that contains a Xen Virtual Machine (VM) image of the service. The image should allow a system administrator to rapidly deploy the VM on any supported hardware platform. Furthermore, the students will also develop a synthetic gaming client application to demonstrate the service. Finally, to permit reuse of the automation techniques, the team will also produce detailed documentation relating to various aspects of the project.

Tentatively, this assignment will be due on Friday, 31 October 2008. This assignment was suggested by Martin Arlitt, senior researcher at HP Labs, Palo Alto, USA.