Teaching

I am very passionate about making computational and statistical tools accessible to biologists. To this end I have conducted lectures that demystify computational techniques for experimentalists. In these seminars I also teach biologists about the basics of programming.

I work with educators to make teaching more accessible and meaningful for students.

I thoroughly enjoy the process of teaching. This page is a placeholder for all teaching related materials.


I have lectured at the University of Cambridge Department of Computer Science, University of Oxford Summer School in Economic Networks (link), the University of Cambridge (Cambridge Africa programme) and the University of Cambridge Bioinformatics Training Center (link) (link).

I have also been trained in teaching at the University of Oxford Doctoral Training Center and the Cambridge Centre for Teaching and Learning at the University of Cambridge.


1) I taught Unconventional approaches to Artificial Intelligence at the University of Cambridge (link) (full talk) (talk)

This is a special topics course I developed.


2) I have taught reproducible research in R at the University of Cambridge (link) (talk)


3) Teaching notes and repository for teaching mathematics of machine learning and unsupervised learning are here


4) Teaching notes for teaching basic statistics are here


5) Teaching notes for Introduction to Machine Learning I taught at the University of Cambridge (link) (link) (link) (link)


6) Class material for data visualization I taught at the University of Cambridge (link)

A preprint and a teaching resource for a class I taught on the mathematics of data science and visualization (link, link)

Class material for advanced data science (link, link)


7) I have taught supervised machine learning at the University of Cambridge (link) (link) (talk)



8) Teaching R markdown and git/version control at the University of Cambridge (link)

In recognition of my teaching, I was given a title of Affiliated Lecturer for one year at the University of Cambridge (link) (link) (link)


9) Other teaching resources (link)


If you find these teaching resources helpful, please consider citing this work: Banerjee, Soumya & Ghose, Joyeeta. (2018, January). A Teaching Resource for Complex Systems, Machine Learning and Computational Biology. Zenodo. http://doi.org/10.5281/zenodo.1098576 (link) (researchgate)

All my teaching materials are also available on bitbucket, on the open science foundation and GitHub (links) (link) (link)

Demo teaching videos that I made are available here and here



If you want to do a project me, please get in touch. You can see here for some project ideas.




1) My class presentation for Nov 2nd 2010 on the generality of the SIR (Susceptible-Infected-Recovered) model

2) Instructions and more material:

      Download the Berkeley Madonna solver.

      Help on how to use Berkeley Madonna and helpful example commands are here

After downloading it, you can run everything in "Demo Mode". After installing Berkeley Madonna, simply clicking on the .mmd files (file1, file2)

will open up the graphical user interface. Simply click on "Run" and go to the window (from Window in the menu bar) to see the output. The

sliders with parameters are already set up.

If you want to include more parameters in them, simply click on the slider and it will bring up another window where you can add new parameters.

The knockout mice TCL.mmd file uses the virus data from the file igm_diamond_mice_knockout. If you want to see the solver fit the model to data,

go to Parameters -> Curve Fit. Click the "Import Dataset" button and select the virus data file. You can try changing the initial guesses of all the

parameters and then click on OK and the solver will get into action and do the fitting! The code for the differential equations is very self explanatory.

You just need to give the equations and the initial values of the populations.

Lastly, there is the paper on spreading of ideas which also uses a SIR model.

3) I recently gave another lecture on mathematical modelling to a non-mathematical audience.

I started with a very simple SIR model, and explained the model and the effect various parameters have on the behaviour of the model.

This is very easy to do in Berkeley Madonna, where you can create sliders and visually investigate the effect of increasing or decreasing some parameter.

Here is a Berkeley Madonna model file to play around with these parameters (simple model).

I then generated some data on infections (data file) and then demonstrated how to fit the model to the data using the "curve fitter" option in Berkeley Madonna.

The curve fitter option allows you to match your model predictions to data and thereby estimate (find) the values of your model parameters.

Here is a Berkeley Madonna file that fits a simple SIR model to infection data (fitting model to data).

I then pointed out that this fitting procedure is usually sensitive to the initial guesses you give to the curve fitter, i.e. choosing different values for model parameters

can give you very different results. This usually complicates the fitting process which means you may have to more sophisticated programs written in MATLAB, like the ones here (sophisticated fitting programs).

Here is a Berkeley Madonna file that gives different initial guesses and ends up producing a bad fit to the data (fitting model to data issues).

4) A Berkeley Madonna file for the Lotka-Volterra model (file) (Berkeley Madonna model file, more advanced version with sliders). Copy the contents of this file into Berkeley Madonna and hit Run.

5) Berkeley Madonna files implementing the basic target cell limited model (file1, file2)

6) Berkeley Madonna files for implementing an immune response model with T-cell responses (file1, file2) and associated paper

7) In another recent lecture I also explained the law of mass-action and showed demo examples using NetLOGO example models. The law of mass action underlies many ODE models in biology.

8) I also teach the basics of biology and immunology using materials here and NetLOGO models of DNA protein synthesis

9) NetLOGO model of ants collecting food and the B-Z reaction (reaction diffusion reaction which can produce persistent patterns in media) 

(teaching resource) Teaching resource for students and the general public on a computational framework of the value of information in origin of life questions.

Information plays a critical role in complex biological systems. This paper is a teaching resource that explains the role of information processing in questions around the origin of life and suggests how computational simulations may yield insights into questions related to the origin of life.

Also available from link here

10) Code and teaching resource for using open data to model complex collaboration networks (link) (other projects on bitbucket)

11) An introduction to oscillators and circuits in biological systems and bifurcation diagrams (paper) and using xppauto to generate phase plots and bifurcation diagrams : Berkeley Madonna file for intra-cellular network link

link

A Java applet to visualize dynamical systems (link)

Web application to simulate dynamical systems (link)

R Shiny app to simulate dynamical systems (link)

12) Agent based modelling in python (mesa, pyabm, more resources and tutorials)

13) Agent based models of the immune system

Download the CyCells Agent-Based Model (ABM) simulator (by Christy Warrender and Drew Levin)

(CyCells) http://sourceforge.net/projects/cycells/

Here is a sample definition file and a sample init file. To execute simply download cycells and save the

two files in the same folder and type the following in the command line:

./CyCells -d mys29.def -i mys29.init -t 10000

The -t specifies the number of time steps that it has to run.

The simulation produces a file (test.history) which has the data from the run.

Play around with different kinds of immune system models and immune system cells (by changing the .def and .init files) and analyze the output in the test.history files

14) Stochastic simulations using StochPy in Python (link to demo examples)

15) Machine learning and data science basics coupled to analysis of complex systems (code, open source data science projects)

16) Machine learning and data science

          Machine learning resources (link, link to playlists)

          Data science tools and reproducible machine learning (link)

          Open source data science projects

          Bayesian techniques

                Tutorial that I created on Bayesian linear regression

                Tutorial that I created on Bayesian LASSO

          Deep learning teaching resources

          Natural language processing (NLP) teaching resources

          Teaching materials for basic statistics and machine learning from a bootcamp (code, tutorials, notes) (link) (github) (github)

                            (link) (link)

          Teaching demonstrations for AI and machine learning from MIT course (link)

17) A full fledged course will include basic programming (using scripting languages like bash, python, R and MATLAB), computer science basics, basic statistics, machine learning, bioinformatics, non-linear dynamical systems, complex systems and data science. A data science course will also include preliminaries of business processes, business communications skills, data visualization skills, data science engineering (scaling up and deploying solutions using technologies like Kubernetes, AirFlow) and a capstone project preferably with an industry partner (link). Examples of capstone projects are here and here (private)

19) Agent-based models in your browser with social policy implications and outreach (link)

20) Communication skills, business skills, business processes and trans-disciplinarity

21) More teaching resources

    Complex Systems

    Complexity Explorer

    A course on practical applications of mathematics

    Course on PDEs and ODEs (link, link, teaching resources, annotated textbooks and resources on ODEs

    Course on probability and statistics

    SAGANet on origins of life and astrobiology

    Play with Conway's Game of Life simulations (link)

    Play with Lenia origin of life simulations virtual creatures using GUI (link) (code) (paper)

    University of Vermont Complex Systems Courses (link)

    Introduction to Natural Computation (link)

    Gapminder teaching resources with GUI to explore world inequality data, health data and socio-economic data (link) (tools)

    Synthetic biology SBOL pysbol tutorial (link)

    Theory of computation (by Cris Moore) (link) (link)

22) Explanation of Computer Science algorithms using animations and graphics (link)

23) Other teaching resources

Data science resources

    https://sites.google.com/site/neelsoumya/research-resources/tools-for-data-scientists

Machine learning resources

    https://sites.google.com/site/neelsoumya/research-resources/machine-learning

    https://github.com/neelsoumya/butterfly_detector

    https://github.com/neelsoumya/intro-machine-learning

Basic statistics and prerequisities

    https://sites.google.com/site/neelsoumya/research-resources/basic-statistics

    https://github.com/neelsoumya/basic_statistics

Demo teaching lecture

    A lecture on fault tolerant distributed computing

        https://youtu.be/omxbpel-b64

    A lecture on a fundamental concept in machine learning (bias variance tradeoff)

        https://www.youtube.com/watch?v=4_la9-Ehvmo

Mathematical modelling

    https://github.com/neelsoumya/mathematical_models

Programming resources for teaching programming languages

    https://github.com/neelsoumya/programming_resources

Compilers and theory of types

    https://en.wikipedia.org/wiki/Principles_of_Compiler_Design

    https://www.cis.upenn.edu/~bcpierce/tapl/

Algorithms

    Cormen book on algorithms

    https://web.ist.utl.pt/~fabio.ferreira/material/asa/clrs.pdf

Theory of computation

    https://www.youtube.com/watch?v=EwSYnIX2EF8&list=PLa8f1-ESrfVqh1K3qVxU5n4QZp7koYKcM&index=1

Immunology

    https://sites.google.com/site/neelsoumya/immunology-resources

Bioinformatics

    https://sites.google.com/site/neelsoumya/research-resources/bioinformatics

    https://github.com/neelsoumya/bioinformatics_resources

Basics of biology

    https://github.com/neelsoumya/biology_basics

Complex systems resources

    https://sites.google.com/site/neelsoumya/teaching

Communications skills

    https://www.youtube.com/watch?v=Unzc731iCUY

Resources for teaching compiled in an Open Science Foundation (OSF) project

    https://osf.io/25gnz/

24) Teaching strategies

          Writing exercises at the beginning of class and how to start a class

          How to speak by Prof. Patrick Winston

          How to teach by Prof. Patrick Winston

25) Theory of computer science by Cris Moore (link)