The purpose of these projects is to have you apply what you learn in the course to constructing a novel simulation of some neural system. The topics listed here and on the Nengo modelling page are not exclusive, feel free to propose your own topic.

The project is worth 20% of your final mark. People in 750 must do a "research project."

Another excellent source (other than below) for ideas is the Nengo Modelling Ideas repository. This repository has a bunch of advanced and simple modelling suggestions. You can use Nengo for your final project, so they are all doable. However, be sure to talk to me before starting, as some are not especially relevant for the course.


There are two main things needed for the project:

  1. build a simulation of a neurobiological system or a neurally implemented system
  2. evaluate its behaviour

You will produce a written report on your system using the steps outlined in chapter 1 of the book. This should be 10-20 pages, with lots of diagrams, graphs, and code. Please hand in all code and a self-contained project report, with your name in the file names. Please include an introduction with background information, well labelled figures and tables, and a discussion of any results.

Feel free to use the following template as a basis for the project report: Project Report Template PDF File
Contains some advice on how to structure the report, the formating, as well as some example uses of LaTeX.
Project Report Template Source ZIP File
Containing the LaTeX source code. This ZIP file can be directly uploaded to an online service souch as Overleaf.

To evaluate the behaviour of the system, the idea is to vary some aspect of the model and see how that affects its behaviour. To do this, you must:

  1. Define some measurable aspect of the system's behaviour (e.g. accuracy of representation, or number of errors, or speed of response); and
  2. Change an aspect of the model (e.g. number of neurons, or neuron model, or maximum firing rates, or post-synaptic time constants, etc., etc.), and see how that affects the measurement.

Note that because there is randomness in the creation of a neuron model, you will generally have to measure a model multiple times. All projects should use spiking neurons, and include dynamics in the constructed circuit (i.e. a purely feedforward network is not acceptable).

Example Research Projects

  1. (Pieter Medendorp, was at Doug Crawford's lab): Developing a simulation of how visual information is updated for eye and head motion, including how perceptual representations are transformed. Pieter and others have derived a simple set of differential equations to describe this updating. However, they do not have a neural level model of the circuit.
  2. (James Danckert): James' research focusses on parietal control of movement and lesions to these areas (resulting in hemineglect, for instance). Here are some questions he is interested in: How does the right inferior parietal cortex contribute to the spatial control of movements of either limb and how do left and right parietal cortices interact in movement control? Given that superior parietal lesions lead to unilateral motor deficits how do the right inferior and superior parietal regions communicate? Can modeling help disentangle the functional contributions of the superior temporal gyrus and inferior parietal cortex? Where in the brain is prism adaptation having its primary effect?
  3. Statistical inference: Higher-D repn; gaussian and non-gaussian estimates (Tennenbaum); implementing empirical bayes net (Karl Friston), modeling non-stationary signals, motor control (Dan Wolpert).
  4. Kalman filter: The Kalman filter (as discussed at the end of the book) has been proposed as a means of explaining the function of the hippocampus as well as visual areas. A neurally plausible implementation of this filter could have important consequences for our understanding of visual processing (for instance).
  5. Symbolic processing: There are good ways to implement symbolic processing using distributed representations. Specifically, tensor product and holographically reduced representations can be used to explain binding, and various logical operations. Looking at novel applications is usually pretty interesting.

Extended Example

To give an idea of what the process is like for doing this sort of project, let's consider this paper (Flexible control of mutual inhibition: a neural model of two-interval discrimination, Science, 2005).

Task: hear a tone, remember it, hear another tone, respond as to which of the two was higher pitch

Comparison image

Their model:

Comparison model

Their model's data:

Model data

Our approach:

  • System Description:
  • Sensory area stores ss, the current stimulus
  • PFC stores dd, the difference between the two stimuli (before the second stimulus is shown, it just stores the first stimulus)
  • Some other area stores xx, whether we're on the first (x=1x=1) or second (x=−1x=−1) sound
  • Connection from Sensory to PFC is d=s∗xd=s∗x
  • Connection from PFC to PFC is the identity function (to store information over time)
  • Design Specification:
  • All the neural details from the paper (firing rates, distributions of tuning)
  • Note that what they call S+S+ and S−S− are just two different encoders
  • They vary noise and see what happens
  • more errors when tones are close to each other
  • also vary connection weights (decreasing and increasing excitation and inhibition)
  • Other things we could do
  • how could we deal with tones of different lengths?
  • higher dimensional input (frequency and volume), with different questions being asked
  • different sensory systems using the same comparison system?
  • Now that we've done this translation, this model could be used by someone in the class as an extension project, not a research project