CS 257: Software Design

A Shape Editor

For this project, you will design and implement an editor for creating shapes. Once the program is done, you should be able to launch it, create some shapes (rectangles, circles, and polygons), and save the resulting collection of shapes in a file. Later, you will be able to load that same file with the program and continue adding shapes to it.

Essential features

Optional features

I imagine you can come up with a very long list of optional features, so I will just say that everything else is optional.

Evaluation criteria

I would like you to use this program to bring together the things we have studied and talked about this term. Command-line design, functional design, code construction techniques (assertions, commenting strategy, style, etc.), design patterns if relevant, usability, etc. I will read your code for all of these things. Having a functioning program is important, but for this particular project, high-quality design is more desirable than lots of cool features.

All design matters being equal, I will undoubtedly give a little boost to programs that have richer feature sets. But all design matters are never equal. Furthermore, I will give a smaller boost for ambitious programs than I usually do. Ease of use and clarity of code design will be worth more than a bunch of neato features.

Other

Start early, have fun, and keep in touch.

Have a great summer and beyond.