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, see setup instructions.

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

Attendance is mandatory: Regular participation is essential for learning and understanding the course material.

Lectures

Spring Semester
March 2026 - June 2026
Tuesday 13:00-15:00
Room: Smolarz 103
Bring your laptop and interact with the course Jupyter notebooks :)

Attendance is mandatory!

Target audience

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

Grading

Grading will be based on five 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.
Assignments: 20%
Final Project: 80%

Forum

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

Office Hours

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

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).

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).

Important: Please set up your environment before the course starts. This will ensure you're ready to participate fully from day one.

FAQ

Is attendance mandatory?
Yes! Attendance is mandatory. Active participation in discussions and in-class live coding is essential for keeping up with technical and theoretical material.
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.
Can I use generative AI tools like ChatGPT or GitHub Copilot?
Yes! We encourage you to learn and practice using AI assistants as part of your learning experience. You are welcome to use tools like ChatGPT, Claude, or similar language models to help you think through problems, learn concepts, and refine your writing. Similarly, you can use GitHub Copilot (free in Github Student Developer Pack) or similar coding assistants in VS Code to help you read, write, and review code. These are valuable professional skills in modern scientific computing and software development. However, your work should demonstrate your understanding—use AI as a learning partner, not as a replacement for thinking. When you use AI significantly in your work, it's good practice to briefly acknowledge it.
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."