6.S063 Design for the Web: Languages and User Interfaces

↑ All assignments

Assignment 4

Due

Submitting your homework

We are going to use Github Classroom for this assignment. You need to have an account on GitHub and be logged in. Authorize Github Classroom here and accept the assignment, then follow the instructions there. Please follow the structure and naming of the starter repo, though you can add any additional files if you need them.

To submit the assignment, please visit Canvas and submit the URL to your final commit that you want us to grade. A commit URL looks like https://github.com/designftw/hw4-username/commit/b59f14ba05869b3067724aa6d2006667a54c8e7d. You can submit as many times as you want. This is important. Your homework is not submitted and is accruing slack hours until you do this!

To make sure your homework is graded correctly, please follow the following:

If you submit after the deadline, it will count towards your slack hours.

Exercise 1: Critiquing CSS Demos (20%)

In the second exercise of this assignment you will be creating an interactive demo of a CSS feature. Your demo will be graded based on its usability and how well it helps people understand or learn the CSS feature. As preparation for the second exercise we want you to find two pre existing demos of CSS Features and write a couple of sentences about how each one succeeds or fails with regards to usability and/or teaching the CSS feature. Remember the dimensions of usability we covered in class (Learnability, Efficiency, and Safety).

We've included a couple of CSS feature demos below which you can choose from, however feel free to find other demos on the web. For both of your write ups, include a link to the CSS feature demo you reviewed.

Your writeup in an index.html file in the css-demo-critique directory. Any other files your writeup needs (e.g. screenshots) should be in the same directory (or subdirectories) and URLs should be relative (but not root-relative).

Exercise 2: Making interactive CSS demos (80%)

As you may have noticed, CSS is much easier to learn with interactive demos. These demos can have interfaces that help you dynamically explore the design space. In this assignment you will make your own interactive demo for a small part of CSS. After the deadline, you can play with the demos your classmates made and learn from them!

First, sign up for a CSS feature you want to make a demo of in this spreadsheet (use your GitHub username). You can select up to two features and decide later on which one of the two you will make a demo of (please make sure to free up the other one when you know so that another student can use it). Then, use HTML, CSS, and VueJS to make an app that helps people interactively explore how this feature works and teaches them about it. It should be aimed at users who know CSS generally, but not this particular feature.

At a minimum, look up the CSS feature you chose using the MDN link(s) provided in the spreadsheet. However, you are strongly encouraged to do your own research, find where people struggle when learning this feature, and make your app so that it illustrates the pain points of learning this feature best.

Pick a CSS feature earlier rather than later: only up to 3 students can pick the same one, so if you leave it too late, you may find that all the ones you like are taken!

Feeling inspired from the demos above and you want to make a demo of a feature (or set of features) that is not in the spreadsheet? We love creativity and initiative! Contact us via Piazza and provided your idea has the right scope we're happy to add it!

Your assignment will be graded primarily on the usability of the interface you create. All three dimensions of usability matter here:

Certain features will involve different tradeoffs between learnability and efficiency.

To achieve that goal, your interface should:

Tips & caveats

Unsure if your demo achieves its desired goals? Get a classmate (who is working on a different CSS feature!) to use it and observe. Did they "get it" or were they confused? What did they struggle with?

A note on scope

Some of you will have broader features than others. E.g. linear-gradient() can be used in background too, that doesn't mean that the student who picks background needs to demo every possible gradient as well. Instead, the demo for background should focus on showcasing the different background parameters, with only basic control over the actual background-image, which is only one of background's many longhands.

Similarly, an app that demos text-shadow or box-shadow needs to provide a better shadow specification UI than an app that demos filter, of which drop-shadow() is only one of the many possible filters. Choose an appropriate level of depth that doesn't result in an overly complex demo. Be more liberal with breadth than depth. If there are shorthands in the CSS feature you picked, you need to make sure at least part of the functionality from every longhand is included in your demo.

Similarly, if each parameter accepts multiple units, you are not required to provide UI to set all of them, or for any possible range. That would likely just clutter your interface and obscure its goal. You may pick one or a few units that are reasonable and provide UI for that. If you do want to include all, think about how to do so usably.

If you want to broaden the scope of your demo, that's fine, as long as you cover all the functionality you would have covered without the broadening. E.g. if you have picked radial-gradient() but you want to make a general gradient generator that generates any type of gradient, that's fine, as long as it still demonstrates all parameters of radial-gradient() that you would have needed to demonstrate if you were only dealing with radial-gradient().

Examples in the wild

Exercise 1 contains a list of interactive CSS demos from around the Web.

You can likely find many for the CSS feature you picked by googling property names and/or values and "generator" or "demo". However, do note that most of these have usability issues and often the CSS they generate is very old too (a good rule of thumb: when you see -webkit-, -moz- etc prefixes, the code dates back to circa 2009-2015). Take a look so you can understand the problem you're trying to solve better, but not to imitate their UI decisions. Furthermore, not all of these have UIs that could be implemented without much custom JS.

Examples of CSS generators

And here are two examples of such demos, implemented with (Ma)Vue that we made for you, one for a value and one for a property, with some notes about how each attempts to make improvements over basic functionality.

hsl() colors
the filter property

Note that in the spreadsheet there are features that overlap with these. If you pick a feature for which we have provided a demo (or a very similar one, e.g. backdrop-filter instead of filter), you need to make sure you go a sufficiently different direction. Just turning in the provided demos with cosmetic changes will not earn you credit.

Your demo in an index.html file in the css-demo directory. Any other files your demo needs should be in the same directory (or subdirectories). URLs should be relative (but not root-relative).

Exercise N: HW4 feedback

Since this is a new class, we need your constructive feedback about every aspect of it: lectures, homeworks, labs etc.

Please fill in your feedback about HW4 in this form. You can edit it as many times as you like until the survey closes (48 hours after the homework deadline). Since this is part of your participation grade, it does not affect your slack hours, but failing to submit the form on time, could result in a lower participation grade.

← Assignment 3 Assignment 5 →