Utrecht University

Department of Information and Computing Sciences

INFOB2WT - Web technology

(Period III, 2016-2017)



Assignments

Assignment 1

Description

Develop a static website on the topic of your interest. It can be a website of your favourite team, movie, band, pet, book, etc. Use the Web-representation technologies discussed during the first three lectures (HTML5 and CSS3). The visual appeal of your design is welcomed but not required; yet, avoid deliberately repulsive color combinations. Your website is expected to present meaningful information about the topic. The pages should be bigger than a paragraph, but smaller than a book chapter.

Requirements

Your website must:

Maintain good coding style

Procedure

Academic integrity

The work should be done by and your peer only. You can rely on the support of teaching assistants and student assistants during the practicum time, but you are not allowed to use the code of other groups. It is also forbidden to use HTML generating services and programs. You are required to manually create both the HTML and the CSS code. You can use external sources for the content of your website, however, you must refer to them by linking and naming.

Assignment 2

Description

Develop a dynamic version of the website created in Assignment 1 using JavaScript. Use DOM methods, elements and events to interactively modify the content and appearance of your web-pages according to user actions. Use external JavaScript libraries (jQuery and jQuery UI) to speed up the development. Implement a contextual menu that allows the user to change the appearance of particular elements on your web-pages. Add a "Map" page to your website; use Google Map JavaScript API to create an interactive map, supply it with data relevant to the topic of your website (this can be the countries you visited and what age, the cities where your favourite teams played and with wich result, the places where your favourite band toured and with what audience, etc.). If you need to customize the markers, this tutorial can help. Add a "Plot" page to your website; use Flot library to implement an interactive plot, supply it with data relevant to the topic of your website. Implement a pseudo-comment interface on each page, where a user can add his nickname and a comment and they would be added to the webpage, use cookies to store the comments*. Beware of cookie requirements to allowed symbols; read about encodeURIComponent() and decodeURIComponent() functions.

*Please, be advised that such an arrangement contradicts well-accepted practices of using cookies and is merely intended to allow you demonstrate your knowledge of cookies manipulation.

Requirements

In addition to the requirements of Assignment 1, you need to ensure the following:

Maintain good coding style

In addition to the good coding style rules specified in Assignment 1

Procedure

Academic integrity

The work should be done by and your peer only. You can rely on the support of teaching assistants and student assistants during the practicum time, but you are not allowed to use the code of other groups. It is also forbidden to use HTML generating services and programs. You are required to manually create both the HTML and the CSS code. You can use external sources for the content of your website, however, you must refer to them by linking and naming.

Assignment 3

Introduction

In this assignment, you will need to build an interactive client-server application that implements the functionality of a shopping website. You can look at Amazon, eBay or www.marktplaats.nl for inspiration. The website should provide listing and descriptions of available products. Products can be browsed and searched, added and bought. A set of basic functions must be provided. Extra credits will be awarded for implementing additional features.

Functional Requirements

  1. Front-end for anonymous users (AU): an AU should be able to:
    • browse all products;
    • search for a product based on its title;
    • refine the browsed/searched products based on its category, manufacturer, seller and price
  2. Front-end for registered buyers (RB): a RB should be able to do everything that an AU can do, plus:
    • buy products;
    • look at the history of bought products;
    • edit his profile.
  3. Front for registered sellers: a RS should be able to do everything that a RB can do, plus:
    • add products;
    • look at the history of sold products;
    • look at the inventory of available products.

Adding a product would require a dedicated interface where a RS can name the product, indicate its manufacturer and price, load a photo of a product and indicate how many of these products she can sell, i.e. products should have counters.

Products should be listed in groups (e.g. 10 results per page). You can implement a pagination interface or a more button that loads more results. You can as well (but do not have to) implement different ordering options (by price, by name, etc.). If you do not implement ordering, order products by title.

Buying a product requires an “Are you sure?” confirmation. After which the purchase happens – you do not have to implement the follow up interface for paying and shipping options.

If a product is purchased:

If a product is added, it should:

You need to have products with various prices, various sellers (register at least 5 sellers), various manufacturers (at least 5), various categories (at least 15 organized as a tree of at least 3 levels). You need to add at least 30 products to populate the website.

User registration interface need to be implemented, where the user specifies her login, password, first and last name and e-mail address. A user can also indicate if she wants to become a seller, which opens up RS option for the user.

Technical requirements

You are expected to apply the core technologies that we have learnt during the course:

  1. HTML 5.0 and CSS 3.0 – follow the requirements specified in Assignment 1 to make sure your website represents its content according to the recent standards. Make sure W3C HTML5.0 and CSS3.0 validators do not generate any warnings.
  2. JavaScript and jQuery – your website must use JavaScript. The use of JQuery and JQueryUI is advised to facilitate GUI development.
  3. Node.JS (and its frameworks) – you need to implement the server side of your website with Node.JS. Usage of Node.JS frameworks (such as connect and express) is advised. You can use additional frameworks if you like.
  4. AJAX – you will need AJAX. One mandatory place to use it is for displaying products in groups per page. It is up to you to decide if you need to use it in other places.
  5. SQLite – products, users and their properties need to be stored in an SQLite database and access it with the Node.JS using sqlite3 module. When products are displayed, the information must come from databased. When new users and products are added, when products are purchased the database must be updated.
  6. You website should work on the last versions of Chrome and Firefox.
  7. Each HTML, CSS and JS file should have a comment at the top explaining the role and the functionality of the file and its structure. All JS methods and variables should have dedicated comments explaining their purpose
  8. Implement a logger that will record all HTTP requests to your websites

Extra Credit options

  1. Social Web features: To get an extra credit for the Social Web features, you need to implement ratings and comments. A user should be able to comment and rate purchased products. A dedicated interface should be available when a user browses her history of purchased products. For every product, an average rating should be computed and all comments together with user logins should be displayed.
  2. Semantic Web features: To get an extra credit for the Semantic Web features, you need to implement the RDF import/export service for RSs. The service should allow them to add batches of products with a single RDF file import and to export the entire list of available products as an RDF file. You will need to use the http://schema.org/Product vocabulary for serializing RDF.
  3. Adaptive Web features: To get an extra credit for the Adaptive Web features, you need to implement a simple version of the collaborative filtering recommender. A user should receive recommendations from the website based on the history of purchased/rated products and the corresponding histories of likeminded users.

Procedure and Submission

You complete this assignment as groups of 4(3) students. You have been notified to which group you belong and who else is in your group. If you do not know to which group you belong, contact me and Ivo immediately. Make sure to follow the instructions that Ivo sent you with regards to using your web-space and configuring your website at http://webtech.science.uu.nl/

When submitting, you need to zip your entire website including the HTML, CSS, client side JS and server side JS files, as well as the DB file and all the images. Add a readme.txt file containing the following:

Your entire site you must pack into a zip file. Take in the zip file a text document named readme.txt on. Put the following in this readme.txt file.

Deliver the zip file using the submit system by Apr. 10 (23:59). Do not wait to submit at the very last minute. Follow the academic integrity rules specified for assignment 1 and assignment 2.