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:
- a traditional website consisting of two or three pages (or more!) that delivers text and media related to a specific topic or event.
- a single web page that provides a service or an application. This will be a simplified version of what the industry calls a 'single page application', because all functionality will be delivered on the client, with no server-side component.
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
Size
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
Write Your Own Code
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. +
If you choose to refashion a site with existing content, start from scratch with your HTML and CSS. Make something better!
• Implement a tutoring application for a skill or a topic.
• Implement a game. +
A motion-based game might use
the Road to Lothlorien exercise
as a starting point.
A
Wordle-like
game could select words randomly from a built-in array of
words.
• Write the HTML, CSS, and JavaScript needed to create a slideshow as a web page. +
Use your template to create a small slideshow that you might otherwise write in Powerpoint or Keynote.
• Create a Mad Libs site. +
You could create an array of templates to be filled in with a few words or phrases. JavaScript could serve up a new upon request.
• Implement a quiz game similar to Kennections. +
This is a fun trivia game that requires some creativity to
design the themes.
The link takes you to a page for an example quiz. These
pages are a mess of ads and clutter. Scroll down to the
panel with a START button to play the game and see the
content, styling, and interaction. Your website could be
cleaner and easier to use!
• Implement a simple music app for your iTunes or other music library. +
I am obsessed with
this idea:
Recently I've started listening to my music library using
an app I call "an html file in the root directory of my music
library, which is regenerated using a shell script, consists
of a js searchable/sortable table of all the tracks, and
switches the content of an audio embed at the top".
Honestly, it's better than quite a few of the so-called apps
out there.
You could implement an even simpler version of the idea using
HTML, CSS, and JavaScript.
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:
-
Create a zip file named
project.zip
that contains all the files for your project. -
Submit your
project.zip
file using the course submission system.
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.