£480Registration Fee
Register Now- Overview
- Instructors
- Schedule
Course Description
Python is a dynamic, readable language that is a popular platform for all types of bioinformatics work, from simple one-off scripts to large, complex software projects. This workshop aims to give novice programmers an introduction to using Python for research in evolutionary biology and genomics by using biological examples throughout. We will use example datasets and problems themed around sequence analysis, taxonomy and ecology, with plenty of time for participants to work on their own research data.
The workshop will use examples and exercises drawn from various aspects of bioinformatics work. After completing the workshop, students should be in a position to (1) take advantage of the advanced language features in their own programs and (2) use appropriate tools when developing software programs. They will also have a deeper understanding of how Python works internally, which will be invaluable when making sense of existing code and packages.
What You’ll Learn
During the course will cover the following:
- Learning about advanced language features (recursion, complex data structures, comprehensions, exceptions) that are relevant to bioinformatics work.
- Learning about development tools (benchmarking, profiling, unit testing) that can make it easier for us to write code that is both *fast* and *correct*.
- Learning about different programming styles and concepts (object-oriented programming, functional programming) that are suitable for different kinds of problems.
Course Format
Interactive Learning Format
Each day features a well-balanced combination of lectures and hands-on practical exercises, with dedicated time for discussing participants’ own data, time permitting.
Global Accessibility
All live sessions are recorded and made available on the same day, ensuring accessibility for participants across different time zones.
Collaborative Discussions
Open discussion sessions provide an opportunity for participants to explore specific research questions and engage with instructors and peers.
Comprehensive Course Materials
All code, datasets, and presentation slides used during the course will be shared with participants by the instructor.
Personalized Data Engagement
Participants are encouraged to bring their own data for discussion and practical application during the course.
Post-Course Support
Participants will receive continued support via email for 30 days following the course, along with on-demand access to session recordings for the same period.
Who Should Attend / Intended Audiences
This course is intended for participants who already have some experience with Python and are ready to take on more ambitious programming tasks, particularly those involving large or complex datasets. The focus is on writing efficient, scalable code for real-world biological problems. A basic background in biology is assumed, as the examples and exercises reference concepts such as DNA, gene expression, and phylogenetic trees. While the course is grounded in programming, we will occasionally touch on descriptive statistics (e.g., means and standard deviations) in the context of performance measurement.
Please note that this course is not suitable for complete beginners to Python. We assume familiarity with fundamental Python syntax and programming structures—typically covered in the Introduction to Python for Biologists course. If you’re unsure whether the course is the right fit for your current skill level, feel free to contact martin@pythonforbiologists.com for guidance.
Equipment and Software requirements
A laptop computer with a working version of Python is required. Python is free and open-source software for PCs, Macs, and Linux computers.
A working webcam is recommended to support interactive elements of the course. We encourage participants to keep their cameras on during live Zoom sessions to foster a more engaging and collaborative environment.
While not essential, using a large monitor—or ideally a dual-monitor setup—can significantly enhance your learning experience by allowing you to view course materials and work in R simultaneously.
Participants should be able to install additional software on their computers during the course (please ensure you have administration rights to your computer).
Dr. Martin Jones
Martin is a freelance trainer specialising in programming and Linux skills tailored for researchers in biological sciences. With a background in biology and a PhD in large-scale phylogenetics, Martin combines deep scientific expertise with practical computational training to empower researchers to leverage coding and open-source tools in their work.
His teaching primarily focuses on Python programming and Linux, with an emphasis on applications relevant to biological data analysis. Since launching Python for Biologists in 2015, Martin has dedicated himself full-time to teaching and writing, helping bridge the gap between biology and computational skills.
Education & Career
• PhD in Large-Scale Phylogenetics, 2007
• Former Lecturer in Bioinformatics, University of Edinburgh
• Founder of Python for Biologists (2015–present)
• Over a decade of experience training biologists in programming and Linux
Training & Skills
Martin specialises in:
• Python programming for biological research
• Linux command line and scripting
• Bioinformatics workflows and reproducible research practices
Professional Focus
Martin’s work focuses on equipping life scientists with the computational tools necessary to analyse complex biological datasets. He advocates for practical, hands-on training that helps researchers automate tasks, perform reproducible analyses, and develop programming confidence.
Teaching & Writing
• Full-time educator and author on programming for biologists
• Creator of tutorials, workshops, and online courses in Python and Linux
• Active in the bioinformatics and computational biology training community
Links
• Python for Biologists
Session 1 – 03:00:00 – Recursion and Trees
This session introduces two related topics: hierarchical data structures (trees) and recursive functions, which are well-suited for operating on such structures. The session begins with simple biological examples to illustrate recursion before moving on to key tree-based algorithms involving parent-child relationships and common ancestors. A practical exercise focuses on identifying the last common ancestor of a group of nodes, reinforcing the application of recursion in tree traversal.
Key Topics:
Hierarchical data, nested lists, recursive functions, tree structures, recursion vs. iteration.
Session 2 – 03:00:00 – Complex Data Structures
This session reviews Python’s core data types and introduces additional structures such as tuples and sets, highlighting their appropriate use cases. It then explores how basic types can be combined to create more complex, problem-specific data structures. Participants will also be introduced to specialized types from Python’s standard library and discuss the performance implications of different structures using basic benchmarking. The practical component involves parsing a file into a nested data structure to support efficient querying.
Key Topics:
Tuples, sets, nested structures, defaultdict, Counter, big-O notation, performance benchmarking.
Session 3 – 03:00:00 – L Classes and Objects
This session introduces the fundamentals of object-oriented programming in Python, explaining how commonly used data types are implemented as classes. Participants will learn how to define custom classes and shift from an imperative to an object-oriented approach. The session also explores when object-oriented design is appropriate. In the practical component, participants will create simple classes to solve biological problems and gain experience structuring code into reusable components.
Key Topics:
Classes, instances, methods vs. functions, self, constructors, magic methods, library vs. client code.
Session 4 – 03:00:00 – Object-Oriented Programming
Building on the previous session, this session covers advanced object-oriented programming concepts common across many languages. Key ideas such as inheritance, method overriding, and composition are introduced with a focus on their practical use and implementation in Python. Participants will also explore design considerations when structuring object-oriented code. The practical component involves developing a simulation using multiple interacting classes.
Key Topics:
Inheritance, class hierarchies, method overriding, superclasses and subclasses, polymorphism, composition, multiple inheritance.
Session 5 – 03:00:00 – Functional Programming in Python
This session introduces key concepts of functional programming and contrasts them with object-oriented approaches, focusing on how each style supports different design goals. Topics include state and mutability, side effects, and first-class functions. Participants will explore Python’s built-in functional tools and learn how to create their own. The session concludes with a brief look at how functional techniques can simplify parallel programming. The practical component includes hands-on use of functional tools and custom function development.
Key Topics:
State and mutability, side effects, first-class functions, higher-order functions, declarative programming, lazy evaluation, parallelism.
Session 6 – 03:00:00 – Exception Handling
This session covers the principles of handling runtime errors in Python. It begins by distinguishing syntax errors from exceptions and introduces the use of try, except, else, and finally blocks. Participants will explore how exceptions can propagate through a program and how this affects design decisions. The session also includes guidance on using built-in exception types and defining custom exceptions for specific error cases. The practical involves updating code to incorporate structured error handling.
Key Topics:
Exception classes, try/except syntax, exception propagation, context managers, defining and raising exceptions.
Session 7- 03:00:00 – Performance Optimization
This session introduces tools for measuring and improving the performance of Python code. Participants will learn to benchmark runtime and memory usage, profile code to identify bottlenecks, and apply targeted optimizations. Different tools will be compared based on their strengths in various scenarios. The practical component involves analyzing real code, measuring performance, and making improvements.
Key Topics:
Benchmarking, function and line profiling, timing, profiler overhead, performance tuning strategies.
Session 8- 03:00:00 – Unit Testing
This session introduces the purpose and benefits of testing in software development. Participants will use Python’s built-in testing tools to explore various testing scenarios, then implement the same tests using the pytest framework to compare usability and readability. The session also covers specialized tests and how code structure can affect testability. In the practical, participants will build and run test suites for existing code.
Key Topics:
Test design, built-in testing tools, pytest framework, writing test cases, test suites, testing and program design.
Frequently asked questions
Everything you need to know about the product and billing.
When will I receive instructions on how to join?
You’ll receive an email on the Friday before the course begins, with full instructions on how to join via Zoom. Please ensure you have Zoom installed in advance.
Do I need administrator rights on my computer?
I’m attending the course live — will I also get access to the session recordings?
I can’t attend every live session — can I join some sessions live and catch up on others later?
I’m in a different time zone and plan to follow the course via recordings. When will these be available?
I can’t attend live — how can I ask questions?
Will I receive a certificate?
When will I receive instructions on how to join?
You’ll receive an email on the Friday before the course begins, with full instructions on how to join via Zoom. Please ensure you have Zoom installed in advance.
Do I need administrator rights on my computer?
I’m attending the course live — will I also get access to the session recordings?
I can’t attend every live session — can I join some sessions live and catch up on others later?
I’m in a different time zone and plan to follow the course via recordings. When will these be available?
I can’t attend live — how can I ask questions?
Will I receive a certificate?
Still have questions?
Can’t find the answer you’re looking for? Please chat to our friendly team.





5.0
