Throughout this course, we'll work with a number of different technologies to build different pieces of web applications. However, it can be de-motivating to build something to a specification, especially when you are learning something new and want to make something that has your own flavor. To give you a chance to play around with the technologies we're learning, this quarter one of your homework assignments will be to write one or more websites from scratch, entirely of your own design. Each week, there will be some requirements that you have to meet, but the requirements don't force you to have any particular content, layout, color scheme, feel, etc - you'll make that yourself.
The idea is that you spend around an hour each week. This should be ample time to meet the specified requirements for the week. If you find yourself spending much, much more than one or two hours per week, talk to your TA or the instructor, and we'll make sure that the time you spend in your creative project doesn't prevent you from getting other coursework done.
Each week you can decide if you want to build on one of your previous creative projects or start an entirely new one. Just make sure that you fulfill the requirements of the week (you don't need to meet the previous week's requirements).
If you don't have inspiration for your own project, one suggestion is to build a student portfolio. This is a type of online showcase of your work. You can link into art projects, papers that you are proud of, etc. At the end of the quarter, you'll be able to share this portfolio with, well, anyone with an Internet connection :) We'll provide some small amount of guidance as the quarter goes on as to how to use the tools we're learning to do something interesting in your student portfolio page. Again, to be clear, you are not required to work on a student portfolio - the website you are building is going to be entirely of your own design, and will be graded on the weekly requirements.
Purpose: To start thinking about the web and bring your creative side when doing so.
Requirements:
Submit a PDF file called "w0.pdf
" with responses to the following:
Requirements:
Submit a zip file called "cp1.zip
" (make sure this is saved as an actual
zip file) meeting the following requirements:
index.html
, and index.css
index.css
must be linked into index.html
to style the page
index.html
must have at least 10 different types of HTML
tags (any tag excluding <!DOCTYPE
, <html>
,
<head>
, and <body>
will qualify towards this count).
index.css
must have at least 5 different CSS selectorsindex.css
must apply at least 10 different CSS rules to
content in index.html
index.html
as well as at least one other
html page that is linked from index.html
. You must also have an associated
.css
stylesheet for your site that is used by your .html
files.
id
attribute to at least 3 different elements, and a
class
attribute to at least 7 different elements (not all 7 elements need
to have the same class, but at least 2 elements should share a class).
section p { ... }
, section > h2 { ... }
)
#unique { ... }
)
display: flex;
to make at least one flex-container, and apply
at least one flex property to the items in the container (flex-basis, flex-grow, etc).
cp2.zip
" containing your files to
the turn-in link provided. If you'd like to opt-in to a CP2 showcase, please submit
this survey!
Purpose: To practice adding interactivity to a web page using the DOM and event handlers in JavaScript.
.js
file, and use <script src="...">
to link it
into an HTML page. You should not have any JavaScript code in your HTML.
window.onload
listener as shown in lecture/section/lab.
document.getElementById
or document.querySelector
or
document.querySelectorAll
to select at least one element
in your HTML document and do something with it.
(Example: you can use it to get a value from a document object (DOM element),
or create additional HTML content and append it into the DOM, or modify
existing content in the DOM, or anything else with the object you've
selected.)
.js
file. Note your
window.onload
listener does not satisfy this requirement,
you must add at least one more.
cp3.zip
" containing your files to
the turn-in link provided. If you'd like to opt-in to a CP3 showcase (separate from CP2), please submit
this survey
(make sure you are logged into your UW account to access the survey)!
Purpose: To practice changing the DOM by adding/removing/appending
elements using JS in response to an event(s) and to update elements on the page using the
classList
to separate style from behavior.
index.html
that either meets the following
requirements or links to another HTML page(s) you submit that meet these requirements.
.js
code you use must use the module-global pattern (recall the
module-global template).
index.js
file linked to an HTML page that adds and removes DOM elements in
response to some event(s) (anything other than onload
). You must use document.createElement
,
element.appendChild
, and element.removeChild
each at least once
in your code in response to the event(s).
classList
of an element (add/remove a class that is
defined in a linked CSS file).
cp4.zip
" containing your files to
the turn-in link provided. If you'd like to opt-in to a CP4 showcase (separate from CP2
and CP3), please submit
this survey
(make sure you are logged into your UW account to access the survey)! Please make sure to
use absolute links to large media files (e.g. high-resolution photos) if possible to
reduce the size of your cp4.zip
.
Purpose: To explore different API's available on the web and use AJAX with them to fetch and process data on your website.
index.html
that either meets the following
requirements or links to another HTML page(s) you submit that meet these requirements.
.js
code you use must use the module-global pattern.index.js
file linked to an HTML page that makes a
request to a public API and processes the response to change the page in some way.
cp5.zip
" containing your files.
If you'd like to opt-in to a CP5 showcase, please submit
here! (remember
to please keep image files to a minimum to avoid large folder sizes)Purpose: To practice implementing your own JSON-based API in PHP and using it as a client in JavaScript.
index.html
page that links to a .js
file that
fetches JSON data from your PHP program and uses the response to display in some ways.
txt
files and directory contents, but
depending on your own interests and project focus, you can process
other files like .csv
, .gcode
(3D coordinate files for 3D Printing
models), .pdb
(protein code encodings), etc.
cp7.zip
" containing your files.
If you'd like to opt-in to a CP7 showcase, please submit
here! (remember
to please keep image files to a minimum to avoid large folder sizes. If you use any file
processing in your API, make sure to turn these files in as well)Purpose: To practice creating your own SQL table and querying it.
setup.sql
file with code that creates at least one table with at
least 3 different columns.
setup.sql
or in a PHP file, write two queries using the table(s):
source setup.sql
on Cloud9 should not result in any errors.
cp8.zip
" containing your files to
the turn-in link provided. If you'd like to opt-in to a CP8 showcase, please submit
this survey!
Purpose: To wrap up your creative project work with a final portfolio you can publish, showcasing your exploration of web programming throughout the quarter. You may also opt in to the final creative project showcase (no specific requirements this week for the showcase :)) We'll show how to publish your projects using your UW webspace next week!
feedback-notes.txt
file to your zip folder - this will help your TA know what kind of feedback you would find
most helpful for this final submission.
cp9.zip
" containing your files to
the turn-in link provided. Remember to try unzipping your files locally to check that they
were correctly zipped if you used Cloud9 to zip them. If you'd like to opt-in to a CP9 showcase, please submit
this survey!