Course prerequisites#

Ain’t no one-week school good enough#

The reality of winter schools like these is that they really don’t teach attending folks all they need to know to subsequently apply the respective content sufficiently, not to mention the training aspect. At best, winter schoolss provide folks with the materials, overview and pointers necessary to continue and actually dive into the taught topics (the truth hurts sometimes, doesn’t it?). Another important aspect that is frequently overlooked is that attendees usually need a certain set of skills and experience to really benefit from a given winter school, especially considering the diverse backgrounds folks have. We want to be fair, open and welcoming to everyone and while we know that we unfortunately can’t achieve and assume a truly similar level of training and experience across all participants, we can at least do our best to work towards certain opportunities. That being said, winter schoolss like the one you’re currently looking at, by default (should) require basic to advanced programming skills and knowledge about file handling/input/output, signal processing, statistics and linear algebra (vectors much?). Tough stuff, eh?

logo
https://c.tenor.com/MsuBYU4-fI0AAAAM/confused-math.gif

Let there be pre-winter schools training#

So what can we actually do to provide the entire attending gang with the chance to get up to speed for the winter schools and ideally beyond? Unfortunately, we can’t hold pre-winter-school winter schools and various consultations. Instead we decided to utilize the fantastic jupyter-python-open science world and build upon the framework of jupyter books employed to host this winter schools and its materials. In other words, we assembled a stack of short tutorials that cover most of the aspects mentioned above. As the rest of the content, they are jupyter notebooks that can be run interactively (via the little rocket on the top right) or locally (via the download button on the top right) and mix theoretical background with actual code so that folks can familiarize themselves with the corresponding topics. Important: we know that everyone has a lot of stuff to do and that not everyone will be able to go through the stuff we collected here. Y’all: don’t worry about that, it’s chilli-milli. We will try our best to bring the core points across, even if you don’t have a substantial amount of experience. Please just make sure that you ask all the questions that might pop up, the same holds true for any problems you might encounter. Long story short, here are the topics organized from basic to advanced skills and concepts.

GUIs vs CLIs#

How do you interact with your computer? In general, you as a user provide some input that contains a task that your computer should perform in order to obtain a desired outcome. However, there are different ways you can approach this, each with advantages and disadvantages. More precisely this refers to the distinction between GUIs and CLIs. Within this part of the session we’ll discuss both a bit and also talk about different options to utilize programming languages.

Objectives 📍#

  • Learn about different ways of interacting with computers

  • GUI, CLI, IDEs

  • test different options on your machines

  • Ask and answer questions

  • Have a great time

Materials 📓#

Introduction to the (unix) command line: bash#

Objectives 📍#

  • learn basic and efficient usage of the shell for various tasks

    • navigating directories

    • file handling: copy, paste, create, delete

  • Ask and answer questions

  • Have a great time

Materials 📓#

Please download the example dataset provided here.

Please see the rendered version of the jupyter notebook Introduction to the (unix) command line: bash in the ToC on the left.

You can either run the respective commands in your terminal or in the Jupyter Notebook via following the steps outlined here and then selecting/opening the materials/prerequisites/intro_to_shell.ipynb file.

Introduction to Computational Environments#

You might think: “why do we have to talk about computing environments & reproducibility? I just want to code.”. Fair enough but as hinted at during the introduction, knowing a bit more about this thing called the “computer” and how your code is run will be tremendously helpful and important going further. The sooner you can utilize the respective tools/resources the better as quite a bit, actually all, of your coding will depend on it. We usually trust our machines to do what we ask them to do and while quite often we get the desired output, there’s a fair chance that the same task will lead to a different outcome on a different OS, using a different version, etc. . However, what outcomes do we “trust” and why does it converge? All of this relates to “reproducibility” and within this section we’ll briefly explore underlying problems and potential (partial) solutions via python.

Objectives 📍#

  • get to know problems wrt computational analysis & reproducibility

  • learn about virtualization and its different options

  • experiment with python virtualization options

  • Ask and answer questions

  • Have a great time

Materials 📓#

Introduction to Python#

The big moment is finally here: after spending quite a bit of time exploring important concepts adjacent to/around python, with the intention to provide a holistic understanding and situate components accordingly, we will start exploring python itself. Within the first block of programming with python we will go through basics of the python programming language, its central aspects and building blocks, as well as its benefits generally speaking and within the context of research.

Objectives 📍#

  • learn basic and efficient usage of the python programming language

    • what is python & how to utilize it

    • building blocks of & operations in python

  • Ask and answer questions

  • Have a great time

Materials 📓#

Please see the rendered version of the jupyter notebook Introduction to Python in the ToC on the left.

You can either run the respective commands in your ipython terminal or in the Jupyter Notebook via following the steps outlined here and then selecting/opening the materials/prerequisites/intro_to_python.ipynb file.

Hakuna matata#

We can’t stress this enough: it’s all ok, don’t let the imposter syndrome get the better of you.

logo
https://c.tenor.com/yfDp5K_0_LMAAAAC/you-got-this-thumbs-up.gif