Final Project

note - You must work in groups of 2 or 3.

Software design is all around us. It governs large systems like financial markets and also subtle experiences such as how we select a song on an MP3 player. Software affects us in countless ways everyday. It is our responsibility to participate in envisioning its future.

Imagine: you have been provided with 10 gazillion dollars of venture capital and a crack team of engineers and computer programmers who can make anything you design.

The Challenge: develop a novel software design. You will prepare a technical and conceptual proposal for a new piece of software as well as a small prototype or component of this project realized in code. The emphasis will be on the conceptual design which must be thorough and well-conceived. The prototype does not need to be a fully functional piece of software, but should demonstrate a grasp of basic computer programming principles and best practices. You will demo this prototype for the class. You will work collaboratively in design teams on this project.

Questions:

  • What are you making, what does it do?
  • Who are you making it for - who is your audience?
  • What kind of information does it take in? What kind of information does it produce?
  • Is the software used in public, private, both?
  • How do users interact with it?
  • What problem does it set out to address?
  • What are some related software/products/services - how does yours differ?

Ideas:

  • "Data visualization" - design an interface that allows a user to explore a specific data set in an interesting/revealing/joyful/surprising way. As one option, you can work with a set of of data for female and male homicide rates for each state for each year between 1980-2004. This data is being made available by a criminal sociologist who is interested in seeing visualizations of her research.
  • "Design your own ..." - this semester we have made a drawing tool, a typewriter, and a clock. Choose another familiar technology and re-imagine it. A visual calculator, a weather service, a calendar ...
  • "Musical Instrument" - design an interface that allows a user(s) to create sounds/music in a novel way
  • "Design a Game"

Any idea is welcome - you just have to make your case.

Format:

Project Proposal – due November 23
In this section, write a few paragraphs that describe what the project or software will do. What is the problem it is trying to solve? Why does it need to exist? Who will use it? By answering these questions, you establish the scope of your design.


Design Document – Rough Draft due November 30

Project Name

Background

How did the idea for this software come about? What is the problem it is trying to solve? Why does it need to exist? Who will use it?

Specifically address:

  • Scope - What are you developing? What does the software do? What does the software NOT do?
  • Audiences - Who are the major types of users you want the software to serve?
  • Objectives - What goals should the software help your users meet?

Competitive Analysis - Assess current alternatives/options. What are their strengths and weaknesses? How does your idea fit into the current landscape? You should case study at least 2 other software products in this section.

Implementation

Aesthetics

What is the look and feel for this project? How can specific design decisions make this software appealing and usable to your target audience?

Architectural Strategy

What is a suitable development platform for your project? What kinds of existing technologies can you leverage (open-source code, hardware)? What kinds of new software/hardware needs to be developed to realize your project? You should present your research on the pros and cons of at least 2 different technologies that could be used in developing your project.

Interaction

A use case is a description of how users will perform tasks with your software. Who can do what?

A use case includes two main parts:

  • the steps a user will take to accomplish a particular task
  • the way the software should respond to a user's actions

Each use case captures:

  • The actor - Who is using the software? What specific characteristics does this user have?
  • The interaction - What can the user do? How does the software respond?
  • The goal - What is the user's goal?

You should write at least two use cases for your software. You should write each a use case as a mini-narrative.

Prototype

A prototype is a draft version of your software. Prototypes allow you to explore your ideas before investing time and money into development. A prototype can be anything from drawings on paper (low-fidelity), click-through of a few images or pages, or fully functioning software (high-fidelity).

You will create 2 prototypes: a UI prototype and a software prototype.

UI Prototype
This can be done with photoshop/illustrator to create a series of pages that will simulate how a user will interact with your creation. You can think of this as a storyboard or flowchart. The storyboard should represent important UI features (menus, buttons, etc) and demonstrate the ways that a user can interact with your software. These can be presented as a series of PowerPoint slides or in the form of a simple website. For your rough draft, this can be in the form of sketches on paper.

Software Prototype
You will determine a suitable aspect of your project and attempt to prototype it in Processing. I’ll work with each group individually to determine the appropriate part of your project to implement. Please turn in the code for this part of the project. This is not due for the rough draft.


Presentation & Final Design Document – due Last Class
A 10 minute presentation in the form of Power Point or a webpage/blog. Please turn in either a copy burned to CD or a URL.

The presentation should incorporate the following:

  1. A name for your software.
  2. Answers to the above questions.
  3. Use cases or scenarios that demonstrate typical user experiences.
  4. Visual designs - at least 4 visualizations that depict what the service/device/interface looks like and how it would be used.
  5. Code prototype – identify an aspect of your software project and implement it in Processing.

!!! your device/service does not have to completely work - but you need to explain how it would work.