# "Freestyle" Project Proposal

> See: [The "Freestyle" Project](/intro-to-python/projects/freestyle.md)

## Learning Objectives

* Practice researching and describing user needs within the context of a proposed computer-based information system.
* Practice identifying and describing the information requirements and high-level objectives of a proposed computer-based information system.
* Practice researching the technical capabilities of various third-party APIs and Python packages, using an active learning process which leverages information available on the Internet.
* Practice decomposing system requirements and functionality into smaller, more manageable pieces, and then prioritizing the development of those features.

## Instructions

Please use your university-issued email address to submit the designated Google Form before the designated due date. If submitting on behalf of other group members, only one member needs to submit the form.

For your reference, the form will contain questions like those below.

### Group Membership

You may work by yourself, or in a group with up to three members total.

* If working by yourself, write "N/A" below.
* Otherwise if working in a group, write the email address(es) of all OTHER group members, separated by commas (e.g. "<partner1@myschool.edu>" for a two-person group, or "<partner1@myschool.edu>, <partner2@myschool.edu>" for a three-person group).

### User Needs

Your project should help some human in some way. Who will your app help, and how? To help explain the objectives of your system, write one or more statements of user needs in the form of "\[WHO] needs \[WHAT] so they can \[WHY]".

### Information Inputs

What information inputs (e.g. API data, user inputs, etc.) will your system need to access or process in order to perform its desired functionality?

### Information Outputs

What information outputs (e.g. compiled reports, data aggregations, notification messages, etc.) will your system need to produce, display, or send in order to perform its desired functionality?

### Technical Feasibility Analysis

Investigate the degree to which your proposed system is implementable from a technical perspective, specifically via application software written in Python. Hopefully it is possible, otherwise you are advised to propose a different solution.

So, what technologies, tools, or services (e.g. third-party APIs and/or Python packages) will your proposed system require? Have you researched the documentation, tutorials, and examples for those other technologies? Have you demonstrated your ability to use them? How's it going? What do you "know you know" vs "know you don't know"? Are there any steps remaining to complete your investigation?

### Feature Prioritization

Are you able to break your system's components up into smaller, more easily manageable pieces, or "features" such that someone could work on one logically-related feature at a time? Which feature(s) are the most important to implement, and which are the "nice to haves"? Which features will you implement first, and why? If working in a group, how do you propose to split up the work between all group members?


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://prof-rossetti.gitbook.io/intro-to-python/projects/freestyle/proposal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
