Prepared by: Jean-Baka Domelevo Entfellner and Shakuntala Baichoo
Revised by: Shakuntala Baichoo
Module Name: Introduction to Programming for Biologists
Contact hours (to be used as a guide): Total (40 hours), Theory (50%), Practicals (50%)
This module aims at teaching the students programming as a tool to solve biological problems. More specifically, in this module students will:
1. Learn about the basic programming concepts
2. Understand the importance of Input and Output in a program
3. Learn about how to perform computations with numbers
4. Learn how to programmatically manipulate texts as biological/genomic data mostly consists of DNA and protein sequences
5. Learn how to write programs that can read from and write to text files in view of handling sequence information amongst others.
6. Learn how to program lists and iterative control structures
7. Appreciate the importance of control structures
8. Understand the concept of modularization when writing large programs
9. Learn the importance of regular expressions when handling biological data
10. Learn the use of dictionaries when representing data as a (key, value) pair.
11. Write large-scale programs using existing biological libraries.
SPECIFIC OUTCOMES ADDRESSED
On completion of this module, students should be able to:
1. Apply computer programming to efficiently solve biological problems
2. Make use of the appropriate data structures when solving specific biological programs
3. Break a big computational problem into smaller manageable sub-problems which can be solved more easily
4. Understand the three types of control structures (sequence, repetition and selection), as building blocks for all programs
5. Map a biological problem to a computational one so that it can be easily solved using computing resources.
BACKGROUND KNOWLEDGE REQUIRED
H3ABioNet bioinformatics modules as pre-requisites: None
Additional: Basic general-purpose scientific knowledge, basic arithmetic skills, and some familiarity with computers.
BOOKS & OTHER SOURCES USED
1. Python for biologists: A programming course for complete beginners by Martin Jones (2013) 2. Think Python: How to think as a computer scientist (http://www.greenteapress.com/thinkpython/thinkpython.html)
A) Theory lectures (hour allocations include practical time)
1. Introduction to Programming (and Python shell) (3 hour(s))
2. Printing and Manipulating text (3 hour(s))
3. Reading and writing to files (5 hour(s))
4. Conditional tests (3 hour(s))
5. Lists and loops (3 hour(s))
6. Writing your own functions and modules (5 hour(s))
7. Regular expressions (5 hour(s))
8. Dictionaries (3 hour(s))
9. Using bioPython (5 hour(s))
10. Writing large-scale programs (5 hour(s))
B) Practical component
This course should first start with examples written in pseudocode, to put the emphasis on the semantics and not the syntax. Then, one can use an interactive Python shell to demonstrate concepts, plus a simple text editor later on, once the students start writing functions. This section “practical component” follows the same structure as the previous section “Theory lectures”: practicals aim at having the students manipulate the concepts seen in the lectures, right after they are introduced to them.
ASSESSMENT ACTIVITIES AND THEIR WEIGHTS
Class Exercises: 5%
2 Written Tests: 30%
Practical Assignment: 15%
Final Written Exam: 50%