Project 1.2: Feature Brainstorming for EncodingHelper

Due Friday 4/3 @ 10:45am. Do this portion with your partner.

Goals

Get practice doing the following:

About Partners

This portion of Project 1 is to be done with your partner. However, partner stuff is tough at the beginning of the term, when people are still adding and dropping. If for any reason you don't have a partner to work with, please email me and I'll work to get it sorted out. In the meantime, you can get started working on your own. I'm gonna be a little peeved if I find out later that you had a partner problem but didn't email me.

Step 1: Brainstorm

Project 1 is about building a command-line program called “EncodingHelper”. The target audience is programmers who want to write programs that deal correctly with Unicode. EncodingHelper should be a sort of reference for them; an interactive (and perhaps intelligent) interface to the information contained in the plaintext Unicode table we looked at in class and any other Unicode-related resources you think might be useful.

Phase 2 of the project (this assignment) is all about deciding what we want the software to do before we start writing code to make that happen.

Work together with your partner to imagine some features that you want EncodingHelper to have. Write down some example uses of the program, including input and output. Discuss together which features would be most useful to your users. Imagine what they want. Imagine what would be easy for them to use. Imagine their use-cases: what specific problems might they have, and how could a program help solve them quickly and easily?

Note that the program doesn't exist yet, of course; we're doing design here, so any feature that you can describe and illustrate is fair game to imagine. Our only restriction is that it will be a command-line program, so our input will be command-line arguments (or maybe standard input, if you think that's a good idea) and our output will be stuff printed to the screen (standard output).

Step 2: Write It Up

Once you've brainstormed, decide on a handful of features you think are good, and write them up. For each one, create one or two examples uses of the program that illustrate this feature, including input and output.

For example, a feature you might want could be this:

“Providing a single character as an argument prints out the Unicode code point for that character, as well as the official name of that code point.”

The use-case example could be:

> EncodingHelper λ
U+03BB
GREEK SMALL LETTER LAMBDA

Note that I've shown both input and output.

Each group should respond to my post on Piazza (not create a new post) with a description of all of their imagined features / functionality, including a minimum of four examples total illustrating those features. Every feature you describe must have at least one example.

Put your examples in “code” boxes; there's a button for that right at the top of the text box that you use to type in your posts on Piazza.

It's okay if you happen to come up with a feature similar to some other group, but try to really think broadly about what would be useful for our users: other developers who want to write programs that properly handle Unicode strings.