Course overview & procedure
Contents
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
.
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 IDE
s. For a rather precise outline of the course, please consult the respective section.
How to reach the folks in the front¶
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:
Office hours: by arrangement via this webpage
E-mail:
Herholz at psych.uni-frankfurt.de
preferred mode of contact: usually online to save time and effort for everyone
How to address one another?
When contacting me, please refrain from using titles when addressing me and super formal language, just “Peer” is fine and it’s way more important that the content is respectful, fair and constructive (I aim for the same when I reply). However, please let me know if you have a preferred way of interacting with other folks, including how you would liked to be addressed, your pronouns and the level of formality.
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!
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.
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.
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.
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.
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 be10 homework assignments
. You have to hand in at least8
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 be10 homework assignments
. Eachassignment
is worth1%
of your grade.Experiment script
(40%): There will be atake-home, open book exam
roughly in the middle of the course as outlined above.Final exam
(40%): There will be atake-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 be10 homework assignments
. You have to hand in at least8
and thus can miss two in total.Experiment script
(50%): There will be atake-home, open book exam
roughly in the middle of the course as outlined above.Final exam
(50%): There will be atake-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.
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.
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, thee-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 todiscord
. 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.