Skip to main content



  • Credit value: 30 credits at Level 7
  • Convenor: Dr Tristan Cragnolini
  • Assessment: open-book online tests (60%) and coursework tasks (40%)

Module description

Programming is an essential skill for bioinformaticians. In this module we focus on Python, the most widely used programming language for bioinformatics. We will address a range of topics, including: how to write short scripts for handling biological data; how to use Biopython to handle DNA and protein sequence data; and the good programming practices and habits relevant to any programming language.

Building on these fundamental concepts of programming, we then address practical challenges faced by bioinformaticians tackling larger-scale and collaborative programming tasks.

Indicative syllabus

  • Introduction to Python: writing Python programs using Jupyter Notebooks; scalar variables; expressions; Python statements
  • Functions and control statements
  • Lists and strings
  • Ranges, tuples and dictionaries
  • Regular expressions
  • Biopython
  • File handling, Linux and Bash
  • The NumPy, SciPy and Matplotlib libraries
  • Creating functions and modules
  • Creating classes and objects
  • Software development using GitHub
  • Writing web pages
  • Collaborative programming and APIs
  • Web services and remote procedure calling
  • Revision control and bug tracking
  • Software testing and test suites
  • Approaches to debugging

Learning objectives

By the end of this module, you will:

  • be able to write short Python scripts - incorporating a range of core language features (such as loops, lists, dictionaries) - that can successfully tackle a range of problems, including those involving biological sequence data and a variety of numerical challenges
  • use Python library objects within your scripts, and write your own functions
  • demonstrate understanding (through engagement during programming tasks) of advanced programming topics, including: web services, revision control, debugging, software testing
  • demonstrate understanding of the importance of well-defined Application Programming Interfaces (APIs) for sub-components of an application by designing effective APIs
  • be comfortable using the software development platform GitHub and write well-documented and standards-compliant program code.