See the schedule for topics by week and links to the homework.

Here is a collection of student-transcribed notes. (Notes from Fall and Winter 2019/2020 can be found here and here.)

And, here is a collection of in-class demonstrations.

Applied Mathematics I: Computation and combinatorics

Goals: Proficiency with advanced methods for computation and algorithms, with a focus on tools from graph theory; deep understanding of the tools underlying data analysis and predictive mechanistic modeling: proficiency with common stochastic processes, their uses in modeling and computation, and ability to simulate and visualize these. Students completing this course should be able to implement and analyze algorithms in python, have a sophisticated mathematical understanding of uses and descriptive statistics of graphs (often known as “networks” in other fields), be familiar with the mathematical basis of common stochastic models, explain assumptions underlying these models, identify plausible uses and misuses in real life, and know how to calculate (mathematically and computationally) important quantities. Examples and applications will be drawn from biology and data science.

Topics: Enumerative combinatorics, algorithmic complexity, graph theory and the graph Laplacian(s), random graphs, random spanning trees, Markov chains, Brownian motion, Gaussian processes, point processes, diffusions and associated PDE.


Experience with programming similar to an undergraduate course (preferably in python). Familiarity with probability, random variables, and linear algebra at an undergraduate level.

Course structure

Three hours of lecture (including computer demonstration and chalkboard exposition), and 1.5-2 hours of computer lab (in a classroom, mostly consisting of either demonstration or pair programming on student laptops) per week.


Starting in the middle of the last time we taught this course, the world got an applied crash course in many of the topics we will cover: branching processes, evolution, and other random processes generally. It’s our goal to run this class in a way that provides everyone access in a way that feels safe, flexible, and supportive. As of the start of the quarter, UO requires students and employees to be fully vaccinated, and masks to be properly worn inside. This is a fairly small class, with room to spread out in the classroom, and I plan to teach wearing a mask. (If you rely on lip reading to understand lectures, please let me know, and I’ll make adjustments!) However, there will be times when you can’t or don’t want to attend class in person: for instance, if you have COVID syptoms, if you are a member of a high-risk group, or if life intervenes in some other way. So, I will make class available remotely as well, by broadcasting lectures on zoom (see Canvas for the link) and making the recordings available afterwards on Canvas. We’ll do our best to make participation possible for remote students, and will discuss ways to facilitate this in class. For more information about UO’s current policy, see this Q&A.

Homework and assessment

Weekly homeworks will consist of a mix of pen-and-paper problems and computational exercises. Computational homework will be turned in as jupyter notebooks, allowing integration of programming, simulation results, and LaTeX into a single document. There will be a final exam, which will be taken in-class, on paper - we will assess understanding of computational methods by asking for written descriptions of algorithms (for instance). Grades will be assigned based on either 40% homework + 30% midterm + 30% final, or 20% homework + 40% midterm + 40% final, whichever is larger.


  • A recent version of Python
  • A working installation of Jupyter
  • The python package numpy
  • A good code editor like Atom


We will not follow a single text, but students who would like additional reading might find these useful:

  • Bollobas, Modern Graph Theory nicely covers the graph theory topics we will cover (and more).
  • Gardiner, Stochastic Methods: A Handbook for the Natural and Social Sciences has useful descriptions of many stochastic processes we will cover, from a physical point of view.
  • Bass, Stochastic Processes takes a more formal approach.

Inclusion and accessibility

Please tell us your pronouns and/or name, especially if it differs from the class roster. We take seriously our responsibility to create inclusive learning environments. Please notify us if there are aspects of the instruction or design of this course that result in barriers to your participation! You are also encouraged to contact the Accessible Education Center in 164 Oregon Hall at 541-346-1155 or

We are committed to making our classroom an inclusive and respectful learning space. Being respectful includes using pronouns for your classmates. Your classmates come from a diverse set of backgrounds and experiences; please avoid assumptions or stereotypes, and aim for inclusivity. Let us know if there are classroom dynamics that impede your (or someone else’s) full engagement.

Please see this page for more information on campus resources, academic integrity, discrimination, and harassment (and reporting of it).