Lecturer

Course Description

The course will introduce graduate students to models in population biology. We will build models, analyze them using mathematical and computational methods, and fit them to empirical data using statistical methods such as maximum likelihood and Bayesian inference. Every class will present a scientific problem in population biology, a computational method for tackling it, and a Python implementation of the method. Examples will include models from ecology, evolution, epidemiology, and social behavior. In each case, we will introduce a research question, design a model, choose a method, apply it using the Python program language (a leading programming language for scientific research, data science, and machine learning), analyze and visualize the results, and discuss the conclusions.

Instructor: Yoav Ram

Language: The course will be taught in English.

Environment: The course will be given using interactive Jupyter notebooks with built-in exercises and problems. Students should set up an environment on their computer using Anaconda or use a cloud service like Google Colab.

Prerequisites: Some experience in programming and mathematics. See more details below.

Lectures

Spring Semester
May 2024 - August 2024
Thursday 10:00-12:00
Room: Sherman 105
Bring your laptopt and interact with the course material using interactive Jupyter notebooks during the lectures!

Office Hours

Thuesday 12:00-13:00
Room: Sherman 328

Target audience

Graduate students and advanced undergraduate students with some background in programming, calculus, algebra, and probability.
See prerequisites.
Students are expected to dedicate time to self-learning and exercises.

Forum

Course forum on Moodle: announcements, questions, and answers.

Course Books

A Biologist's Guide to Mathematical Modeling in Ecology and Evolution by Sarah P. Otto and Troy Day
Available at the library (including an ebook).

Grading

Grading will be based on bi-weekly assignments and a final project at the end of the course. Assignments will include implementation of existing models and methods; final project will require students to design a new model or extend an existing one and implement it.

Prerequisites

Prospective students are welcome to consult with the instructor about meeting the prerequisites.
  • Programming skills
    All class lectures and assignments will be in Python and use the Python scientific stack. Students are expected to be familiar with Python, NumPy & Matplotlib, or to invest time in becoming familiar. See Calendar for links to tutorials.
  • Calculus & Linear Algebra
    You should be comfortable with differentiation and integration, as well as matrix and vector operations and notation.
  • Probability and Statistics
    You should be familiar with basic probability theory (Bayes' theorem, law of large nubmers, central limit theorem, conditional probability), the characteristics of common distributions (uniform, Poisson, Gaussian, binomial), and standard statistical operations (mean, standard deviation, variance).

FAQ

Can I audit or sit in?
In general we are open to sitting-in guests. We ask that you talk to the instructor before the first class you attend.
I have a question about the class. What is the best way to reach the course staff?
Almost all questions should be asked on Moodle. If you have a sensitive issue you can email the instructor directly.
What do the home assignments look like?
Assignments are given as a Jupyter notebooks and require writing Python code to complete one or more computational tasks.
What is the balance between theory and application in the course?
When possible, lectures will include the theoretical background for the models and methods that will be used. When deep understanding requires advanced mathematics or statistics, or very specific scientific knowledge, students will be referred to the literature.
Is experience with Python a must, or could I use R/Matlab/Java/Wolfram/Maple?
All code examples are in Python with NumPy/Matplotlib/etc. Students with background in other languages will likely be able to handle the material, but additional self-learning will be required.
Where can I find additional resources on scientific computing with Python?
Cyrille Rossant maintains a curated list of awesome scientific Python resources on GitHub.
Kaggle hosts a library of machine and deep learning notebooks.
QuantEcon hosts an open notebook library for economic modeling.
Claus O. Wilke's online preview of the Fundamentals of Data Visualization is a great "guide to making visualizations that accurately reflect the data, tell a story, and look professional."