Notes on curriculum.

Assumption is that we are starting with competent, professional programmers. There could be "remedial" and tutorial materials to bring others up to speed, but the typical professional would be taken as point of reference. Let's not make assumptions about particular languages or orientations -- we'll start with people who know how to program useful applications.

Curriculum to include:

Stochastics:

* Basic probability theory: probability spaces, random variables, ...

* Random processes. Discrete and continuous. Markov chains, ...

* Case studies in random process simulation. Random walks, Brownian motion, ...

* Monte Carlo simulations

Computer science, software engineering, and programming:

* Scientific programming in different language frameworks. Standard industrial languages (object oriented), scripting languages, functional programming languages, array-based languages, ...

* Platforms for scientific computing. Matlab, Octave, Scipy, ...

* Storage of masses of scientific data. Relational databases, HDF5, ...

* Application frameworks for developing interactive software models. The Azimuth javascript library.

Straight math:

* Linear algebra

* Differential equations

* Numerical methods

Applications:

* Stochastic processes in genetics. Wright-Fischer, ... Evolutionary simulations.

* Modelling of biological development processes, e.g. Xia's model of a growing plant leaf.

* Reaction network theory (Petri nets)

* Premises of basic climate models: atmospheric chemistry, ...

* Introduction to basic climate models

* Software engineering for climate models

Final projects:

* ...