COMP 364 Fall 2017: Computer Tools for Life Sciences (3 Credits)

Syllabus PDF


Introduction to computer programming in a high level language: variables, expressions, types, functions, conditionals, loops, objects and classes. Introduction to algorithms, data structures (lists, strings), modular software design, libraries, file input/output, debugging. Emphasis on applications in the life sciences.

IMPORTANT NOTE: COMP 364 (Fall 2017) is equivalent to a new course (COMP 204 Computer Programming for the Life Sciences) that will be offered for the first time in Fall 2018. COMP 364 (Fall 2017) will be considered equivalent to COMP 202 as a prerequisite for any COMP courses. However, students who wish to take COMP 364 in Fall 2017, instead of COMP 202, should consult their departmental advisor (if they are hoping to use COMP 364 instead of COMP 202 to meet a program requirement).

Only one of COMP 364, COMP 202, COMP 204, and COMP 208 can be taken for credit. If you have taken COMP 202 already, you cannot take COMP 364. If you take COMP 364 now, you cannot take COMP 202 later. Please contact Prof. Mathieu Blanchette ( if you have any questions.

List of life science topics used as examples:


By the end of this course, students will be able to:
  1. Design and describe precise, unambiguous instructions that can be used [by a computer] to solve a problem or perform a task;
  2. Translate these instructions into a language that a computer can understand (Python);
  3. Write programs that solve complex problems (especially those arising in Life Sciences) by decomposing them into simpler subproblems;
  4. Apply programming-style and structure conventions to make your programs easy to understand, debug and modify;
  5. Learn independently about new programming-language features and libraries by reading documentation and by experimenting.
Prerequisites: BIOL 112 and A CEGEP level mathematics course

Recommended Software: Python 3.6, Anaconda, Sublime (or any other plain text editor)

Restrictions: Only one of COMP 204, COMP 202 and COMP 208 can be taken for credit. COMP 204 cannot be taken for credit with or after COMP 250, COMP 206, or COMP 364.


Christopher John Frederick Cameron <christopher[dot]cameron[at]mail[dot]mcgill[dot]ca>

Carlos G. Oliver <carlos[dot]gonzalezoliver[at]mail[dot]mcgill[dot]ca>

Teaching Assistant

Roman Sarrazin Gendron <roman[dot]sarrazingendron[at]mail[dot]mcgill[dot]ca>

Pouriya Alikhani <pouriya[dot]alikhani[at]mail[dot]mcgill[dot]ca>

Office Hours

Chris: Mondays 2:00-3:30 PM TR 3104
Carlos: Wednesdays 1:00-2:30 PM TR 3104
Roman: Thursdays 11:30-1:00 PM TR 3104
Pouriya: Tuesdays 3:00-4:30 PM TR 3104
*If TR 3104 is locked, please look for the instructor/TA in TR 3090

Lecture Schedule

Lectures: MWF 3:35-4:25 PM
Location: EDUC 216
How to Think Like a Computer Scientist: Interactive Edition (Python)

Student evaluation:
Assignments: 35% (5 assignments worth 7% each)
Quizzes: 5% (5 quizzes worth 1% each)
Midterm exam: 20%
Final exam: 40%

5 Python programming assignments, each aiming at addressing a specific biological question.
Midterm Exam: Tuesday, October 24, 2017 7:05-9:05 PM. Location: ENGMC 204

Useful Links:
Lecture # Date Topic Material
1 06-09-17 Introduction Slides
2 08-09-17 What is a computer: CPU, RAM, storage, communication. Binary numbers, instructions Slides
3 11-09-17 Python programming: What is code? How write code? How to run it? Basic programs Slides
4 13-09-17 Python programming: variables and types. Program execution. Slides
5 15-09-17 Python programming: Control flow: conditionals, boolean expressions Slides
6 18-09-17 Python programming: Lists Slides
7 20-09-17 Python programming: Control flow: for loops, while loops Slides
8 22-09-17 Putting it together: Nested loops and conditionals Slides
9 25-09-17 Python programming: Functions I Slides
10 27-09-17 Python programming: Functions II - return and arguments, namespaces Slides
11 04-10-17 Program execution: Exceptions Slides
12 06-10-17 Python programming: Dictionaries Slides
13 11-06-17 Putting it together - part II: Advanced examples; Commenting code Slides
14 13-06-17 Algorithm design: Linear and Binary Search Slides
15 16-06-17 Algorithm design: Selection and Bubble Sort Slides
16 18-06-17 Python programming: File IO Slides
17 20-06-17 Python libraries; How to read and use an API Slides
18 23-10-17 Review session
24-10-17 Midterm exam
19 25-06-17 Using libraries: NumPy & Data visualization with MatPlotLib (part one) Slides
20 27-06-17 Using libraries: NumPy & Data visualization with MatPlotLib (part two) Slides
21 30-10-17 Python programming: Internet IO Slides
22 01-11-17 Object-oriented programming: Modules, Classes, and Objects Slides
23 03-11-17 Object-oriented programming: Modules and Packages Slides
24 06-11-17 The Standard Library Slides
25 08-11-17 Sequence Analysis using BioPython Slides
26 10-11-17 OOP: Inheritance + Sequence analysis in BioPython (Part 2) Slides
27 13-11-17 Biological data analysis with BioPython: molecular structures Slides
28 15-11-17 Notions of machine learning Slides
29 17-11-17 Intro to machine learning with scikit-learn (part one) Slides
30 20-11-17 Intro to machine learning with scikit-learn (part two) Slides
31 22-11-17 Intro to machine learning with scikit-learn (part three) Slides
32 24-11-17 Introduction to image analysis with scikit-image (part one) Slides
33 27-11-17 Introduction to image analysis with scikit-image (part two) Slides
34 29-11-17 Regular expressions Slides
35 01-12-17 Advanced Python: Generators, Decorators, and Context Managers Slides
36 04-12-17 A code tasting. Slides
37 06-12-17 Review session

Right to submit in English or French written work that is to be graded:
In accord with McGill University's Charter of Students' Rights, students in this course have the right to submit in English or in French any written work that is to be graded.

Academic Integrity statement:
McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offences under the Code of Student Conduct and Disciplinary Procedures (see honest/ for more information).