Services

I love learning and teaching about all sorts of things, and especially to draw connections between seemingly unrelated areas.

I currently offer three "levels" of trainings or tutorials:

and these are available either as group training sessions or as 1-1 sessions, and can be in-person or remote.


Software skills for researchers

Computational methods are becoming an increasingly important part of research, not only in STEM but also in the arts and humanities. Whether you're a researcher looking to turbocharge your simulations or scientific computing, or you're looking to make the jump from academia into industry, I can guide you having made the same journey myself.

Here are some of the areas that might be interesting – but they can be tailored towards your interests, depending on your subject matter. Please get in touch to arrange a call!

Practical programming in Python

A little goes a very long way. Learn the basics of the Python language, with a focus on "automating the boring stuff" like text and data processing, web scraping, and manipulating audio, images and PDF files.

By the end of these lessons, you will have set up a Python environment, learnt the syntaxes, and met the tools required to perform these processes.

Software engineering skills and communication

Have you secured the basics and are looking to scale up your workflows and become a "power user"? Learn how to use source control to manage and review your work, and how to use test frameworks to ensure reliability, as well as some of the variety of other tools available on Unix platforms.

Most importantly, learn to "think like a developer" – how to reason about a complex, unfamiliar, and often unreliable system; and how to communicate about them to others, be that for publications, documentation, code reviews or bug reports. This also helps you be a more effective (and responsible) user of generative AI tools.

Algorithms, system design and networks

Whether you're looking to secure your next (or first) job as a software engineer and are preparing for interviews, or simply want to write more effective code, it is essential to understand the principles.

Let's meet the tricks and tools that computer scientists have developed to solve problems efficiently; as well as the principles behind the complex and distributed systems holding up modern digital services, and the design decisions and tradeoffs made.

Mathematical modelling and scientific computing

Modern frameworks make it easy to quickly build complex systems, but to take them further it is important to understand the mathematical principles that they are founded upon. Get a systematic grounding for topics in applied maths such as linear algebra, Fourier methods and numerical computing.

The syllabus will roughly be undergraduate-level; for more advanced students I will also introduce more specialised topics like mathematical modelling and simulation of real systems.

About me

I started doing serious programming in C++ during my PhD, but found it a bit of a chore – I knew how to write and compile code but not effectively, and this got in the way of answering interesting research questions. However, several years working in industry (ex-Meta) taught me the skills that I wish I had known and developed as a junior researcher.

I have years of experience in tutoring, both to students in academic settings as well as in industry. Here are some recommendations from former colleagues or students:

I was consistently impressed by her ability to bridge the gap between complex DSP theory and practical software implementation. She is exceptional at translating heavy mathematical concepts into efficient code. If you are looking for someone who understands the 'why' behind the math and the 'how' of the code—especially in the audio space—Joanna is the one to hire.

I first met Joanna when I was a third-year undergraduate at Cambridge. She went above and beyond as a supervisor, taking extra time to go through topics from the lecture notes to ensure I fully understood the material. When the opportunity arose to choose tutors for the She talks science STEP summer school, Joanna was a natural first choice. Her kind demeanour and encouraging approach to problem-solving always brings out the best in her students.

Joanna has been one of my biggest supporters and mentors throughout my journey to becoming a Data Analyst. I’m honestly not sure I would have ever started learning Python without her encouragement and guidance. She was always patient with my countless questions and had a real talent for breaking complex ideas into clear, approachable concepts.

I learned a lot through the code review process, where her comments would often teach me something new, or allow me to consider a different approach that would make my code more maintainable in the long run. I would definitely recommend her as a coach/mentor in all things science and software engineering.

Check out my other recommendations on LinkedIn!


Cambridge teaching

I teach a number of courses in the Mathematical Tripos at Cambridge. I currently offer supervisions in the following courses:

  • Fluid Dynamics I
  • Mathematical Biology
  • Methods ("engineering maths": calculus, Fourier transforms, PDEs)
  • Quantum Mechanics: resources and posts
  • Variational Principles (calculus of variations)

In recent years I have also taught many other courses including

  • Dynamics and Relativity
  • Probability

I do not organise supervisions with Cambridge undergraduates directly – please speak to your Director of Studies.

However, I'm always happy to take external students who want to learn this material simply for the sake of learning; do get in touch.


Tutoring, A level, university preparation, etc.

I offer 1-1 or group teaching in the following subjects:

  • A level Maths and Further Maths
  • STEP, MAT and other entrance exams
  • A level Physics
  • Python (see above)
  • music theory (up to grade 5)

Lessons can be in person or remote. Please contact me if you would like to inquire about my availability.