COMP 364 Fall 2017: Computer Tools for Life Sciences (3 Credits)
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 (email@example.com) if you have any questions.
List of life science topics used as examples:
- Central dogma of molecular biology
- RNA and/or protein structure prediction
- Genome sequencing and analysis
- Biological networks
- Biomarker discovery
- Biosystems dynamics
- Cell and biomedical imaging
By the end of this course, students will be able to:
Prerequisites: BIOL 112 and A CEGEP level mathematics course
- Design and describe precise, unambiguous instructions that can be used [by a computer] to solve a problem or perform a task;
- Translate these instructions into a language that a computer can understand (Python);
- Write programs that solve complex problems (especially those arising in Life Sciences) by decomposing them into simpler subproblems;
- Apply programming-style and structure conventions to make your programs easy to understand, debug and modify;
- Learn independently about new programming-language features and libraries by reading documentation and by experimenting.
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>
Roman Sarrazin Gendron <roman[dot]sarrazingendron[at]mail[dot]mcgill[dot]ca>
Pouriya Alikhani <pouriya[dot]alikhani[at]mail[dot]mcgill[dot]ca>
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
Lectures: MWF 3:35-4:25 PM
Location: EDUC 216
Textbook: How to Think Like a Computer Scientist: Interactive Edition (Python)
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
||What is a computer: CPU, RAM, storage, communication. Binary numbers, instructions
||Python programming: What is code? How write code? How to run it? Basic programs
||Python programming: variables and types. Program execution.
||Python programming: Control flow: conditionals, boolean expressions
||Python programming: Lists
||Python programming: Control flow: for loops, while loops
||Putting it together: Nested loops and conditionals
||Python programming: Functions I
||Python programming: Functions II - return and arguments, namespaces
||Program execution: Exceptions
||Python programming: Dictionaries
||Putting it together - part II: Advanced examples; Commenting code
||Algorithm design: Linear and Binary Search
|| Algorithm design: Selection and Bubble Sort
||Python programming: File IO
||Python libraries; How to read and use an API
||Using libraries: NumPy & Data visualization with MatPlotLib (part one)
||Using libraries: NumPy & Data visualization with MatPlotLib (part two)
||Python programming: Internet IO
||Object-oriented programming: Modules, Classes, and Objects
||Object-oriented programming: Modules and Packages
||The Standard Library
||Sequence Analysis using BioPython
||OOP: Inheritance + Sequence analysis in BioPython (Part 2)
||Biological data analysis with BioPython: molecular structures
||Notions of machine learning
||Intro to machine learning with scikit-learn (part one)
||Intro to machine learning with scikit-learn (part two)
||Intro to machine learning with scikit-learn (part three)
||Introduction to image analysis with scikit-image (part one)
||Introduction to image analysis with scikit-image (part two)
||Advanced Python: Generators, Decorators, and Context Managers
||A code tasting.
| 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 www.mcgill.ca/students/srr/
honest/ for more information).