The case

A three-year nutrition programme has been implemented in Liberia by the Ministry of Health and UNICEF aimed at tackling child undernutrition in the country. Funded by Power of Nutrition and UNICEF UK, the programme has been implemented across 15 counties in Liberia starting from January 2017 up to December 2019. The overall aim of the programme is to improve the coverage of direct nutrition interventions or what is commonly termed nutrition-specific interventions, i.e. interventions or programmes that address the immediate determinants of foetal and child nutrition and development — adequate food and nutrient intake, feeding, care giving and parenting practices, and low burden of infectious diseases. The current programme supports the following specific key interventions: 1) treatment of severe acute malnutrition (SAM) within the community-based management of acute malnutrition (CMAM) programme for children 6-59 months; 2) vitamin A supplementation for children 6-59 months; 3) promotion of appropriate infant and young child feeding (IYCF) practices among pregnant or lactating women; 4) multiple micronutrient powder (MNP) supplementation for children 6-23 months; and, 5) iron and folic acid (IFA) supplementation for pregnant women.

To assess the programme’s progress towards its overall aim, two coverage assessments have been implemented - the first at the halfway point of the programme and the second at the end. Only two programme areas were selected for the assessments: Urban Montserrado (Greater Monrovia) district and Grand Bassa county.

The problem

The Director of the MSc in International Health and Tropical Medicine of the University of Oxford was requested by one of her course alumni for support in analysing the data from the two coverage assessments conducted. Specifically, she asked support in addressing the following questions using the coverage assessment data:

Describe the sample of children included in the dataset:

  • How many children are in the overall sample?
  • How many children are males and how many are females?
  • How many children are from Urban Montserrado and how many are from Grand Bassa?
  • How many children are males from Urban Montserrado and males from Grand Bassa?
  • How many children are females from Urban Montserrado and females from Grand Bassa?
  • What is the distribution of ages of children in the overall sample?
  • What is the distribution of ages of children by the sex of the child?
  • What is the distribution of ages of children by location?
  • What is the distribution of ages of children by sex and by location?

What is coverage of screening activities in the past month? Specifically:

  • What is the coverage of mid-upper arm circumference (MUAC) screening among the children in the sample?
  • What is the coverage of mid-upper arm circumference (MUAC) screening among the children in the sample by sex?
  • What is the coverage of mid-upper arm circumference (MUAC) screening among the children in the sample by location?
  • What is the coverage of nutritional oedema screening among children in the sample?
  • What is the coverage of nutritional oedema screening among children in the sample by sex?
  • What is the coverage of nutritional oedema screening among children in the sample by location?

What is the prevalence of acute malnutrition in the sample?

  • How many children 6-59 months old in the sample are moderate acute malnourished (MAM) cases?
  • How many children 6-59 months old in the sample are moderate acute malnourished (MAM) cases by sex and by location?
  • What is the prevalence of moderate acute malnutrition (MAM) among children 6-59 months old in the sample by sex and by location?
  • How many children 6-59 months old in the sample are severe acute malnourished (SAM) cases?
  • How many children 6-59 months old in the sample are severe acute malnourished (SAM) cases by sex and by location?
  • What is the prevalence of severe acute malnutrition (SAM) among children 6-59 months old in the sample by sex and by location?
  • How many children 6-59 months old in the sample are acute malnourished cases (either MAM or SAM)?
  • How many children 6-59 months old in the sample are acute malnourished cases (either MAM or SAM) by sex and by location?
  • What is the prevalence of acute malnutrition (either MAM or SAM) among children 6-59 months old in the sample by sex and location?

What is the coverage of severe acute malnutrition (SAM) treatment in the sample?

  • How many severe acute malnourished children 6-59 months old are currently in the treatment programme?
  • How many severe acute malnourished children 6-59 months old are currently in the treatment programme by location?
  • How many children 6-59 months old are currently in the treatment programme and are recovering from severe acute malnutrition?
  • How many children 6-59 months old are currently in the treatment programme and are recovering from severe acute malnutrition by location?
  • What is the case-finding effectiveness of the SAM treatment programme?
  • What is the case-finding effectiveness of the SAM treatment programme by location?
  • What is the treatment coverage of the SAM treatment programme?
  • What is the treatment coverage of the SAM treatment programme by location?

In response, the MSc Director has assigned the challenge to the course’s current crop of students to work through the dataset and address the various questions raised.

The brief

The students have been grouped into four (4) teams:

Team Name Team Avatar Team Members
Team Charmander Quyen, Precious, Irene, Paolo, Alaa, Bushra
Team Eevee Isabella, Dhol, Shuma, Ashish, Daisy, Nabila
Team Pikachu Ife, Roger, Hams, Sophia, Chifundo, Amal
Team Squirtle Ruchi, Pyae Son, Seun, Bisharo, Winnie

Initial hackathon day

On the starting day of the hackathon (Session 9 - 15 February 2023), each team will be randomly assigned to one of the questions stated above in the form of a GitHub issue assigned to the team. Once all questions have been assigned, the hackathon will formally start.

The GitHub issue will re-state the problem randomly assigned to a team as described in the case study. Once assigned, the expectation is that the team will work through the PBL process and identify what they already know and what they don’t know towards addressing the various issues related to solving the problem. In general, these topics will include domain-specific knowledge regarding the problem and R-specific knowledge/skills needed to perform operations/calculations/analysis to produce answers to the questions. Each team then has the opportunity to ask relevant questions (including those that are related to the topic they don’t know) to the hackathon facilitator and/or to fellow team mates and/or other teams and their members. This session will be a classroom session and questions are raised and answers provided for the whole set of teams to hear and learn from. The teams then take on these new knowledge and learning (or references provided by the facilitator or co-learners) and discuss it within their teams to start building solution/s to the problem-at-hand.

The expected output per team after the initial hackathon day is to at least have a list of steps/tasks that the team plan/aim to do in order to solve/address the question it has been assigned. This list can be outlined as a response/comment to the original issue assigned to the team via GitHub. The list should include further lines of enquiry/study that the team would like to go through in support of the steps/tasks it aims to complete.

Working as a team and contributing individually

Once the teams start working on R code of the steps/tasks they aim to undertake to address/answer the problem assigned, the expectation is that each team member will be writing code individually within their own branches created from the main branch of this repository/project (see details below regarding cloning a local copy of this repository/project and creating a branch from main) consistent with the steps/tasks that the team has outlined to do. At each step, each individual member will write and run their own R code locally to verify that their code is running without errors (correct syntax) and that the code is producing the expected and needed output for the next step/task. Each individual team member can also decide to commit and push their code solution for a step/task as a way to have the automated checks built-in to the system verify code syntax. Once one or more team members have come up with code that works and have consulted this with other team members, the team can decide whether the majority/all of the members agree with the solutions offered and will choose which solution/approach they prefer. If there is consensus that a solution to a step/task has been found, then the team needs to decide which of the individual team members with the agreed solution will be tasked to make a pull request (after making a commit and push) to the hackathon facilitator for their review and approval. The hackathon facilitator will then review (taking into account the automated checks) and provide feedback accordingly. Feedback can be:

  1. An outright and full approval of the pull request if all code syntax and output checks out;

  2. An approval with minor comments that the team needs to take into account moving forward into their next steps; and,

  3. A request for changes to address some issues detected in the code syntax and/or in the code outputs in relation to the task/step being performed.

For feedback type 1 and 2, the team member who issued the pull request will have the privilege to merge their pull request to the main branch.

Every time a pull request is merged to the main branch, all participants from all teams will be asked to make a pull with rebase to update their branches with the code that has been accepted and merged to main. This ensures that everyone’s branches are in sync with changes to the main branch which in turn can help with the next steps/tasks they are working on. This process will be facilitated by the hackathon facilitator.

For feedback type 3, the individual who made the pull request is expected to address the comments and re-work their code accordingly while the other members of the team continue to work on their own code to see if they can provide a more appropriate answer. The team then again reviews the solutions from team members and decides which code to now use to make either a new pull request (if another team member’s solution has been chosen) or continue with existing pull request if original team member who made the initial pull request has been able to offer a corrected solution that works.

Seeking help from other teams and/or from hackathon facilitator

If the team finds themselves in a position where none of the team members are able to provide a credible solution to a step/task that they are working on, they have the option to request for help/support from either another team or from the hackathon facilitator. They can make this request via the original GitHub issue thread by making a comment and then tagging the team and/or the hackathon facilitator.

In this process, the requested team is expected to engage with the request as best they can. If the requesting team provides code that they have written that is not working, the requested team should comment directly on the code provided and offer corrections or solutions. If no code is provided and instead only a question is asked, then the requested team should respond to the question in such a way that will lead the requesting team to the appropriate solution rather than just providing code. It should always be the requesting team that writes the final code solution and make the pull request and not the requested team.

Subsequent in-person hackathon sessions

After the initial hackathon day, two subsequent in-person hackathon sessions (21 February 2023 and 13 March 2023) are on the schedule. These sessions will run similarly to the initial hackathon day with members of teams expected to interact with each other and go through the steps/tasks they have set for themselves to complete while at the same time having the hackathon facilitator available in person to address further queries that will help the teams move forward in addressing the problem they have been assigned.

During these sessions, the hackathon facilitator may raise additional issues relevant to a team’s problem-at-hand. These issues may either be an additional step/task that the team may have missed and/or additional outputs that will appropriately resolve the problem assigned to the team.

Continuing hackathon

The teams and their members are allowed and to a great extent expected (whenever possible) to continue working on their tasks/steps even outside of the three in-person hackathon days allocated. The teams discuss and agree how they will continue and use as much of the available methods for collaboration such as scheduling team sessions independently and/or working asynchronously via GitHub issues and pull request communications. Hackathon facilitator will continue to monitor sessions done through GitHub and will be available to comment, respond, and review as needed on any day.

Completing the hackathon

The teams have up to the close of business (5 pm UK time) of the last session of the Open Science and Reproducible Research in R lecture series (13 March 2023) to submit a final pull request on GitHub that contains all R code work that the team has written (both R script and R Markdown) for review.