12/9/2017 P11: Personal Digital Library
Program Skills
Creating a design document
Designing a program from an idea
Summary
This week, you will focus on a part of programming that we usually handle for you: design.
Any modern library, such as the UW library system (https://www.library.wisc.edu/) , has software to keep track of
its books, videos, and other items. Library tracking software keeps an entry for each item, and each entry includes
a variety of information about the item, such as its genre, the condition it is in, where does it live within the library,
and when it is due back (if it's loaned out). This week, you will be writing a design for a special library tracking
programinstead of keeping track of physical objects, it will keep track of files on your computer.
Program Requirements
All students should fill out a postassignment survey (~5 min). If you work in a pair, fill out this one
(https://docs.google.com/forms/d/e/1FAIpQLScZWaqsq85_8lS4oYVrinAt3QvEyfU4BgOv1QhTzq6jNNMy5A/viewform?
usp=sf_link) ; if you work alone, fill out this one
(https://docs.google.com/forms/d/e/1FAIpQLSd6DAcNnYGR5jhQPT6_y1KDpxreUqB4xjoceZBB2J3hWaJKKg/viewform?
usp=sf_link) .
For this assignment, you will write a design document describing your tracking program. Do not turn in an
implementation of your program. Submitted implementations will receive no points.
The program that you design must be able to do the following:
1. Be able to include an unlimited* number of files in the library. (*No computer can hold a library of truly unlimited
size. Your design, however, should not impose a limit.)
2. Store metadata about each file. Metadata is "data about the data". It might include a brief description of the file,
its location in your computer's directory structure, the number of times the file has been accessed, or other
information about the file. Your program must store at least three attributes of each file in your library.
3. Allow a user to add a new file to your library.
4. Allow a user to search your library. Not all information you store needs to be searchable, but you must include
at least two attributes of a file that you can search on.
5. Allow a user to retrieve a copy of a file in your library.
Additionally, your design must meet some criteria for usability and stability:
1. You may assume that an expert user will want to import your program and run functions directly without using
raw_input(). You must support this type of user. (Hint: Think about which functions they should call, and make
sure your design carefully describes how they should use each one.)
2. You may assume that even an expert user will make mistakes. Give some thought to how you can make your
program less likely to crash or have other undesired behavior.
Total Points: 10.0
Design (2)
Criteria Ratings Pts
3.0 pts
4.0 pts
1.0 pts
1.0 pts
1.0 pts
The specifics of how your program will work is up to you, but you should make and write down those decisions. If
you'd like to add additional functionality, you are welcome to do so! Be creative :)
Document Requirements
Here are some guidelines for creating your design document. Remember: You must hand in a design
document. If you hand in code, you won't get points!
Be organized. Divide your document up into sections, one for each of the sections listed above. Add more
sections as needed.
Be detailed. There is a difference between "read the file in" (not specific enough!), "read the whole file in as a
string", and "loop through the file" be as detailed as possible when describing your design.
Be complete. Are you using external modules? Which ones? What functions/methods will you write? What
parameters and return values will they have? How will they be used?
And of course, check your spelling. This isn't an English class, but using proper grammar and spelling
facilitate the clear communication of ideas.
You are welcome to include flow charts and other graphical representations of your design in your document!
There is no length requirement for this document, but if your design takes less than a page to describe, consider
that you might not be going into enough detail.
Handing In Your Program
When you're done, hand in your design document in a file called library_hw. (Possible extensions are .txt, .pdf,
.doc, and .docx. We need to be able to read your design! .py files will not be accepted.) Then fill out the partner
Program divided into wellexplained subsections 3.0 to >0.0 pts
Full Marks
0.0 pts
No Marks
Detailed description of all program requirements 4.0 to >0.0 pts
Descriptions present
0.0 pts
Description missing
User input and prompts described 1.0 pts
Full Marks
0.0 pts
No Marks
Error handling described 1.0 pts
Full Marks
0.0 pts
No Marks
Spelling and grammar 1.0 pts
Full Marks
0.0 pts
No Marks