General Proposal Template#

This is a template for a proposal that specifies what your project is and the execution plan, in the plain-text reStructuredText format.

Additional documents or files may be used, if necessary. They should be added in the repository.

Name your project to clearly state the subject and make it short enough for people to remember.

Basic Information#

The GitHub repository (URL) hosting your term project.

GitHub provides an ‘About’ field, in which you are encouraged to write a simple statement (preferably one sentence) to introduce the project.

Problem to Solve#

Describe the problem or the set of problems you want to solve. Include necessary background information without making it lengthy.

Some points may help you organize the problem description:

  1. The field or industry of the problem.

  2. The physics and/or the mathematics behind the problem.

  3. The algorithm or numerical method that should be applied for solving the problem.

Prospective Users#

Describe the users of your software and how they will use it.

Alternately, this section may be combined with the previous one (Problem to solve).

System Architecture#

Analyze how your system takes input, produces results, provide interface, and performs any other operations. Describe the system’s work flow. You may consider to use a flow chart but it is not required. Specify the constraints assumed in your system. Describe the modularization of the system.

API Description#

Show how your system can be programmed. You are supposed to implement the system using both C++ and Python. Describe how a user writes a script in the system.

Engineering Infrastructure#

Describe how you plan to put together the build system, testing framework, and documentation. Show how you will do version control.

You may use continuous integration, but it is not required. If you use it, describe how it works in your code development.

Schedule#

Itemize the work to do and list them in a timeline. Estimate the efforts of each item before the project starts.

The schedule is expected to be adjusted during the development. A schedule to accurately predict everything in the development is impossible and unnecessary. But the initial estimate is important, for the baseline becomes concrete when we adjust the plan. To start, it is OK to list the items to do on a weekly basis. Assume the development of the project takes 8 weeks:

  • Week 1:

  • Week 2:

  • Week 3:

  • Week 4:

  • Week 5:

  • Week 6:

  • Week 7:

  • Week 8:

References#

List the external references for the information provided in the proposal.