Group project setup

Overview

Teaching: 30 min
Exercises: 60 min
Questions
  • What is this project?

Objectives
  • Form project groups

  • Decide on a topic for your group

Group projects

Throughout this week, we’ll spend the mornings learning different aspects of software development in python. During the lessons there will be opportunities to practices the lessons learned, but often these will involve simple or contrived examples. We have decided to offer mini group projects to allow you all to really dig into the lessons learned and practice them in a more real world situation.

Project options

  1. Work on your own existing solo project,
  2. Work on an existing project with a group,
  3. Form a new group and start a new project as per below.

Group project topic ideas

Some suggestions for new group projects:

Pitch your ideas

Use the etherpad to pitch additional ideas for projects.

Forming groups

Coding on your own may be more typical for your research work, but it does limit the dissemination of coding best practice and your opportunities to learn new skills. Working in a group does mean that you’ll have to spend more time explaining what you are doing, planning and agreeing on plans, and reviewing the work of others, but ultimately all these tasks will result in fewer bad choices, and more brains available to fix problems as they arise. With this in mind, you will get the most benefit out of this task if you:

Therefore, we will be forming groups, but we will be forming as diverse groups as possible.

Let’s play set!

Form groups of 3-4 people such that at most 2 people have:

  • Published a paper together,
  • An overlapping PhD supervisor,
  • The same operating system on their laptop,
  • Met socially outside of work,
  • The same gender.

If you find yourself in a room full of clones then group work is more important than solo work so form a group anyway.

If there are online participants we strongly encourage hybrid groups to form!

Choose group names and roles

Assign someone to be the keeper of the github repo. This should be someone who is able to be present at all the afternoon sessions.

Choose your group name by having the github repo owner selecting whatever default name github comes up with when you create a new repository.

Make a repo and report back

Have the repo owner add all the team members as collaborators.

Record your team name, team members, and repo link in the etherpad.

Project activities

The goal of the group projects is for you to practice skills that you are learning in the workshop, and to engage in collaborative software development.

  1. Choose a project topic (see suggestions below)
  2. Develop a MVP python project for this idea
  3. Use git and github throughout
    • Use a feature branching workflow
    • Create at least one pull request, have it reviewed, and then merge
  4. Structure your python project as a python module
  5. At least one of the following:
    1. Create a user friendly experience
      • Include a CLI that includes --help
      • Write user documentation in a README.md file
      • Make your package easy to cite by including a --cite option and instructions in your READEME.md
    2. Create Documentation
      • Write docstrings for all functions classes
      • Write user documentation in a README.md file
      • Generate basic documentation with pandoc or sphynx
      • Create a user help page or FAQ on github wiki, or using pandoc/sphynx
    3. Create tests
      • Write at least one test for each function
      • Use pytest to automate testing
      • Create a coverage report for your code and identify untested code
      • Have tests run on push to github dev branch and PR into main
    4. Profiling
      • Benchmark your code
      • Profile your code and identify lines/functions which could benefit from optimization (CPU or RAM)
      • Make a github issue with the above information
      • Attempt to improve your code based on the profiling

Within your group, identify the activities that you have the least experience with and make them a focus for this week.

Choose a project and set priorities

Within your group choose a project from the ideas previously listed. Doubling up on projects is not a problem!

Come up with a name for the python module that you’ll be developing and write a short problem statement for the project as well as some learning objectives from the above list.

Main engine start

In the remaining time, begin planning and working on your projects.

Key Points

  • Group work is where you’ll do the most practice

  • A diverse group is a good group

Clicky