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)
Practical in R for teaching supervised machine learning (link)
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
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)
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
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)