The goal of the programming project is to gain hands-on experience with the concepts and technologies taught in this course. Because we believe that it is much more fun to develop own ideas than to implement pre-defined project assignments, we let you, in groups, define your own course-related project. With this freedom comes the responsibility of self-studying course topics, finding existing datasets, working out interesting and technically challenging use cases, and delivering creative software solutions.

This will involve the following steps:

  • By October 14th 11:59pm, each group should have submitted a 3 pages project proposal to the course CMS. Each proposal must follow the project and proposal guidelines outlined below.
  • We will read the proposals and either accept or reject proposals by October 21st. Rejected proposals must be revised within one week in close cooperation with the teaching assistants and course instructors. Implementation can start as soon as a project proposal has been accepted. Please consider our implementation guidelines.
  • In class on Tuesday, November 6th and Thursday, November 8th, each group should give a 5 min presentation about their project and preliminary results (presentation guidelines).
  • On December, 13th Dec. from 5pm-9pm each group will present their final results (presentation guidelines) in class. By that date the project must be finished. A 5 pages final report (see report guidelines) is to be sent to the course instructors by December, December 13th 11:59pm. For students who have scheduling conflicts during the final presentation time slot we will offer a make-up slot (you need to let us know by August, 31st).

Your project grades will contribute to your final grade with 45%, broken down as follows: your project proposal (10%), your mid-term project status presentation (10%), and the quality of your final presentations including demo of your system and final report (25%).

Project and Proposal Guidelines

The project result should be a web information system that exposes information on the Web in human- and machine-readable form. We don't want to restrain your creativity by imposing too many rules. However, to make sure that your project is related to this course, we ask you to consider the following project guidelines:

  • Your project idea must be novel and convincing. You cannot hand in some existing solutions from the Web or something you coded for other courses.
  • The result of your project must be a Web application.
  • This application must use at least one publicly available dataset from the Web. Here are some pointers to possible data sets.
  • The application must clean, process, organize, and structure the data as needed.
  • The application must have a Web-based user interface that generates some added value from the data for a web user (by combining data, by providing some interaction with the data (e.g. searches), by visualization of data, etc.).
  • The application must provide a RESTful API to the underlying structured dataset.
  • The application must either expose a Linked Data interface or provide structured data markup for its Web pages.

Your project proposal document should answer the following questions:

  • Which use case/problem are you addressing with your project?
  • Which datasets do you take as input? How do you transform them into a usable structure?
  • What is your planned solution and how is it different from existing solutions?
  • What is the estimated effort for this project (what tasks are involved, how much time do you expect to work on them) and how do you distribute work in your group?

Implementation Guidelines

You can use any programming language for implementing your project. Make sure that you explain your choice in your project proposal. We can offer support in design and software architecture issues. Finding bugs will be your responsibility and for solving common programming problems we strongly encourage you to make use of community-powered Q&A platforms such as stackoverflow or stackexchange.

Feel free to use some version control mechanism or platform for collaborative coding. Example platforms are github, Google code, or bitbucket

Report Guidelines

Your final report should extend your project proposal and be approximately 5 pages long. It should contain a short abstract (100-150 words) summarizing your work and answer the following questions:

  • What was the project motivation and which use cases did you implement?
  • Which dataset(s) did you use and how did you clean, process, organize, and structure them?
  • What does the technical architecture of your application look like?
  • How is your work related to the topics taught in this course?
  • How much effort did it take to implement the project and how did you distribute it in your group?
  • Which possible extension points do you see for your project?

Presentation Guidelines

During the semester you will have two possibilities to present your work: one intermediate presentation before Thanksgiving and one final presentation.

The guidelines for the intermediate presentation are:

    You have 5 min (strict!) to convince us and your fellow students that (i) your project idea is great, and (ii) that you are already working on it.

    Your presentation should cover the following points:

    • What is your project about?
    • Which datasets are you using and how do you get, use and possibly combine them?
    • What is the status of your work? If already available, you can show first designs or screenshots.
    • Are there any problems we need to discuss?

The guidelines for the final presentation are similar:

    You have 10 min (strict!) to present your project results.

    Your presentation should cover the following points:

    • What is your project about?
    • Which datasets did you finally use and how did you get and combine them?
    • A demo in which you show us your project results. This is the important part of this presentation.
    • What have you learned when implementing your project?

In software development things often go wrong, especially when someone else is watching or when it is the final demo for a class. We strongly encourage you to rely on screencasts instead of live-demos during your final presentation. There are plenty of tools available, Camtasia being one of them.

After the final presentations we will identify and reward the best student project of this year's course.