Syllabus

This is a prototype syllabus for Intro to Programming for Behavioral Scientists that I designed as part of the Columbia Center for Teaching and Learning’s Innovative Course Design Seminar. The class has not yet been taught and I have not prepared curriculum for it, but I would like to offer it in the future!

My overarching goal in designing this syllabus was to lower barriers to student learning, and publicize that goal to students. I expect students to enter my class with no coding experience, and likely an aversion to math & programming topics. I want students to come away from the class believing that programming tools, when wielded properly, are key to producing strong psychological science, and that anyone can produce strong psychological science because anyone can program. While the syllabus definitely won’t achieve all of these goals on its own, it can help set an inclusive tone. I decided to format the syllabus as a website because I felt that would make it visually enticing and readable, and because the website format facilitates posting of R code lecture notes into the same site, allowing the site to be a one-stop reference shop for course info.

I tried to use an informal but informative tone while writing up course policies to keep those policies clear to all students, irrespective of English language background. In describing those policies, I tried to mention my rationale behind those policies where possible, so that students would understand that all policies, including those that might seem punitive (like not accepting late assignments without prior claiming of a deadline extension), are designed to support student learning.

I also paid special attention to crafting the following policies:

  • Grading: Encouraging students to improve their work based on feedback, and use tokens to manage their own deadline extension needs, no questions asked
  • Equipment: Reinforcing that students should not self-select out of the class for not having the “right” computer, or a sufficiently expensive one
  • Communication: Spelling out what students should include in help request emails to help them think through their code issue and help me identify their problem quickly

Syllabus website

Intro to Programming for Behavioral Scientists syllabus


Lesson plan

This is a lesson plan for the lab course associated with Research Methods in Psychology, taught in the Columbia psychology department. Approximately 13-17 students are typically enrolled in each lab section. This particular lesson is taught in week 6 of the 13-week semester.

When I TA’d this class in fall 2019, I expanded all lab outlines from basic bullet-point lists of procedural guidelines into full objective-driven lesson plans. I included this lesson plan to illustrate my lesson plan design style. I strive to make lesson plans comprehensive, like a cross between a textbook and a stage manager’s run sheet. In addition to a distinct learning objective, each lab module in the lesson has a timestamp with a suggested run time (and sub-timestamps for longer modules), as well as point-by-point instructions on how to run the module. My junior PhD student colleagues who TA’d the class after me reported using my lesson plans like a textbook, allowing them to quickly parse lab objectives, understand why activities were structured and timed the way they were, and glean procedural tips on how to run the activities. The lessons served not only to structure my own teaching, but also to train the TAs who came after me and to standardize instruction across their sections.


Mini-lecture video

This is a mini-lecture video for Science of Psychology: Explorations and Applications, a semi-flipped class taught in the Columbia psychology department. When we taught the class online in spring 2021, 29 students were enrolled in the class.

This video, which illustrates how the brain processes visual information, was assigned along with pre-class readings on visual perception. I included this lesson plan to illustrate how I work with the affordances offered by the teaching environment when creating learning content. I created this animated video to teach a highly visual topic (illustrating neuroanatomy and examples of perceptual information) using visual tools better suited to asynchronous video than synchronous lecture. Students enjoyed watching the video, found the concepts clear (as demonstrated in subsequent reading quizzes and in-class activities), and appreciated being able to pause and replay them at their own pace.


Problem set

This is an interactive R problem set for Intro to Programming in R, taught in the Columbia business school. Approximately 40-50 students are typically enrolled in the class. This particular assignment is assigned week 2 and due week 3 of the 6-week half-semester term.

When I TA’d this class in fall 2021, I rewrote weeks 1-3’s assignments to run as interactive browser-based R exercises using the learnr package, instead of their previous form as R Markdown assignments. The key difference between the new and old assignment format is that in their old R Markdown form, students needed to correctly specify a number of technically unrelated code commands (loading packages, document metadata parameters, etc) and correctly implement programming syntax (spelling function and variable names correctly, initializing variables before they are called later, etc.) in order for their documents to render for submission. If there was a syntax error in one answer, the entire document would not render, even if the other answers were correct. In previous semesters of the class, I found that students became frustrated and demoralized when they could not render their homework documents because of such syntax errors, especially when it turned out that one error blocked the entire document from rendering. I realized that familiarity with programming syntax principles was unreasonable to expect students to have mastered that early in the class (and honestly, likely to take many months, if not years, to truly master!). I wanted to rework the first three assignments to run using an engine that would ease their dependence on syntax.

There are two main benefits to the new assignment engine. First, each question runs individually, so a syntax error in one question does not block finishing the rest of the assignment. Second, package loading and other programming setup are handled under the hood, so students no longer have to specify those in order to submit their assignments. Later assignments in the term are still administered as R Markdown documents, so students are assessed on those skills after they have had more experience. However, by removing earlier assignments’ dependence on those skills, I brought the assignments more in line with the expected temporal progression toward course learning objectives.