## Workshop information

The workshop covered an intensive two-week long curriculum designed to train participants on the essential programming skills needed for mathematical sciences, using the **Python programming language**. The format of the workshop involved lectures and a lot of practical sessions, supported by a team of tutors. The workshop also aimed to give mathematical concepts context and relevance by exposing the participants to real-world applications arising from research which makes use of mathematical tools and computer programming.

### Learning Outcome

- Learning how to identify Python data types.
- Learning about various data structures, including lists, tuples, sets, and dictionaries.
- Learning about loops and decision statements.
- Learning how to write functions and pass arguments.
- Learning how to process and analyse data.
- Learning how to plot and visualise data.
- Learning how to define the structure and components of a program.
- Learning how programming can be used to solve mathematical problems.

### Workshop Schedule

Day | Date | Activity | Outcome |
---|---|---|---|

0 | Sun 29/07/2018 | Familiarisation | Introduction. Installation party. Setting up programming environment |

1 | Mon 30/07/2018 | Teaching and Lab | Statements, Expressions, Variables, Operators and Types. Lists, Strings and For loops |

2 | Tue 31/07/2018 | Teaching and Lab | Conditions. While loops |

3 | Wed 01/08/2018 | Teaching and Lab | Functions. File I/O |

4 | Thur 02/08/2018 | Teaching and Lab | Dictionaries. Debugging |

5 | Fri 03/08/2018 | Teaching and Lab | Functional approaches: comprehensions, lambda, closures and high order functions |

6 | Sat 04/08/2018 | Mini-project | |

7 | Sun 05/08/2018 | BREAK | |

8 | Mon 06/08/2018 | Teaching and Lab | Numerical Arrays. Matplotlib |

9 | Tue 07/08/2018 | Teaching and Lab | Pandas |

10 | Wed 08/08/2018 | Team project | |

11 | Thur 09/08/2018 | Team project | |

12 | Fri 10/08/2018 | Team project. Presentation. Closing session. |

## Tutors

### Sofiat Olaosebikan

I am a Computing Science PhD student at the University of Glasgow, with a passion for problem solving and programming. My research is focused on how we can use mathematical algorithms to find fast and accurate solutions to matching problems. Matching problems arise when we need to construct optimal allocation between sets of entities. An interesting example of matching problem in my home country is the allocation of youths to states for their National Youth Service Corps (NYSC).

I love to code, and I am passionate about using my skills to help people. My desire to pass on my computing knowledge to fellow scientists in my continent was what led to PWSAfrica. I am really excited and enthusiastic about this initiative, and I am very much looking forward to our first workshop in Nigeria. I can't wait to see where this journey takes me and everyone involved.

### Benjamin Bumpus

I am a first-year PhD student at the University of Glasgow. I am an Italian-American with a passion for farming, mathematics and computer science. My mathematical interests lie in combinatorics, graph theory and theoretical computer science. My PhD focuses on graph decompositions and connectivity in graphs and abstract connectivity systems. To put it plainly, I study the mathematics of "things that come in chunks", the limits we encounter when we try to solve problems involving these "chunky things" and how these chunky things can be assembled together into even chunkier structures.

My love for programing stems from how it connects abstract mathematical thought and concrete computation. I am excited about the PWSAfrica project because I can't wait to show other mathematicians and scientists all about the wonderful interplay between mathematical thought and its physical embodiment!

### Fionnuala Johnson

I studied computing science at University College Dublin in Ireland before moving to the University of Glasgow to do postgraduate research in Computer Animation. In order to fund my postgraduate studies, I tutored undergraduate courses alongside research. After a career break to raise five children, I returned to UofG as a full-time tutor five years ago. My interests are now in Computer Science Education. I am particularly concerned with what we teach our students and what methods we use to achieve this. I hope to embark on postgraduate research in this area.

I am delighted to be given the opportunity to design a beginner's course in Python programming. I am looking forward to delivering this training at the University of Ibadan. I hope that teaching programming to non-computer science students will deepen my understanding of how to explain the basic computing concepts.

### Tom Wallis

I’m a Computing Science PhD student specialising in simulations of human systems, to figure out whether they can resist unexpected stress. Simply, we build a framework where models of people’s behaviour are written in Python, and then rewrite those models while they’re being run — this makes the original program relatively small, and means that we can simulate very complicated things relatively easily! We use that to work out whether vital parts of human systems still work when parts of it unexpectedly break — this is *socio-technical resilience*.

But PWSAfrica isn’t about socio-technical resilience — PWSAfrica is about the wonderful language that enables research like mine! Python is capable of everything from clever engineering and complex mathematics, while being approachable and expressive. I’m a big fan of Python, I love to teach, and I can’t wait to help teach Python in Ibadan.

### Fatma Elsafoury

I am a final year PhD student at the University of Glasgow. I’m interested in social science computing which is the usage of computing science tools to understand human behavior and to make people’s lives better. My research is about detecting violent incidents from tweets during times of political unrest. Working on a project or PhD for a long time can be stressful at times. So, having interest in Arts and doing activities like drawing, pottery making and screen script writing made my life easier and taught me a lot of skills. Tutoring is another activity that I enjoy and find it a good way to connect and communicate with people.

Programming is a great tool; you can apply it in almost every field. That is why I am excited to be part of this workshop, to help people learn programming and to get them inspired with the great things they can do with it.

## Supporters

### Dr John Williamson

John Williamson is a Lecturer in the School of Computing Science. He has a keen interest in teaching programming, and has been teaching introductory Python for several years.

### Dr Jeremy Singer

Jeremy Singer is a Senior Lecturer in the School of Computing Science. His main research themes are Compilers and Runtimes for Programming Languages.

## Projects

At the end of the workshop, we’re not going to teach you anything new. What’s the point in cramming more in if you’re never given the chance to solve interesting problems with what you know?

Tom, Ben, Sofiat and Fionnuala have put together projects to test your understanding of Python, and to give you some lovely meaty problems that should be fun to work on.

### Project 1: Designing and implementing your own language

It’s nice to be able to write Python, but programming languages actually aren’t that special. Tom’s absolutely fascinated by programming languages, and he solved this problem when *he* was learning Python, and he thinks you can, too.

The problem is to take a simple programming language, and to implement it, so that you can *write and run your own programs*. You’ll come away with a deeper understanding of what programming is and what programming languages are, and a feeling for what the less-mathematical kind of computer science can be like!

You can find Tom’s project in your `pwsafrica/pwsafrica_projects`

folder, or download it here!

### Project 2: Mathematical Modelling and Scientific Computation

In 2015, the Kariba Dam at the Zambezi River between Zambia and Zimbabwe was found to be in danger of failing, and it was advised that action be taken fast. However, there are a number of ways in which to resolve the problem: • doing repair work on the existing dam • rebuilding a dam at the site of the existing one • removing the existing dam and replacing it with ten to twenty smaller dams along the river. Your Task: Pick one of the ways to resolve the issues with the Kariba Dam, implement the model of section 2.1 and investigate the problem by means of simulations. (This is an open ended problem which was featured in the 2017 Mathematical Contest in Modeling 1 .)

You can find Ben’s project in your `pwsafrica/pwsafrica_projects`

folder, or download it here!

### Project 3: Matching Corp Members in the NYSC

The National Youth Service Corps (NYSC) is an organization set up by the Nigerian government to involve the country’s graduates in the development of the country. Since 1973 graduates of universities and later polytechnics have been required to take part in the NYSC program for one year. Have you ever wondered how the allocation of corp members is being carried out by the NYSC administrative? Given the number of students that need to be allocated in each batch, can you estimate how long it will take if this allocation process is done manually, or the amount of human resources that would be expended? Obviously, a lot! To save time and resources, the Director General (DG) of NYSC has approached you as a mathematician and programmer to help design an automated system that can be used to efficiently allocate corps members to one of the 36 states in Nigeria, based on their choices.

You can find Sofiat’s project in your `pwsafrica/pwsafrica_projects`

folder, or download it here!

### Project 4: An animation of firework

We are celebrating the end of our programming workshop and we want to do it in style. The task set is to create a firework display for the closing cermony (on the computer screen!!!)

You can find Fionnuala’s project in your `pwsafrica/pwsafrica_projects`

folder, or download it here!

## Future work

We’ve had a fantastic time at PWSAfrica 2018! Thanks so much for having us in your beautiful country.

We’ve put together one final piece of materials: a Jupyter Notebook containing advice, useful libraries and websites, and a bunch more problems to solve. We hope that, in using it, you’ll find you can actually teach yourself some Python now that you know the basics.

You can download the notebook here. If you have questions, remember you can email and ask.

Thanks so much for attending the workshop!