Collaborative work. This assignment involves a step for which we particularly encourage (but do not require) collaboration. So before you start, we recommend you find a partner or group to work with.

Overview

Context. In the prior assignment, you conducted needfinding for your application and identified some promising application ideas. In this assignment, you’ll take some initial steps toward turning these ideas into a concrete application, focusing on coming up with potential features. In the next assignment, you’ll do a detailed design, which you’ll implement in subsequent assignments.

Divergent and convergent design. First, you’ll brainstorm a large number of ideas for potential features. This is often called “divergent design” because the goal is to go in many directions and come up with many potential options. Then you’ll make a start on “convergent design” (to be continued in the next assignment) by organizing some of these features into concepts (modular pieces of functionality) and recording dependencies between them, implicitly defining possible subsets of functionality.

Exploring values. As part of your brainstorming process, you’ll explore the social and ethical values of your emerging application design by applying some value-sensitive design prompts. The purpose is not just to set boundaries or restrictions on your design, but also to suggest new design possibilities.

Sketching and outlining concepts. Many (or even most) concepts are familiar or obvious, but a novel application will usually include some innovative concepts that call for more explanation. At this stage of design, a very lightweight form of explanation is desirable, and will consist of a concept outline (comprising just the purpose of the concept and its operational principle, a scenario illustrating how it works) and a user interface sketch.

Purposes. In summary, the purposes of this assignment are to give you practice with the following skills: (a) brainstorming to turn vague ideas from needfinding into a list of potential features; (b) applying value-sensitive design to bring a social/ethical perspective to your design, suggesting possible constraints and new options; (c) identifying concepts, coherent pieces of functionality; (d) constructing a dependence diagram between concepts defining possible subsets; (e) outlining concepts with purposes and operational principles, and (f) sketching user interfaces.

Tasks

The result of this assignment will be a brief design document that you’ll construct in a series of tasks.

  1. Broad application goals. Read over your report from your needfinding assignment, and decide what your focus will be: who your app will be for and what value it will bring beyond existing apps. Record in your design document a fun name for your app; a description in a few words of the intended audience; and a sentence or two about the value that it will bring to users beyond existing apps.
  2. Brainstorming concept ideas. Brainstorm a collection of possible features for your application. You should aim to produce a list of at least 15 possible features. Record a one-line description for each feature. See the advice section below, and in particular, consider doing this collaboratively.
  3. VSD analysis. VSD provides four dimensions (or criteria) with associated prompts: stakeholders (identifying the people directly or indirectly impacted); time (thinking through short, medium, and long-term effects); pervasiveness (imagining what might happen if the design is broadly adopted); and values (evaluating in terms of common values such as autonomy, community, inclusion and fairness). For each of the four dimensions, read through all the prompts, and consider how they might apply to any of your brainstormed features, thinking about ways in which your design might have negative consequences, and what functionality changes you might make to mitigate them. Record your insights as a list of points each comprising: (a) an observation that explicitly refers to the relevant criterion, prompt, and features; and (b) a design response, which might involve removing, limiting, adjusting, extending a feature, or even adding a new one. Aim to have at least five insights that are explained in 30-75 words each.
  4. Identifying concepts. Considering your brainstormed features, along with the changes resulting from your VSD analysis, identify a collection of concepts that might form a coherent application. In some cases, a feature will correspond directly to a concept; in others, you may need to coalesce or split features. For each concept, provide a name, a purpose (a short sentence explaining the value that the concept brings to the app), and an operational principle (OP) (a scenario that shows how the concept is used). Aim to have 5-10 concepts, and to express your OPs in 15-30 words each.
  5. Dependence diagram. Construct a diagram of your concepts that shows, for each, which other concepts must be included for the inclusion of that concept to make sense. This diagram defines (implicitly) the different possible subsets of concepts that form a reduced version of your app, which will be helpful to you in the next assignment when you decide which concepts you’re actually going to build.
  6. Sketching concept UIs. Pick two or three concepts that you think are the most interesting or novel of the concepts you’ve come up with, and draw a user interface sketch that conveys how the concept is realized and used. Hand-draw your sketch using pencil and paper (or a drawing app on a tablet), and see the advice section below for more details. Feel free to annotate your sketch to add any explanation you think is needed, or to connect it to the concept OP.

Submitting your work

Post your design document to your portfolio by the assignment deadline. Feel free to structure your document as you please; you can have multiple sections of a single page, or you could split the document into separate pages. Just don’t put your document in a PDF!

Submit this Google form to finalize your assignment submission, also by the deadline.

You must do both steps for us to consider your assignment submitted.

Rubric

The teaching staff will grade your assignment using the following rubric. Grading will occur qualitatively, and the teaching staff will conduct multiple rounds of collaborative grading, calibration, and cross-checking to ensure consistency. This assignment is worth 10 points. Submissions that meet the expectations (i.e., the Satisfactory column) will roughly map to a B (8/10). Submissions that exceed expectations will roughly map to an A (9/10), while submissions that require substantial improvement will be awarded a C (7/10). Note that individual rubric cells may not map to specific point values, and excessively long answers will be penalized.

Part Excellent Satisfactory Poor  
Application name, audience, value Catchy name, important audience, value demonstrated by grounding in important user needs that are unaddressed in the current environment A name that’s easy to remember, defined audience, value is grounded in user needs but unclear whether this value is sufficiently differentiated from existing options Poor name, ill-defined audience, value hard to grasp  
Feature brainstorming Expansive list that covers essential functionality and includes several novel features Comprehensive list that includes several application-specific features but nothing surprising Essential features missing, or all features are routine and generic  
VSD analysis Brings up some non-obvious issues and includes creative design modifications Identifies real issues with only routine design modifications Misses important issues or suggests no substantive modifications  
Identifying concepts Concepts form a coherent app, and include both familiar and novel concepts Concepts form a coherent app but novelty only in adaptation of familiar concepts to a new context Concepts don’t cover essential functionality, are not properly concepts, or include nothing novel  
Concept names Concepts have pithy, well chosen names that connect well to functionality Concept names are intelligible but don’t fully invoke the actual functionality Concept names are hard to understand  
Concept purposes Concept purpose expresses the value the concept brings to the app in a succinct and compelling way Concept purpose expresses value but could be more direct and clear Concept purpose is vague or just recapitulates function  
Operational Principles Each OP is a compelling scenario comprising user (and maybe system) actions that shows how the concept purpose is fulfilled Each OP is a scenario containing plausible actions but may illustrate only a subsidiary aspect of the function OPs are not understandable scenarios  
Dependence diagram A diagram that reflects some clear thinking and insights about a coherent collection of concepts A diagram that is well formed and contains plausible edges but has some errors and lack of clarity A diagram that suggests a misunderstanding of the notion of concept dependences  
UI sketches Simple and understandable sketches that helpfully concretize the concepts and that address the essential behavior Understandable sketches that may be needlessly complicated, or miss a crucial feature needed to understand a concept Sketches that are confusing, disorganized, or that do not connect to the concepts  

Advice

  • Read the class guide. Make sure you have read and understood the rules for collaboration, submission and slack days, and the general class advice in the class guide.
  • Start early. If you make an early start on thinking about your design, you’ll have it in mind over the next few days, and you’ll come up with novel ideas and insights without trying too hard. But if you leave the whole assignment until the last day, it will be hard to think creatively, and you’ll have much less fun.
  • Collaborative brainstorming. Brainstorming is more fun, and more effective, if you do it collaboratively. You can find a partner or a group of students from the class to work with, or even get a friend or roommate to brainstorm a bit with you. Use the “yes, and” tactic from improv in which you try to build on and riff on other people’s ideas, and avoid negative, critical analysis. Focus on generating as many new ideas as you can. Take notes as you go. Read this short tutorial for some tactics you can apply to make your brainstorming more generative.
  • Sources of feature ideas. To feed into your brainstorming session, you might also find feature ideas by looking at feature lists of familiar apps in Wikipedia (such as this list for Instagram). Soren Iverson has a nice stream of design ideas on his Twitter/X feed. GPT is good at generating lists of feature ideas, but you may want to try your hand at it first, and then use GPT to see what you might have missed. This will help you develop your own brainstorming skills, and will make it less likely that you get stuck with some more routine ideas that it’s hard to go beyond. (Check the class guide for our GPT policy.)
  • VSD analysis. When applying the VSD prompts, always try and think not only about bad consequences of your design but good ones too. What value might your app bring beyond serving the needs of individual users? Consider whether the design responses that you identify (eg.removing, limiting, adjusting, extending a feature), can also create more overall value for everyone (think curb-cut effect).
  • Identifying concepts. See this tutorial for criteria that you can apply to ensure that your concepts really are coherent concepts and not just arbitrary pieces of functionality. You can also read more about identifying concepts in Chapter 2 of Daniel’s book: The Essence of Software.
  • Sketching. Sketching is not wireframing! Make your sketches simple and clear, and don’t spend too much time finessing them. Use pen (or pencil) and paper, or a tablet; don’t use a diagramming or wireframing tool that will make it harder to express ideas quickly and freely. You’ll have a chance to develop your wireframing skills in a later assignment.
  • Tutorials. For background to the tasks in this assignment read the brief tutorials we’ve written here; the most relevant ones are those on divergent vs. convergent design; divergent design tactics; concept criteria; concept purposes; operational principles; dependence diagrams and subsets. For more general background on software concepts read this tutorial or this more expansive blog post.