Spring 2014

Location: Wilson 316
Day/Time: Mon 1:10-4:00

Course Overview

This course provides an overview of the how-tos and the whys of computational modeling. This course is not intended to be a general survey of computational models of human cognition. Instead, we will talk about what models are, why we use models, how to recognize good modeling versus bad modeling, how to implement a model, how to fit a model to data, how to evaluate the fit of a model, how to compare and contrast competing models, how to evaluate special cases of a model, and how to develop and test new models. We will talk about a number of real-world practical issues involved in implementing models. We will primarily talk about models that account for response probabilities, response times, and neurophysiology in a few selected domains. We will talk about why we develop and test models, when it is appropriate and inappropriate to test models, what kinds of choices are made when developing a model, what are the best ways to use modeling most effectively, and what we can learn from models. The techniques and issues we talk about apply to all kinds of modeling, from very abstract cognitive models to micro-level neural models.

By taking this course, you will be able to implement models, simulate models, generate model predictions, fit models to data, and contrast competing models. This course will also give you the tools and background to take a more critical eye to modeling work you might read in the literature. We’ll cover a variety of practical issues like using MATLAB for modeling, random number generators, Monte Carlo simulations, using the high-performance computing facility at ACCRE, speeding up simulations, using bootstrapping techniques, and simulating differential equations.

Course Web Site

This course web site will archive copies of the syllabus, homework assignments, homework solutions, and course readings.

On the Course Schedule, there are links to a number of readings. The readings are password protected so that they can only be accessed by people in the course. Both the login and password are p318.


All the examples and assignments will be in MATLAB. If you have never programmed in MATLAB before, you will need to learn at least the basics of MATLAB programming before taking the course. If you have some proficiency in C, Visual BASIC, or another high-level programming language, you should find it fairly easy to learn MATLAB. If you have never programmed at all before, you will probably need to do some work before taking this course (or work particularly hard in the first few weeks of the course to learn Matlab). We will all try to learn the nuances and tricks of MATLAB programming from each other, but this will not be a course in how to program in MATLAB (I teach another course on that). Many people will have access to MATLAB in their laboratory. If you don’t have access to MATLAB, let me know, and I’ll check on how students can buy into the inexpensive Vanderbilt MATLAB site license.

You will need to have the Optimization, Global Optimization, Statistics, Image Processing, Signal Processing, and Parallel Computing toolboxes installed.

Course Requirements

Class Participation (10%) : I want people to show up, discuss, disagree, and ask questions. If you’re going to miss class, please let me know beforehand. Please do the readings for the week before class.

Homework Assignments (60%) : There will be a homework assignment most weeks. The assignments will usually involve implementing something in MATLAB. I may give some the skeleton code ahead of time, so the programming should not be overly excessive. This is like a statistics course – there’s just no substitute for doing. I have no problem whatsoever with people talking about how to do the assignments and helping each other out, just so long as everyone does their own assignment.

Final Project (30%) : The final project gives you the opportunity to do something related to the course that’s also relevant to your own research. The most obvious thing to do would be to implement a model in MATLAB (or R or C or Python) and test its predictions or fit it to some data. You could also develop and test a new model. Or you can systematically compare different ways of simulating a model or fitting a model to data. We’ll talk more about the project a bit later in the semester. You might start to think about what modeling you might want to do for the project. Feel free to talk with me. Talk to your advisor. I want you to do something that will be useful for your own research. We’ll set aside some time at the end of the semester for some short presentations of what you did. I want you to turn in the modeling results (e.g., equations, figures, graphs, and tables) along with a brief description of what you did; something around a couple pages would be fine. The goal is the implement/test a model using the techniques we’ve discussed in class, to do something with a model, not to write a paper about the model.

People Sitting In : I encourage graduate students finished with their coursework as well as postdoctoral fellows to sit in on the course. I encourage you to do most of the readings and the homework assignments. I do hope that the level of in-class questions and discussion by folks sitting in will be commensurate with their level of outside-class effort. Any graduate students sitting in should officially audit the course (see Lydia Dumas for information on how to do that).

Course Readings

The primary text for this course is:

Lewandowski, S., & Farrell, S. (2011). Computational Modeling in Cognition: Principles and Practices. Sage Publishing.

I also recommend the following book as a supplemental text (a couple chapters may be assigned as primary reading):

Busemeyer, J.R., & Diederich, A. (2010). Cognitive Modeling. Sage Publishing.

In addition, there will be other readings that will be distributed as PDF files available on the web site. I will also add supplemental readings to the web site throughout the semester.