Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External Collaborator/Client #50

Open
alessandrofelder opened this issue Dec 1, 2022 · 0 comments
Open

External Collaborator/Client #50

alessandrofelder opened this issue Dec 1, 2022 · 0 comments
Labels
week08 Software Project Management

Comments

@alessandrofelder
Copy link

alessandrofelder commented Dec 1, 2022

Stage 1

You would like some help with analysing some data. The data is stored in CSV files, and the processing consists of computing the average value for each column.

For example, for an input file with the contents

2, 10, 200, 2
0, 20, -200, 5

the output of the analysis should be

1, 15, 0, 3.5

You require a library that lets someone read a file and save the results (average values) in a different file.

The different parties should work together to understand what exactly is needed, decide on a plan of action, then write some code to solve the problem. Work in steps:

Agree on what the program will do (what the inputs and outputs are)
Decide a general structure for your file (the main functions you need)
Decide a detailed structure (the inputs and return values for each function)
Write the code
Questions may come up which are not covered by this description. Make your own decisions according to your judgement!

Update
The CSV file may optionally contain a header row, and the final code should handle that.
For example:

Temperature, Mass, Pressure, Volume
2, 10, 200, 2
0, 20, -200, 5

For collaborators/clients: Be clear about what you want and expect from the finished code, and check that your requirements are met at each stage (to the extent that it makes sense).

Stage 2

You have come back with more requests. This time, things are not as clear, and requirements will change as you work. Create the code over several iterations, gradually adding functionality or making changes. At each iteration, make sure you have something that works, even if it’s not the complete product. Your workflow may look something like this:

  1. Decide on a new feature to add or a change to make.
  2. Make the required changes to the code.
  3. Present the result to the collaborator and your PI.

As before, make your own decisions when something is unclear. Do not worry about completing all of the requirements that may come up.

For collaborators: Keep checking your requirements to see what new changes should be made in future iterations. At the end of each iteration, see whether the changes address what they were supposed to, and that the code is functional.


Goals:

  • The CSV files now have a header row. For example:
Temperature, Mass, Pressure, Volume
2, 10, 200, 2
0, 20, -200, 5
  • The library should also support input from JSON files. For example:
{
    "record1": [
        2,
        10,
        200,
        2
    ],
    "record2": [
        0,
        20,
        -200,
        5
    ]
}

or

{
    "record1": {
        "temperature": 2,
        "mass": 10,
        "pressure": 200,
        "volume": 2
    },
    "record2": {
        "temperature": 0,
        "mass": 20,
        "pressure": -200,
        "volume": 5
    }
}

Update: More requirements have arisen

  • The output file should include the date and time of the analysis
  • The library should include an executable Python file that invokes the analysis
@dpshelio dpshelio added the week08 Software Project Management label Dec 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
week08 Software Project Management
Projects
None yet
Development

No branches or pull requests

2 participants