Introduction to Neural Coding and Computation


Eric Shea-Brown
325 Lewis Hall
Office hours: Thurs 9-10
Tony Bigelow
*New location* Health Sciences Building, 3rd floor Magnuson Health Sciences Building

Office hours:

Monday 1-2

Weds 3-5

Thurs 4-5

Friday 3-4

NOTE: Please bring a laptop to class for interactive work (see computing notes below).

Required text: "An Introductory Course in Computational Neuroscience" by Miller.

Recommended supplemental text: "Theoretical Neuroscience" by Abbott and Dayan.

Optional additional MATLAB reference: A student's guide to MATLAB for physical modeling. .pdf provided openly by authors Philip Nelson and Tom Dodson.

For those wanting another, sometimes more mathematical reference with all the derivations, Mathematics for Neuroscientists by Gabbiani and Cox is a wonderful place to head.

Codes and data for lectures, lab exercises, and HW

** See canvas site for HW, quizzes, and discussion board; the rest is here!**

Syllabus, supplemental slides, and readings

(1) Neural coding -- response statistics and signal decoding
  • MATLAB overview
  • Vectors, Matrices
  • Loops and logic
  • Random numbers + very basic stats
  • Plotting, visualization

READINGS: Miller: Sections 1.1, 1.2, 1.4.2, 1.4.3, 3.1, 3.3, and remainder of Ch. 3 (in that order)


Weeks 1-2:

Week 3-4:

  • Slideset on visual representations. Slideset on neural decoding and variability.
  • Rough handwritten notes on fano factor, balanced inputs, and maximum likelihood decoding from class.
  • Tutorial notes and practice exercises (not due) on maximum likelihood decoding
  • (2) Models of neuron spiking and feature "selection" and coding


    (3) Population coding: Modern large-scale recordings from cortex and beyond
    • Weeks 6-7
    • Introduction to Python
    • The Allen Brain Observatory

    (4) Synaptic dynamics and neural netowrks
    • Weeks 8-10
    • Synaptic models
    • Short-term synaptic plasticity
    • Facilitation, depression, and the Tsodyks-Markram model
    • The perceptron and deep(er) neural networks
    • Computational vision

    • Course structure and grading

      Course grades (80%) are based on several extensive Problem Sets handed out in class and due on select Mondays at the start of class. These Sets will combine programming, analytical work, and scientific reasoning. Additionally, very brief in-class quizzes will account for 20% of the grade (example quiz).

      Important formatting instructions: in your writeup please present all material for a given problem together -- e.g. under "Problem II" you'd have any and all code that you used for that problem, a written answer (i.e., "the dominant eigenvalue is 0.921"), plots that explain and back up your findings and answers, and any analysis. Then we'd go to the next problem. (Not stapling all code for all problems together as an appendix at the end.) You may find the publish(code.m) command in MATLAB helpful. You can print out your codes and plots and intermingle this with handwritten answers and explanations, or, again, some have found the MATLAB "publish" function handy. Late policy: In extenuating circumstances contact instructors.


      In this course, we will make extensive use of the Matlab ( The MathWorks, Inc) programming language.

      It is very highly recommended to buy a student edition of MATLAB for use on your own laptop, and to bring this laptop to class. If you are borrowing a laptop for class, you can access MATLAB online via a browser, after purchasing a student copy.

      There is also access to MATLAB at the ICL labs on campus. Octave presents a free alternative as well, but please note that we don't have the resources to support the quirks and incompatabilities that may well arise.

      We'll use Python later into the class. To aid your transition to Python:

      Python tutorial, courtesy of Higham and MacMillen:
      • download higham_macmillen_python_tutorial.ipynb from the link "Codes and data for lectures and lab exercises" above
      • RECOMMENDED: Install python via the anaconda distribution (give this a quick google, and you'll get to a clickable installer for your machine), and run this on your own laptop. This will open a “jupyter” ipython notebook.  Work through it, clicking in each cell and then hitting shift-click (or cell —> run from top menu).

      • OR the directions below give on way to to run remotely that may still work:
      • go to and make a new account
      • title the project "python tutorial," hit create project
      • click on the project name
      • upload higham_macmillen_python_tutorial.ipynb
      • click files at the top
      • click on higham_macmillen_python_tutorial.ipynb
      • This will open a “jupyter” ipython notebook.  Choose the python 2 sagemath kernel from the kernel menu. Then work through the notebook, clicking in each cell and then hitting shift-click (or cell —> run from top menu).