Final Project

Completed project due Friday, December 13, by 11:59 PM

Goal

This project is a chance for you to apply what you have learned about HTML, CSS, and JavaScript this semester to a domain of your choice, a topic that interests you. Ideally, it is a creation worth adding to your portfolio, and something you feel is worth your effort — and fun, too.

Task

Choose a website that you would like to build. It can be either of these kinds of site:

If you choose to implement a traditional website: your project will likely be a "mini-library" of content—media and text—with different parts of the pages displayed based on user actions.

If you choose to implement a single page application: your project can use interaction to generate and reveal information. It could also be a game, in which case interaction may be a dominant mode of your work.

Scope

We have just completed ten weekly homework assignments, so you have a sense of the work required to complete the average assignment. This project should be roughly equivalent to three weeks of homework.

However, this project is not primarily about quantity of work. You will not be evaluated based on the number of lines of code you write or the number of web pages you build.

Content

Use what you have learned about HTML to define the content and structure of your project.

Use semantic elements that best communicate the structure of your pages. Use appropriate elements for any text or media on the page. Most useful sites will include some or all of images, links, lists, and tables. Links can be to local pages and to external sites.

A traditional web site will use a wide variety of HTML elements and attributes, whereas a single-page project may use a narrower selection targeted at user interaction.

Style

Use what you have learned about CSS to define the style and layout of your project.

A traditional web site will use a wide variety of CSS features for layout and presentation. A single-page project will still need a variety of features to present the information of the site or the interface of the application.

Interaction and Dynamic Behavior

Use what you have learned about JavaScript to add user interaction and dynamic behavior to your project.

There are no specific requirements for the amount of interactivity in your project. If you build a game, chances are there will be a greater variety of interactivity. If the project is a content-viewing application, there could be more content displayed in different ways in response to a variety of events.

You can also use JavaScript code to build elements for a web page from static data present in a script file. We saw examples of this kind of code in Sessions 23 (building a table of squares) and 24 (building a list of lists and a table of city data). Code could also select a random quote or image from an array defined in a file.

Projects with relatively little interactivity will likely have more, and a wider variety, of HTML and CSS.

Evaluation

As noted in the previous section, this project is not primarily about the quantity of work. Please create a web site or application that is worth showing to an audience and worth adding to your portfolio. You will be evaluated on the quality of the code you write and the care exhibited in the project.

Please write your own code. If you feel that you must use a snippet of code available online, please contact me in advance. If approved, you will able to use it as long as you acknowledge in your documentation that the code that is not yours. However, such code will generally not count toward your grade.

Validate your HTML and CSS

Validate all HTML files using the W3C Markup validator.

Validate all CSS files using the W3C CSS validator.

Fix any errors. If one of the validators flags code that seems valid, or if otherwise you have any questions about a validator's output for a page, please contact me. (On rare occasions, the validators set an unreaonable standard.)

Grading

The project is worth 10% of your final grade. Following are the relative weights of each criterion in the project grade:

Item Weight Comment
Overall creativity 20% represents CSS, JavaScript, or both
HTML 20% correctness; variety of elements; quality of code
CSS 30% correctness; complexity of styles; quality of code
JavaScript 30% correctness; complexity of functionality; quality of code

If you want to create a web site that you think deserves a different set of relative weights, feel free to contact me. We can discuss an alternate distribution.

Ideas

Ideally, this project creates a site that you want to build, something that interests you beyond this course. The topic can be professional or personal, serious or lighthearted, informational or interactive. Be creative.

If you would like some inspiration, here are a few ideas. Some of the ideas include more details in the footnotes.

• Build a professional website for yourself or your business.

• Build a fan site for a writer, artist, band, or film.

• Recreate or model a site of your choice from the open web. +

• Implement a tutoring application for a skill or a topic.

• Implement a game. +

• Write the HTML, CSS, and JavaScript needed to create a slideshow as a web page. +

• Create a Mad Libs site. +

• Implement a quiz game similar to Kennections. +

• Implement a simple music app for your iTunes or other music library. +

If you would like to discuss an idea with me, whether one of these or one of your own, feel free to reach out.

Deliverables

Proposal

By Friday, November 22, at 11:59 PM, submit a proposal describing the project you are doing. This can be as short as one paragraph that identifies the kind of web site you are building and lists a few ideas you have about the HTML, CSS, and JavaScript you plan to write.

Submit your proposal as a text file or a PDF file using the course submission system. If you have something more to submit, you may submit a zip file instead.

Project

The final project is due by the deadline at the beginning of this page. To submit your final project:

Include in your zip file any local image files you load into your web pages using relative URLs. You do not need to include images you load from other websites using absolute URLs.

For help creating a zip file, revisit these instructions.

After submitting, be sure to review the Uploading the following files page to be sure that your file was uploaded!

Reminder: You may replace a file you have already submitted or submit a new file up to the deadline by using the system again.