Psych 750: Programming for Behavioral Data Science#

Welcome to Psych 750! This class is the entry point to UW-Madison’s Behavioral Data Science Masters Program. This course is designed for students with minimal programming experience, but the exercises and projects will scale, so even if you’ve programmed quite a bit, you will be challenged (and hopefully entertained!). Syllabus is here, but all the info you need about what’s happening each week will be on this site.

A unique aspect of this course is that I will be teaching programming fundamentals within a context of psychological experiments. Instead of doing arbitrary exercises, many of the exercises you’ll be doing will be in the service of implementing fully-operational experiments that create proper trial lists, display stimuli, collect responses, and write the results in a ready-to-analyze form. If you are a PhD student familiar with experimental design, you will learn some best practices. If you are a masters student in the data-science program and not planning on running your own studies, you will learn about common behavioral paradigms at the same time as you learn to code.

We will mostly use Python 3, but will take excursions into R for data-wrangling and to ensure that you are comfortable with other programming environments. In addition to teaching programming fundamentals, you’ll get experience with data wrangling, web scraping, numerical simulations, natural language processing, and get comfortable reviewing, using and adapting other people’s code.

Here are some things this class is designed to do:

  • Teach basic programming in the context of experimental psychological research and behavioral data science

  • Teach data-wrangling skills in R’s tidyverse environment

  • Write clean code that’s understandable to others

  • Improve your problem solving and debugging skills

  • Give you the confidence to learn more on your own

And a few things that it’s not designed to do:

  • Teach software engineering

  • Teach computer science theory (though we will take a few dips into it, as necessary)

  • Teach low-level aspects of programming, e.g., memory management

  • Teach statistics or machine learning (these are covered in other classes)