A course like this can never cover everything (indeed, it already crams in too much!). However, for scientific coders, there's a lot that might be useful, even at an introductory level like this.
Given this, on this page we pull together a list of additional materials we've drawn together over the years. Most of it is relatively introductory, but enough to get you started.
Note that because these are part of other courses, "continue" links, and directory structures etc. may link to other courses. Adapt as needed. Anything of use in other courses is listed below, so we'd recommend coming back here to explore those.
Rather than introducing modelling frameworks in the practicals, we've gone for the approach of getting you to build something from the ground up. In the main this is because Frameworks, though ok in terms of introductory materials, get quite frustrating once you go beyond these. They're useful, but you spend quite a lot of time getting them to do what you think they should do. This wouldn't be time especially well spent given the limited time we have. However, it is useful to have a go at using them, and see if they are something that would be useful for you.
With this in mind, here's some introductory tutorials:
Other useful modelling techniques
Although we've been concentrating on Agent-Based Modelling in this course, there are lots of other modelling techniques that are of use, not least in combination with ABM. Here's some practicals for a few that might be of use:
Spatial Interaction Models
These a 'gravity' models that calculate flows between regions based on a supply and attractiveness. They're used for lots of things, from estimating road follows to positioning hospitals. The practicals were actually the practicals for the 2013 summer school, so they cover some similar territory, but with SIM rather than ABM. They use the Netbeans IDE. They were written by Kirk Harland, who has spent a good deal of time as a professional coder, so they are full of useful advice.
- Spatial Interaction Models I
- Spatial Interaction Models II
- File IO and Unit Testing
- Spatial Interaction Models III : GUI
- Spatial Interaction Models IV : Optimisation
- Spatial Interaction Models V : Refactoring
This is a technique for generating a population of individuals from statistical datasets and a sample of individuals. It essentially uses the sample of individuals to build up a population that matches a set of statistics. It can, at the same time, attach variables that aren't in your statistics for an area. For example, if you had census data, you could build a population that match that, but which also had income and newspaper readership levels as well. As such, they make a great starting point for traditional statistical analyses, but also for the base population of an ABM.
The following pdf tutorial walks you through running a Spatial Microsimulation using some software written, again, by Kirk Harland:
We often teach this as core Java material, but there's not room in this course. Nevertheless, if you want an overview of how networks work, and how to program with them, along with info on writing HTML etc., the following resources will get you started:
- Network lecture
- HTML/Webpage tutorial
- Webpage scraping tutorial
- XML lecture and XML, SVG, & Java practical
There are a bunch of general coding areas applicable to most scientific coding: data processing, visualisation, statistics, etc. While it would be impossible to cover all the available areas or libraries available, these materials give you some basic starting points to quickly get up and running.
- Databases/SQL lecture and JDBC Database IO practical
- XML lecture and XML, SVG, & Java practical
- Visualisation lecture and JChart / Processing practical
- Science libraries lecture and Integrating R practical
Computational Intelligence / Complexity /Networks
We thought some more general computational / Artificial Intelligence stuff might be of interest. The powerpoint materials below introduce some key themes. They don't go into huge detail, but they're enough to give a flavour, and there's references in the notes.
- Lecture on Tabu Optimisation
- Lecture on Bayesian Statistics and Networks
- Lecture on Fuzzy Sets and Fuzzy Logic
- Lecture on Neural Networks and Handout
- Lecture on Complexity and Handout
- Lecture on Networks and Handout
- Lecture on Network Flows / Spatial Interaction Models and Handout
- Lecture on Complex Networks and Handout
Most of the time you can get away with simple scripting in GIS like ArcGIS and QGIS using Python. If you've learnt Java, Python will be relative simple for you to pick up. Even simpler is ArcGIS's excellent 4th Generation drag-and-drop coding environment "ModelBuilder" (practical). However, if you want to do anything more complex with a GIS, you'll probably need a language like Java or C++. The following materials introduce programming with Java in ArcGIS. It's not for the fainthearted, it has to be said!
- Framework lecture and Addin practical
- Data access lecture and Toolbar practical
- Editing lecture and Window practical
In addition, when dealing with ArcGIS you occasionally come across legacy (~out of date) code hanging round that is based on the Arc Macro Language (AML). These Powerpoint/Word materials cover programming in that: