Course overview & procedure

Since a good amount of years, the majority of experimental work within Psychology (and most other disciplines) requires the application of computers. No matter if data acquisition or analyses, computer-aided research is almost impossible to avoid and if done right, can be incredible helpful and even enable new types of analyses to obtain insights that are otherwise inaccessible. Rather surprisingly to most folks, the efficient utilization of computers within research also includes programming or even requires it. Besides making research faster, more streamlined, efficient, stable and less prone to errors, some parts of the research workflow might actually require certain programming skills. This for example entails the generation of experiments and certain analyses of subsequently obtained data.

via GIPHY

While most thesis projects (undergrad and grad), PhD and other positions that actively work with data expect programming knowledge and/or experience, most programs however don’t enable students to gather this skill set as their curricula don’t include respective course. Obviously, we won’t be able to turn you into expert programmers within one semester, but this course is intended to provide you with a good basic understanding of and capabilities with the Python programming language. Specifically, this course should build the basis for further endeavors, setting you up with everything you need to know for that.

TL;DR

Within this course we will explore the Python programming language, specifically how it can be and why it should be utilized within experimental psychology. To do so, we will follow a “learning by doing” approach in a tripartite manner. Starting from a basic introduction into programming and python (Block I), we will evaluate how python can be used to run experiments (Block II) and analyze the resulting data (Block III). Thus, we actively seek out realistic examples and workflows, trying to solve problems with python. Along this way we will also talk about important adjacent topics such as computing environments and IDEs. For a rather precise outline of the course, please consult the respective section.

How to reach the folks in the front

via GIPHY

The contact information of the instructors are as follows:

  • Maren Wehrheim

  • Office hours:

  • E-mail: wehrheim at fias.uni-frankfurt.de

  • preferred mode of contact: usually online to save time and effort for everyone

and:

Gimme the details

Below you will find important details regarding the course summarized in a compact form. Please consult and familiarize yourself with the information presented there prior to and/or within the first few days of the course.

When and where

The course will run from October 28th, 2021 till February 10th, 2022, every Thursday from 4:15 - 5:45 PM CET at PEG 1 G 150, Theodor-W.-Adorno-Platz 6, 60323, Frankfurt am Main. Please note that there will be “winter holidays” from December 18th, 2021 - January 13th, 2022 and no classes will take place within this time period.


View Larger Map

What about the pandemic?

Until further notice, it is assumed that the course will take place in person. This is of course very likely to change given everything we experienced and learned in the last 1 1/2 years. Thus, the course is setup in a way that would allow both in person and virtual meetings. If you want to attend in person, please note that the 3G rule applies, meaning that you either have to show proof of full vaccination, that you have recovered from COVID-19 or provide a negative antigen test. Without any of these things you won’t be allowed within the University buildings and room where we will meet. Please note that might not be asked when you enter the building but definitely before you enter the room. If you feel uncomfortable doing a busy commute to sit in a room with several other people, please let me know and I’ll give my best to come up with a hybrid format. However, based on current regulations there won’t be any recordings. Just in case: yes, everyone should wear a mask at all times!

via GIPHY

Can I use my calculator?

For this class you will need frequent access to a computer that can run Python. None of the analyses that we will be doing will be very intensive, so this does not need to be a modern or “fast” computer. Still, it will need to be running a standard operating system like Windows, Mac OS X, or Linux. Unfortunately, tablets running mobile operating systems (iOS, Android) probably won’t work for this purpose. If this is an issue for you, please get in touch with the instructor as soon as possible so that we can try to figure out a solution. Regarding software and installation thereof, please check the next section.

via GIPHY

How do I get all the software and do I have to apply for a loan to get it?

Don’t worry at all. First, in order to help you get all the software required for the course, a comprehensive installation instruction was compiled. In a step-by-step manner it guides you through the installation process, covering several OS: windows, macos and linux. Second, everything will be completely free of charge as we will only use publicly available open-source software. Why? Because teaching students via proprietary software is just not fair and won’t help anyone: students have to obtain licenses or use those from the university (which usually doesn’t have enough for everyone), leading to tremendous problems regarding inequity now and in the future. Additionally, opens-source software can do everything, if not more, what proprietary software can and is furthermore usually better supported, tested and documented, creating a fantastic sense of community.

via GIPHY

Where is everything?

All course materials (lecture slides, lecture demo notebooks, lab notebooks, homework assignments, etc.) will be available on the course website, i.e. the one you’re looking at right now. Everything will be completely open and free to use, thus constituting an open educational resource you are free to explore, enhance and share. Thus, this website and all materials will also remain up for the entire duration of the course and beyond, ideally to end of the internet. The usage of this resource and the materials therein will be explained at the beginning and throughout the course.

via GIPHY

Syllabus and Text

As noted above, this page serves as the syllabus for this course, with the precise outline indicated in the respective section. This syllabus is subject to change; students who miss class are responsible for learning about any changes to the syllabus.

The course has several textbooks, all of which are online and free:

https://www.inferentialthinking.com/

https://jakevdp.github.io/PythonDataScienceHandbook/

Additional reading material might be added but will always be open & free with students being informed about any addition.

via GIPHY

How to get those credits?

As this is a practical lab course intended to provide you with an introduction to using python for experimental work via a mixture of guided and independent work, your assignments and tasks will be rather diverse and quite different from other modules. In order to successfully participate in this you will need to work on and hand in multiple things, including homework assignments, python scripts and analyses pipelines. While this sounds like a lot, it is intended to provide you with a holistic learning experience and the instructors with a way to assess your learning progress (somewhat) individually. The assignments and tasks aim to reflect these aspects and will entail working on research projects, evaluating that of others, reading project-related and general research-related literature and more. All of this will follow open science practices & FAIR principles, meaning all work will be completely open & maximized regarding reproducibility. The different parts and grading scheme are further outlined below.

Exams and Assignments

There will be a take-home, open book final exam at the end of the course. It will entail the generation of an interactive & reproducible publication, that is a data analysis pipeline which is documented and run within a jupyter notebook, as well as provided in a form that allows others to openly re-run everything. There will be no classical midterm exam. Instead, you will have to hand in a python script that runs an experiment of your choice and which was used to generate the data you will be presenting and analyzing in the final exam.

There will be 10 homework assignments. Assignments will be posted as the semester progresses after each meeting.

Grading

Your final grade will be based on a weighted combination of homework assignments, the experiment script, the final exam and class participation. Please note that there will prominent differences depending on the start date of your studies, i.e. the exam regulation under which you started the master program. I’m very sorry that there will be some imbalance, I’m also not a fan of this. However, we have to comply with the exam regulations unfortunately.

First semester, started winter term 21/22

You can choose if you want to only obtain a participation credit or a grade. Regarding the first, your grade for this module will be based on the second course next semester.

In order to obtain your participation credit you will have to provide the following:

  • homework assignments: There will be 10 homework assignments. You have to hand in at least 8 and thus can miss two in total.

  • Class participation: Showing up for class, demonstrating preparedness (i.e., doing the readings), contributing to class discussions, and doing the in-class labs.

If you want to obtain your grade for the module in this course, you will have to provide the following:

  • homework assignments (10%): There will be 10 homework assignments. Each assignment is worth 1% of your grade.

  • Experiment script (40%): There will be a take-home, open book exam roughly in the middle of the course as outlined above.

  • Final exam (40%): There will be a take-home, open book final exam as outlined above.

  • Class participation (10%): Showing up for class, demonstrating preparedness (i.e., doing the readings), contributing to class discussions, and doing the in-class labs.

Not first semester, started earlier than winter term 21/22

Both courses of the module will be graded with the final grade being the average of both.

In order to obtain your grade in this course, you will have to provide the following:

  • homework assignments: There will be 10 homework assignments. You have to hand in at least 8 and thus can miss two in total.

  • Experiment script (50%): There will be a take-home, open book exam roughly in the middle of the course as outlined above.

  • Final exam (50%): There will be a take-home, open book final exam as outlined above.

  • Class participation: Showing up for class, demonstrating preparedness (i.e., doing the readings), contributing to class discussions, and doing the in-class labs.

via GIPHY

Late Homework & Extension Policy

Homework assignments are due 5 days after a given class. Homework assignments must be turned in on the due date in order to receive full credit. Homework assignment turned in less than 1 week late will be accepted but the score will be penalized by 10%. Homework assignments later than 1 week will not be accepted.

Late homework assignments will also be accepted under exceptional circumstances (e.g., medical or family emergency) and at the discretion of the instructor (e.g. exceptional denotes a rare event) with no penalty. This policy allowing for exceptional circumstances is definitely a right, but courtesy to be used when needed and not abused. Should you encounter such circumstances, simply email assignment to instructor and note “late submission due to exceptional circumstances”. You do not need to provide any further justification or personally revealing information regarding the details.

Academic Honor Code

You are encouraged to discuss problem sets with classmates and work on them together, but certain written submissions must reflect your own, original work. If you worked with other students on a problem set, please include their names in a statement like “I worked on this homework with XX and YY” on the assignment. If in doubt, ask the instructor.

Notice about missed work due to religious holy days

Please notify the instructor of your pending absence at least fourteen days prior to the date of observance of a religious holy day. If you must miss a class, an examination, a work assignment, or a project in order to observe a religious holy day, I will give you an opportunity to complete the missed work within a reasonable time after the absence.

Student Accommodations

  • Please request a meeting as soon as possible to discuss any accommodations.

  • Please notify me as soon as possible if the material being presented in class is not accessible.

  • Please notify me if any of the physical space is difficult for you.

Code of conduct

This course has a Code of conduct. Please inform yourself about the specifics by carefully reading through the respective section.

via GIPHY

How to Get Your Question(s) Answered and/or Provide Feedback

It’s great that we have so many ways to communicate, but it can get tricky to figure out who to contact or where your question belongs or when to expect a response. These guidelines are to help you get your question answered as quickly as possible and to ensure that we’re able to get to everyone’s questions.

That said, to ensure that we’re respecting everyone’s time and thus will mainly answer questions between normal working hours (M-F 9AM-5PM). The instructors are also going to do their best to stick to these working hours. However, they know that’s not when you may be doing your work. So, please feel free to post messages whenever is best for you while knowing that if you post late at night or on a weekend, you may not get a response until the next weekday. As such, do your best not to wait until the last minute to ask a question.

If you have:

  • questions about course content - these are awesome! We want everyone to see them and have their questions answered too, so either use the hypothes.is plugin, the discord channel, the e-mail list or the GitHub repository.

  • a technical assignment question - come to office hours (or post to discord). Answering technical questions is often best accomplished ‘in person’ where we can discuss the question and talk through ideas. However, if that is not possible, post your question to discord. Be as specific as you can in the question you ask. And, for those answering, help your classmates as much as you can without just giving the answer. Help guide them, point them in a direction, provide pseudo code, but do not provide code that answers assignment questions.

  • been stuck on something for a while (>30min) and aren’t even really sure where to start - Programming can be frustrating and it may not always be obvious what is going wrong or why something isn’t working. That’s OK - we’ve all been there! IF you are stuck, you can and should reach out for help, even if you aren’t exactly sure what your specific question is. To determine when to reach out, consider the 2-hour rule. This rule states that if you are stuck, work on that problem for an hour. Then, take a 30 minute break and do something else. When you come back after your break, try for another 30 minutes or so to solve your problem. If you are still completely stuck, stop and contact us (office hours, post on discord). If you don’t have a specific question, include the information you have (what you’re stuck on, the code you’ve been trying that hasn’t been happening, and/or the error messages you’ve been getting).

  • questions about course logistics - first, check the overview & syllabus. If you can’t find the answer there, first ask a classmate. If still unsure, post on discord.

  • something super cool to share related to class or want to talk about a topic in further depth - feel free to post on discord, contact the instructors or come to office hours.

  • some feedback about the course you want to share anonymously - If you’ve been offended by an example in class, really liked or disliked a lesson, or wish there were something covered in class that wasn’t but would rather not share this publicly, etc., please fill out the anonymous Google Form*

*This form can be taken down at any time if it’s not being used for its intended purpose; however, you all will be notified should that happen.

Acknowledgements

Several parts of this section are directly taken or adapted from Alexander Huth’s Neuro Data Analysis in Python syllabus licensed under a BSD-3-Clause License and Shannon Ellis’ COGS 18: Introduction to Python.