Prepared by: Shakuntala Baichoo and Jean-Baka Domelevo Entfellner
Revised by: Shakuntala Baichoo
Module Name: Programming I
Contact hours (to be used as a guide): Total (90 hours), Theory (50%), Practical (50%)
The main purpose of this module is to introduce to the students the concepts relating to problem solving through the efficient use of algorithms and subsequent implementation of the algorithm in any language of choice that is suitable to the application area. More specifically, in this module students will:
1. understand Problem Solving
2. be exposed to the basic program design tools namely pseudocode and flowchart
3. appreciate the basic relationships that exist between problem solving and program development
4. learn about the most important programming paradigms namely imperative, object-oriented and functional
5. understand the different control structures of program design
6. work with fundamental data structures, data types, arithmetic operations, etc.
7. appreciate the importance of object-oriented programming
SPECIFIC OUTCOMES ADDRESSED
After successfully completing this module, students should be able to:
1. Demonstrate a sound understanding of the fundamental concepts of programming.
2.Apply the three types of control structures (sequence, repetition and selection), as the building blocks for all programs.
3. learn the following concepts via the mechanics of argument passing: concepts of variable assignment, different data types, the memory allocation model, and functions and function calls
4. write programs with I/O capabilities
5. design and implement, independently or as part of a team, moderately complex programs to solve specific computational problems
6. demonstrate an appropriate level of competence when writing modular programs including classes/objects
7. understand the application of different data structures for different problems
8. develop algorithms to perform some basic sorting and searching.
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. Think Python: How to think as a computer scientist (http://www.greenteapress.com/thinkpython/thinkpython.html)
2. Introduction to Computer Science using Python by by Charles Dierbach (Wiley), 2015
A) Theory lectures
1. Why are computers and computer programming so useful, particularly to bioinformaticians: they can process large amounts of data quickly and in an automated fashion (e.g. sort a large series of genes according to some criteria, calculate statistics on a dataset, fit regression models, build phylogenetic trees from sequence alignments, simulate data, etc). ( 3 hour(s))
2. Overview of the components in a computer: processing units (CPU cores), live memory, disk storage, input/output devices, peripherals. Give units and orders of magnitude for computing speed, memory capacity and storage capacity. ( 3 hour(s))
3. Introduction to problem solving techniques (3 hour(s))
4. Introduction to programming paradigms (3 hours))
5. Python basics (3 hour(s))
6. Data types: bools, integers, floats and strings. (3 hour(s))
7. String data type in more detail along with built-in functions to manipulate them. (3 hour(s))
8. Introduction to function and function calls, students to understand the difference between functions as objects and function calls as processing steps. ( 3 hour(s))
9. Control Structures: If/else conditionals, for and while loops. ( 6 hour(s))
10. Structured data types: arrays/vectors, stacks and lists (Python lacks a proper data type for stacks, but the pop() and append() functions enable to handle lists as stacks). ( 3 hour(s))
11. Recursion and recursive functions. ( 3 hour(s))
12. Last data type seen in this course: dictionaries. ( 3 hour(s))
13. Introducing classes and objects. ( 3 hour(s))
14. Using and writing Python modules (e.g. random and time modules). ( 3 hour(s))
B) Practical component
15 practicals, 15 periods (15x 180 min) each:
Throughout the course, 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 were introduced to them.
ASSESSMENT ACTIVITIES AND THEIR WEIGHTS
Class Exercises: 5%
2 Written Tests: 30%
Practical Assignment: 15%*
Final Written Exam: 50%
*our advice is not to make each and every practical for marks, in order to not put too much counter-productive stress on the students. Practicals are privileged moments when students have the opportunity to understand the concepts as they put them into play.