Assignment5: Writing a Software Development Proposal (Writing Assignment 2)

Assignment borrowed from notes by Mark Liffiton

Hello, everybody! Assignment5 is our second "writing" type assignment. Assignment 5 is due on December 5, 2023 at 11:59pm CST.

Assignment Description

This assignment is titled, "Writing a Software Development Proposal". The description is the following:

You are a software developer working as part of an independent team. You are approaching decision-makers at an organization like a company or group of investors to propose developing [your assigned CS253 project] for them. Your task is to write a brief proposal about your plans for developing this application. This proposal aims to convince its audience (the people who might fund the work) that you are prepared and well-equipped to create a quality application for them.

You can assume that you are submitting the proposal to this organization in the hopes that they will want to support it. You can also assume that the "business case" (how the application can make this business a profit) is settled elsewhere, perhaps being something as simple as placing advertisements on a free web application, so you do not need to address that. The goal of your work would be simply to produce an application that people will want to use.

Therefore, the audience of this writing wants to see:

When describing the features of the application, use visual aids. Figures will help convey information clearly and concisely compared to trying to do it solely in text. These can include mockups of user interface screens (often called "wireframes"), flowcharts illustrating how a user might interact with the application, and organizational diagrams.

Overall, keep in mind the broad goal: to convince the readers of this proposal that your planned application is solid and you are the right choice for pursuing this development.


This proposal will involve persuasive writing to some extent, which requires striking a balance between dry/boring and overwrought/ostentatious. On one end of the spectrum, simply providing a list of planned features, objective descriptions, and bullet points of tools or methodologies will be boring and generally unpersuasive. On the other end, grandiose claims, hyperbole, and flowery language can look cheap and immature, again potentially leading to a rejection based on style more than substance. It can be very helpful to ask someone to read what you've written to give you an outside opinion on where it falls, as sometimes this can be hard to judge in our own writing. The writing center is always available as an option for that.

As with the earlier report, organization is still important for maintaining a logical flow of ideas throughout. This proposal is short enough that it may work without section headings or explicitly separated introduction and conclusion sections, but it still needs to have an introduction and conclusion to guide the reader into and out of the main content. Additionally, the writing should flow well, avoiding overly abrupt stops, starts, or shifts in topic.

This writing is specifically for a non-technical audience. You can still use technical terms, but you should absolutely make sure anything that might be considered technical jargon (especially any term you didn't know yourself before starting in CS) is defined clearly and correctly.

For any figures, draw them using software made for drawing diagrams. I often recommend Inkscape; it has a learning curve, but it's worth putting the time in to learn it at some point. is a simpler, but still good, tool you can use for free in your browser. In your document, be sure to use a clean layout on the page and clear captions. See the Formatting & Presentation guidelines in the technical report guidelines for further details on including images.

And just as is critical in any writing, keep your specific audience in mind. Make sure the writing will work for them; convey to them, as they read it, the ideas and points you want to communicate; and in particular for this piece, convince them.