Skip to main content

Unit information: Scientific Programming in 2020/21

Unit name Scientific Programming
Unit code BIOLM0032
Credit points 20
Level of study M/7
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Dr. Matt Williams
Open unit status Not open
Pre-requisites

None

Co-requisites

None

School/department School of Biological Sciences
Faculty Faculty of Life Sciences

Description

This unit will introduce students to the theoretical and practical aspects of programming applied to scientific data. These include UNIX command line, the basics of scientific programming (e.g., bash, Python), connection to remote computers, work with High-Performance computers and how to write code in a professional way. The students will have opportunity to plan, develop and implement their own bioinformatic scripts as well as interact with remote clusters.

The aim of this unit will be to:

  1. Provide students with a detailed understanding of the concepts behind designing and writing their own programming scripts.
  2. Provide students with a detailed understanding of the approaches to connect and interact with remote computers, especially High-Performance computer clusters.

Intended learning outcomes

The Learning Outcomes (LOs) for this unit are:

A: Knowledge and Understanding:

  1. to understand the structure and behaviour of Unix operating systems.
  2. to develop knowledge on the theoretical aspects behind the design of program algorithms.
  3. to acquire the concepts behind the structure of computer clusters and remote connections.

B: Intellectual Skills/Attributes:

  1. to devise the best bioinformatic approaches (e.g., bash vs scripts) to solve different bioinformatic problems
  2. to design computer algorithms and critically assess their suitability in different scenarios
  3. to plan the best use of infrastructures (e.g., use of local computers vs remote) to solve different computational tasks.
  4. to design software which is sustainable and sharable.

C: Other Skills /Attributes (Practical/Professional/Transferable):

  1. to acquire proficiency to work with Unix command line.
  2. to demonstrate competence in scripting using different languages (bash, Python).
  3. to use a range of computational equipment (from desktop personal computers to high-performance clusters) to analyse data.

Teaching details

The unit will be delivered through a mixture of short lectures followed by individual exercises with computers. Blackboard will be used to engage students with the unit content.

Assessment Details

A summative computer assessment will consist of a final computer task integrating all the learning objectives.

Reading and References

  1. Think Python 2e by Allen B. Downey
  2. Learn Python the Hard Way by Zed A. Shaw

Feedback