Teaching plan for the course unit


Close imatge de maquetació




General information


Course unit name: Computational Models and Programming Techniques

Course unit code: 568387

Academic year: 2015-2016

Coordinator: Matthias Sven Keil

Department: Department of Basic Psychology

Credits: 5

Single program: S



Estimated learning time

Total number of hours 125


Face-to-face learning activities



-  Lecture with practical component



Supervised project


Independent learning




Competences to be gained during study


To have the capacity to apply the acquired knowledge and problem solving skills in new or not well known environments in wider or multidisciplinary contexts related to their area of study.


To be able to integrate knowledge and face the complexity of formulating judgements from information that, being incomplete or limited, includes reflections about the social and ethical responsibilities linked to the application of this knowledge and judgements.


To be able to apply information and communication technologies with different goals and purposes (relationship with other professionals, get information, knowledge diffusion…)


To be able to search for and evaluate scientific evidence to support statements and professional interventions.


To show abilities in the critical evaluation of a scientific research in behaviour and cognition





Learning objectives


Referring to knowledge

  • Learning how to program in Matlab

  • Learning how to implement computational models in Matlab

  • Mathematical techniques for implementation and simulations

  • Interpreting simulation results


Learning a “toolbox” for computational modeling (from single neurons to networks)


Applied mathematics and numerical methods


Tuning models to the desired behavior


Referring to abilities, skills

Organization and structuring of programing projects


Verifying model predictions


Assessing the results of modeling papers


Learning the limitations of specific computational methods and models


Referring to attitudes, values and norms

Awaking sleeping math skills and having fun with doing math



Teaching blocks


1. Introduction into Programming with Matlab


  • defining functions and data types

  • loops and plotting

  • array indexing

  • compiling histograms

  • correlation, cross-correlation, and auto-correlation

  • a spike generator with Poisson statistics

2. How to Model Neurons: The Basics


  • From biophysics to mathematics: Neurons and membrane potential

  • The neuron as RC-circuit

  • Synaptic input, synaptic weights, reversal potentials, low-pass filtering, threshold, divisive inhibition, shunting inhibition

  • steady state solution, divisive inhibition, and normalization

  • Simulation of a firing rate model (constant input, temporally varying input)

  • Activation functions, neuronal oscillator

3. An Example of Modeling a Single Neuron


  • The Lobula Giant Movement Detector of the locust

  • Collision detection, optical variables, nonlinear inputs, nonlinear operations

  • Phenomenological model: The “eta”-function (explicit multiplication; logarithmic encoding)

  • Biophysical model: The “psi”-function (emergent multiplication; power law; shunting inhibition)

4. How to Model Receptive Fields with Matlab


  • matrices, matrix operations, and matrix indexing

  • visualization of matrices

  • efficient programming without loops

  • convolution and Fourier transforms

  • modeling of the receptive fields of the retina and V1

  • modeling brightness perception

5. Review of Single Neuron Models


  • The classical one: Hodgekin-Huxley

  • Biophysical details versus computational efficiency

  • Spike patterns: tonic, phasic, bursting and such

  • Reproducibility of spike patterns and noise

  • Coding: population codes, latency codes

  • Analysis of spike trains (Fourier, correlation, …)

  • The Blue Brain Project

6. Predictive Coding in the Inner Retina


  • structure of the retina and its relation to image statistics

  • Classical view: Center-surround receptive fields of retinal ganglion cells

  • Predictive coding in amacrine cells and stimulation pattern

  • feedforward inhibition, feedback inhibition, Hebbian learning

7. The Importance of Single Spikes: Latency and Rank order Codes


  • rate coding versus temporal coding in rapid scene perception

  • the retina as encoder

  • the cortex as decoder

  • how to compute with inactivity

8. Connecting to each other I: Topology and Network Dynamics


  • Connection matrices

  • Internet, social networks, traffic networks, neural networks

  • Scale free networks versus random networks

  • Network activity, oscillations, synchrony

  • Fault tolerance; hubs; degree distribution

9. Connecting to each other II: Balanced Networks and Chaos


  • what is chaos?

  • sensory input and gain control by feedforward inhibition

  • (bi-)stability of resting and depolarized states

  • influence of slow or fast synaptic input

  • short term memory

10. Connecting to each other III: Dynamic Connections


  • self-organization of complexity: sandpiles, avalanches and criticality

  • the power law signature of criticality

  • a dynamic connectivity matrix: depression, facilitation, and STDP

  • neuronal avalanches and neuronal delay

  • scale-free networks by self-organization and Hebbian learning



Teaching methods and general organization


The classes are highly interactive ("learning by doing"), and normally proceed according to the following outline:

First, the biological context (e.g. a paper or a specific topic) is presented.

Second, the mathematical methods that are necessary for modeling the respective topic are gently introduced.

Finally, the students will go ahead with implementing the complete model (or parts of it), and carrying out simulations with different (sets of) parameters, and interpret their simulation results.

The homework usually builds up on the class context and typically consists of specific questions which the students have to resolve by programming corresponding computer simulations. The homework will be briefly discussed at the beginning of the next class.  Each student should give his or her best in doing the home assignments, as they are an excellent way for learning & deepening teaching matters, and examination training.

For each topic, each student’s mathematical background will taken into account.  This means that the class offers a high degree of flexibility with respect to teaching topics.  The guiding idea is not to just pass indiscriminately through all teaching topics, but rather to advance to the next topic if and only if each student has developed a sufficient grasp.  In this way, the students will gather motivation and finally enjoy doing programming and mathematics.



Official assessment of learning outcomes


Students have to do some home assignments each week.  They serve as a preparation for the examination (see below), and will influence the final grade only in the following exceptional situations (to be decided by the professor in each case):
1. If a student failed in the examination, but performed well in the home assignments, he or she can nevertheless pass the examination if the average of homework grades and the examination grade surpasses the minimum qualification.
2. In order to get a "honor degree" (matricula de honor), the results of the home assignments will be considered as well.


Examination-based assessment

The evaluation consists of a questionnaire about mathematics, about Matlab programming, and finally some assignments similar to the homework. The purpose of the examination is to evaluate in how far the students understood the mathematical methods, models, and the programs. Furthermore, the test also shows in how far the students have understood to evaluate simulation results.