Biocomputing
Overview
- 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.