Syllabus
PSY 0110 (Undergraduate) · PSY 0210 (Graduate) · Fall 2026
Instructor
Prof. Heather L. Urry
Psychology Building, Rm 126
Drop-in hours: Thursdays, 3:30–4:30 PM
Course details
Tuesdays
Sept 8 – Dec 8, 2026
4:30–7:00 PM
Psychology 109
Contact or meet with me
Post questions of general interest (e.g., course policies, homework help) on Piazza. Reserve email for anything personal.
Course Description
Coding for Psychology is a hands-on introduction to the two programming languages that power much of modern psychological science: Python, for building and running behavioral experiments, and R, for wrangling, visualizing, and analyzing the data those experiments produce. No prior programming experience is required or assumed; one prior course in statistics is assumed.
This course deliberately covers just enough Python to build and run a working PsychoPy task, and just enough R to wrangle, visualize, and report on the data it produces. There’s a lot of genuinely valuable material that we won’t have time for this semester, including object-oriented programming, working with web APIs and online studies, and writing general-purpose scripts. If you want to go further, I encourage you to self-study chapters in Think Python, Data Skills for Reproducible Research, and R for Data Science that we won’t cover.
Across thirteen weekly meetings, you’ll move from installing your first tools to using PsychoPy — which is built on Python — to understand and modify an existing two-condition task, a classic Stroop task. You’ll then use R and the tidyverse to wrangle, visualize, and write up data collected from a peer who runs your modified Stroop task. Finally, you’ll design a novel task entirely your own, simulate data for it, and make a repository (aka “repo”) — task, data, and report — ready to be made public on GitHub.
This course is cross-listed: PSY 0110 for undergraduates and PSY 0210 for graduate students. Both cohorts will attend the same 150-minute sessions and work through the same in-class agenda every week. Where the experiences diverge is in the homework; the semester’s seven assignments carry an additional component for PSY 0210 students, reflecting their more advanced career stage (see Assignments).
Learning Objectives
By the end of the semester, you will be able to:
- Build and run a two-condition psychology experiment in PsychoPy (Builder and Coder), from a working skeleton through custom scoring logic.
- Pilot your own experiment, then wrangle and visualize the resulting data using R and the tidyverse (including cleaning messy real-world data and finding the tools you need in R’s documentation).
- Practice the mechanics of reproducible, open research: version-controlled code, a private GitHub repository (created from the course template), and a Quarto/apaquarto report with numbers computed inline rather than typed by hand.
- Design, build, and publish an original piece of work that includes your task, simulated data, and your report in a publication-ready GitHub repo.
Equity, Diversity, & Inclusion
I want students from all backgrounds and perspectives to be well-served by this course. I view the diversity of students as a strength, and I intend to present materials and activities that are respectful of the many ways we all differ from one another — age, gender identity, gender expression, sexuality, disability, socioeconomic status, ethnicity, race, nationality, religion, and culture. Everyone belongs in this space!
Course Materials
All materials are free and openly licensed so put your wallet away. 🆓 😁
Readings
- Think Python, 3rd edition (Allen B. Downey) — our primary text for Python fundamentals in Part I.
- Data Skills for Reproducible Research (Lisa DeBruine, Dale Barr, & Emily Nordmann; PsyTeachR) — our primary text for R/tidyverse fundamentals in Parts II and III.
Reference Materials
- R for Data Science, 2nd edition (Hadley Wickham, Mine Çetinkaya-Rundel, & Garrett Grolemund) — an optional reference if you’d like a second explanation of wrangling and visualizing data in R.
- Official PsychoPy documentation — our reference for building and troubleshooting your PsychoPy experiment.
- Official Quarto documentation — our reference for creating and troubleshooting your reproducible report.
Software & Accounts
All software and accounts are also free. 🆓 Bring your laptop to every class, including Class 1.
To be created before Class 1:
- A Google account, for Google Colab
To be created or installed on your laptop during Class 1:
- A GitHub account
- Your own private repo from the course’s GitHub template (inside our course organization)
- PsychoPy, standalone installer; the one piece of software you’ll need admin rights for, since it bundles its own copy of Python.
- R
- RStudio Desktop
- Quarto
We’ll cover how and when these elements will be used in class.
Course Schedule
The course will unfold in three parts:
- Part I — Task Programming in PsychoPy and Python (Classes 1–5)
- Part II — Wrangling & Reporting Data in R (Classes 6–9)
- Part III — Simulating Data & Building Your Own Task (Classes 10–13)
For details, see the following: Schedule · Content · Assignments.
Assignments
Seven homeworks, two quizzes, a three-part final project, and participation in class make up the semester’s graded coursework. There’s also one optional extra-credit exercise. For full assignment descriptions, see Assignments.
Grace Period Policy
Life happens. If something unusual, uncontrollable, or extreme keeps you from turning a homework or your final project in on time, you can rely on an automatic 48-hour grace period (excluding weekends) without asking permission and with no late penalty. This grace period does not apply to quizzes; for the quiz make-up policy, see Assignments. If you need longer than 48 hours, email me before the grace period runs out and I’m glad to work out a longer extension, typically up to a week, depending on the circumstances. Extensions can’t stretch on forever, though, and certainly not beyond the time I need to meet the university’s grade-submission deadline; work turned in past the last extension we’ve agreed on earns 0 points.
Grading Weights
| Assignment | % of Final Grade |
|---|---|
| Homework 1 | 5% |
| Homework 2 | 5% |
| Homework 3 | 5% |
| Homework 4 | 5% |
| Homework 5 | 5% |
| Homework 6 | 5% |
| Homework 7 | 5% |
| Quiz 1 | 7.5% |
| Quiz 2 | 7.5% |
| Final Project — Task | 20% |
| Final Project — Report | 15% |
| Final Project — Publication | 5% |
| Participation & In-Class Engagement | 10% |
| Total | 100% |
There is also one optional, extra-credit opportunity worth 1%, to be added to your Total. See Assignments.
Letter Grade Scale
We’ll use the following scale, without rounding, to determine final course letter grades:
| Grade | Range | Grade | Range | |
|---|---|---|---|---|
| A+ | 97–100% | C+ | 77–<80% | |
| A | 93–<97% | C | 73–<77% | |
| A- | 90–<93% | C- | 70–<73% | |
| B+ | 87–<90% | D+ | 67–<70% | |
| B | 83–<87% | D | 63–<67% | |
| B- | 80–<83% | D- | 60–<63% | |
| F | <60% |
My Suggestions for You / My Commitments to You
Success in a hands-on coding course is a two-way street. For us all to get the most out of this class, here’s what I suggest as far as your approach to the semester and also my commitments to you.
| My Suggestions for You | My Commitments to You |
|---|---|
| Install and verify your tools before Class 1 ends, and certainly before Class 2 meets. A broken local environment will hamper your progress and enjoyment. | I will build a course you can complete with zero prior programming experience, one step at a time. |
| Commit and push your work to GitHub often, not just at the deadline. You’ll feel less stressed plus small, frequent commits are good coding practice. | I will begin and end class on time, and protect build/workshop time from turning into extensive lecture time. |
| When your code throws an error, read the error message before asking for help; more often than not it’s already telling you what’s wrong. | I will circulate actively during class when you’re coding; I’m here for you! |
| Bring a laptop that can actually run PsychoPy and RStudio locally. This isn’t a course you can do entirely from a tablet or phone. | I will give you working, real example files — not just slides — for every new tool or component we introduce. |
| Start each homework with enough lead time to get stuck once, unstick yourself, and still submit before the deadline. | I will give feedback on homeworks promptly enough that it’s still useful for the next one. |
| Ask questions. If one of you is confused about a for loop or a dplyr verb, several others in the room probably are too. | I will keep this course entirely free. You don’t have to pay for anything. (Well, you still have to pay tuition… can’t help you there. 💸) |
Resources
See the full Resources page for academic support, disability accommodations, mental health, religious accommodations, communication norms, and the academic integrity & AI tools policy.