Course information

Autumn 2015, Tuesdays 9:30am-11:30am
Room: CCSR 4205
Grading basis: pass/fail
Office Hours updated at start of each week

Target audience

This course is intended for graduate students in bioscience programs who want to develop programming skills using the MATLAB computing environment. No previous programming experience is required. Unregistered postdocs, RAs, etc. are welcome if space permits.

Course summary

Data analysis, visualization, and basic modeling techniques commonly encountered in biosciences research. Fundamentals of the MATLAB computing environment, programming and debugging, data import/export, data structures, plotting, image analysis, statistical tools. Examples and assignments will draw from a range of topics applicable to bioscience research, e.g. frequency analysis, genetic data mining, ion channel kinetics, neural spike rasters and spike-triggered averages, cell counting in fluorescence images, regression, PCA, and stochastic simulation. Assignments will be practical in nature and will demonstrate how to implement specific analyses that a biosciences student is likely to encounter. However, the skills taught are broadly applicable and specific knowledge of the examples covered is not necessary.


Coursework will consist of a weekly programming assignment that will be due at the beginning of the next class. Typically, the assignment description will be accompanied by helpful starter code. After an assignment is due, an example solution will be provided. We encourage you to read over the sample solution even if you were able to get everything to work on your own, as it will show best practices and useful extra tricks, tips, and MATLAB functions that we might not cover in class. A final project will allow students to work on a topic of their own choosing.


  • Week 1 (Tuesday 9/22/2015) Introduction to MATLAB

    • MATLAB desktop, file types, functions, vectors, and variables

    • Assignment 1: MATLAB exploration

  • Week 2 (Tuesday 9/29/2015) Data types

    • Numeric arrays, indexing, strings, cell arrays, and structures

    • Assignment 2: Data manipulation and plotting with electrophysiology data

  • Week 3 (Tuesday 10/6/2015) Control Flow

    • Logicals, control flow (for and while loops), branching (if statements)

    • Assignment 3: FRET image analysis with looped DNA kinetics

  • Week 4 (Tuesday 10/13/2015) Plotting

    • 2D and 3D graphs, objects and handles, subplots, displaying images

    • Assignment 4: Data visualization

  • Week 5 (Tuesday 10/20/2015) Programming Best Practices

    • Tips on writing clean, readable, efficient, modular, and efficient code (style, functions, efficiency)

    • Debugging

    • Assignment 5: Improving an Event-Triggered Average Analysis

  • Week 6 (Tuesday 10/27/2015) Advanced data structures

    • Cell arrays, structures

    • Interactive programs

    • Assignment 6: Neural spike rasters and event histograms

  • Week 7 (Tuesday 11/3/2015) Probability and Statistics

    • Basic statistics, parametric and nonparametric hypothesis tests

    • Assignment 7: Hypothesis testing

  • Week 8 (11/10/2015) Signal and Image Processing

    • Smoothing, filtering, Fourier analysis

    • Filtering images, extracting regions of interest

    • Assignment 8: Frequency and Image analysis

  • Week 9 (Tuesday 11/17/2015) Regression and model fitting

    • Linear regression, curve fitting, bootstrapping, PCA

    • Assignment 9: Regression & Final project proposal

  • Tuesday 11/24/2015 NO CLASS (Thanksgiving Break)

  • Week 10 (Tuesday 12/1/2015) Introduction to Advanced MATLAB Features

    • We’ll poll the class for topics of interest

    • Specialized toolboxes

    • Matlab Real-time for data acquisition and experiment control

    • Psychtoolbox for behavioral experiments?

  • Tuesday 12/9/2015 Final Assignment Due