Course details

  • Tuesday/Thursday
  • September 15–April 22, 2020
  • 1:30–2:50 PM
  • Zoom Room

Contacting me

E-mail is the best way to get in contact with me. I will try to respond to all course-related e-mails within 24 hours (really), but also remember that life can be busy and chaotic for everyone (including me!), so if I don’t respond to your e-mail right away, don’t worry!

Course objectives

By the end of this course, you will (1) have an understanding of formal frameworks used to characterize human learning, (2) understand how these are related to methods used in machine learning, (3) be able to implement these theories in working code, and (4) be able to apply these methods to new problems.

Specifically, you’ll be able to:

  1. Articulate a formal definition of what it means to “learn,” and why this can be different across different settings
  2. Describe (some) of what is known empirically about how humans learn
  3. Implement formal models of human learning from several different frameworks in the R programming language
  4. Explain how these models relate to models developed in machine learning
  5. Characterize how “good” a model is and the ways in which it is better or worse than other models of the same phenomenon.

Important pep talk!

I promise you can succeed in this class.

Learning R can be difficult at first—it’s like learning a new language, just like Spanish, French, or Chinese. Hadley Wickham—the chief data scientist at RStudio and the author of some amazing R packages you’ll be using like ggplot2made this wise observation:

It’s easy when you start out programming to get really frustrated and think, “Oh it’s me, I’m really stupid,” or, “I’m not made out to program.” But, that is absolutely not the case. Everyone gets frustrated. I still get frustrated occasionally when writing R code. It’s just a natural part of programming. So, it happens to everyone and gets less and less over time. Don’t blame yourself. Just take a break, do something fun, and then come back and try again later.

Even experienced programmers and evaluators find themselves bashing their heads against seemingly intractable errors. If you’re finding yourself taking way too long hitting your head against a wall and not understanding, take a break, talk to classmates, e-mail me, etc.

Course structure

Because the goal for the course is for you to both learn theory and be able to apply it in practice, you’ll be learning through three primary modes: (1) short lectures, (2) hands-on programming assignments, and (3) seminar discussions with your classmates.

Throughout each of the units, I will present lectures to familiarize you with the broad strokes of the important ideas, and to scaffold your ability to learn from the papers you will read and the assignments you will complete. I will generally lecture more at the start of the course than at the end. All lectures will be available online after class is finished.


For the first unit, I will lead the seminar discussions that are interspersed with the lectures in order to set the tone for the course and to establish my expectations for the goals of seminar and present one way of trying to accomplish them. After that, students will be asked to lead the seminars in pairs or small groups. Before you lead a seminar, I’ll meet with you help you plan a successful discussion.

Regardless of whether you are leading discussion, I expect everyone in the class to be an active participant–you’ll have a lot more fun, and learn a whole lot more if you engage with your classmates’ ideas while we are all together. I know that this is hard to do, especially in the context of a remote class, and that you may be subject to circumstances that make it particularly challenging. For this reason, we will also have a Piazza forum where you can join in the discussion asynchronously. If you are unable to attend seminar, please make sure you contribute significantly here.


To help seed seminar discussion, you will be asked to submit a short commentary to the Piazza forum. Please submit your commentary by midnight day before seminar

A commentary might take one of the following forms:

  1. Disagreement. Mention a claim that doesn’t seem right to you.

  2. Extension. Describe how the work could be usefully extended. Is there another way that the model could be tested? How might the model be revised to handle a broader range of cognitive phenomena?

  3. Criticism. List at least one flaw or limitation with the approach presented.

  4. Connection. Draw a connection between the reading and something else that you know about (e.g. something that we’ve discussed in a previous class, or that you learned about elsewhere).

Each commentary should not be long—one paragraph is typical. You can write up to half a page, but writing three thoughtful sentences is sufficient.

The presenters for the day will be reading your commentaries before class, so feel free to add a postscript with questions or thoughts about what you’d like to discuss during class. For example, if the reading made some point that was confusing but that you’d like to understand, include a note to this effect and we’ll try to address it during class.


Each unit will have a two hands-on programming assignments where you will implement the theoretical ideas we are discussing. The best way to develop an intuition for how models work and what they can (and can’t) do is to build them yourself. You are welcome to work on these together with other students, but you must turn in your own work

Final Project

As a capstone for the class, you will complete a final project. Your project can take one of several forms. You can develop a new model of some aspect of cognition, run a small experiment to test an existing computational model, implement an existing model and apply it to a new data set, or write a paper on some topic related to the class. Working on an existing research project is fine as long as this project matches the spirit of the class. You are encouraged to work in pairs, but working on your own is also fine.

The project includes four components:

  1. Proposal. Submit no more than one page describing the question you plan to explore and the method you will use. Your proposal is due on October 30.

  2. Check in. You will meet with me during the week of November 9 to discuss how your project is going.

  3. Presentation. At the end of the semester you will briefly present your project. Your presentation should be about 10 minutes long, and you are encouraged to use visual aids (e.g. slides, figures drawn on the zoom board).

  4. Writeup.

Course materials

All of the materials you will need for this course–both the readings and the software will be made freely available to you. Any articles, book chapters, or other materials I will ask you to read will be linked on the course website from the related week. Each will be accompanied by a short reading guide that will help you to know what to focus on when you read.

R and RStudio

You will do all of your programming in the open source (and free!) programming language R. You will use RStudio as the main program to access R. Think of R as an engine and RStudio as a car dashboard—R handles all of the computation, while RStudio provides a nice interface for running R code.


In order to access and submit the assignments for the course, we will use GitHub Classroom. GitHub is a cloud-based version control system that is extremely popular in both academia and industry. You will likely find it more challenging to use at first than canvas, but you’ll learn skills that will generalize beyond the course.

Online help

Programming can be difficult. Computers are stupid and little errors in your code can cause hours of headache (even if you’ve been doing this stuff for years!).

In addition to asking me and your classmates for help, there are tons of online resources to help you with this. One of the most important is StackOverflow (a Q&A site with hundreds of thousands of answers to all sorts of programming questions).

Course policies

Be nice. Be honest. Try your best. Don’t cheat.

We will also follow the Carnegie Mellon University code of conduct.

Course evaluation and evolution

This syllabus reflects a plan for the semester. Deviations may become necessary as the semester progresses.

Because this is a new class, there will be inevitable bumps along the way. Please be patient with me as I get everything ironed out!

I want to make this the best class I can, and I’d love your help to help to do that. To facilitate this, I have a couple requests:

  1. In the class link next to every class, you will find a link to an anonymous Google Form with a few quick questions asking about the clearest and most confusing things from that day. Please fill this out regularly. It will be hard to remember, but it’s extraordinarily helpful for me.

  2. At some point in the middle of the semester, someone from CMU’s Eberly Center for Teaching Excellence & Educational Innovation will come and run a 25 minute Early course feedback focus group, where I’ll step out and you’ll all talk to them about the class. They’ll give me anonymized feedback about what is going well, and what I should do to help you learn better.

Also, please take the time to fill out the official CMU course evaluation at the end of the semester!

Office hours

Please watch this video:

Office hours are set times dedicated to all of you. This means that I will be sitting on Zoom (wistfully) waiting for you to come by with whatever questions you have. This is the best and easiest way to find me outside of class and the best chance for discussing class material and concerns. Please come by!

Outside of regularly scheduled office hours, send me an email and I will be very happy to meet with you.

This can be a difficult class. Do not suffer in silence! Come talk to me!

Accommodations for Students with Disabilities:

If you have a disability and are registered with the Office of Disability Resources, I encourage you to use their online system to notify me of your accommodations and discuss your needs with me as early in the semester as possible. I will work with you to ensure that accommodations are provided as appropriate. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources, I encourage you to contact them.

Respect in the Classroom

It is my intent to present materials and activities that are respectful to the diverse backgrounds and perspectives of students in the classroom. You may feel free to let me know ways to improve the effectiveness of the course for you personally or for other students or student groups. If you feel uncomfortable discussing this with your instructor, you may voice your concerns to the Chair of the Department of Psychology Diversity and Inclusion (D&I) Committee, Jessica Cantlon. Dr. Cantlon and the D&I Committee are available to hear your concerns related to respect for diversity for any class you are taking in the Department of Psychology.

Health & Well-Being

Take care of yourself. Maintaining a healthy lifestyle via good nutrition, exercise, rest, and relaxation will help you achieve your goals and cope with stress. All of us benefit from support during times of struggle. There are many helpful resources available, so please reach out to us if you need help connecting with them on campus or virtually. Asking for support sooner rather than later is almost always helpful. If you or anyone you know experiences academic stress, difficult life events, or feelings of anxiety or depression, please seek support. Counseling and Psychological Services (CaPS) is available online and at 412-268-2922 or via. Consider reaching out to a friend, faculty member, or family member you trust for assistance with getting connected to the support that can help.

Academic honesty

Cheating and plagiarism are defined in the CMU Student Handbook, and include (1) submitting work that is not your own for assignments or exams; (2) copying ideas, words, or graphics from a published or unpublished source without appropriate citation; (3) submitting or using falsified data; and (4) submitting the same work for credit in two courses without prior consent of both instructors. Any student who is found cheating or plagiarizing on any work for this course will receive a failing grade for that work. Further action may be taken if necessary, including a report to the dean.

Assignments and grades

Descriptions for all of the assignments will be posted on the on the assignments page.

Assignment Points Percent
Homeworks (6 x 12) 72 49%
Participation 15 10%
Commentaries 15 10%
Project presentation 15 10%
Final project 30 20%
Total 147
Grade Range Grade Range
A 93–100% C 73–76%
A− 90–92% C− 70–72%
B+ 87–89% D+ 67–69%
B 83–86% D 63–66%
B− 80–82% D− 60–62%
C+ 77–79% F < 60%