---
# System prepended metadata

title: Intermediate Python Programming

---

[slack-join]: https://join.slack.com/t/emblbio-it/shared_invite/zt-f86u3u9y-JbdfyVlYLonZNoIEbpEbxQ
[slack-channel]: https://emblbio-it.slack.com/archives/C015F8HTH63


# Intermediate Python Programming
July 6-10, 2020
EMBL Bio-IT Project & de.NBI
 
Platform: Zoom - [click here for meeting address](https://embl-de.zoom.us/j/96775485343?pwd=QXBpNUxJNGEzdGloeExlWmhaSGlTdz09)

Zoom password is `pymediate`

This page: https://hackmd.io/gRM3ah2qSbmZ19IHPtwiww

Lead Instructors: 
Wasiu Akanni, Renato Alves, Julian Bauer, Toby Hodges, Kimberly Meechan, Nikolaos Papadopoulos, Jelle Scholtalbers

This course takes a self-directed, team-based, instructor-supported, virtual approach. Learners will work collaboraively in teams of 3 to 4, with each person working through [the lesson materials](#Course-Material) on their own computers at their own pace. Teammates will work together to understand the lesson materials and instructors will be available to provide guidance and answer questions when needed. For more details, see the [learner guildelines](#Learner-guildelines) below.

# Table of contents
[TOC]

# Schedule

## Daily schedule (CEST)

|||
| -- | -- |
|09:00| Introduction (all days) and overview of challenges from yesterday (days 2-5)|
|09:30| Self-directed learning in small groups|
|10:45| Break|
|11:00| Self-directed learning in small groups|
|12:00| Daily debrief and feedback|
|12:30| End

## Topics

| Day | Chapter |
| - | - |
| Day 1 | [Syntax Elements & Powerful Functions](https://grp-bio-it-workshops.embl-community.io/intermediate-python/01-syntax/index.html)|
| Day 2 | [Working with Data (NumPy & pandas)](https://grp-bio-it-workshops.embl-community.io/intermediate-python/02-data/index.html) 1|
| Day 3 | [Working with Data (NumPy & pandas)](https://grp-bio-it-workshops.embl-community.io/intermediate-python/02-data/index.html) 2|
| Day 4 | [Parsing Command Line Arguments](https://grp-bio-it-workshops.embl-community.io/intermediate-python/04-argparse/index.html) & [Coding Style](https://grp-bio-it-workshops.embl-community.io/intermediate-python/05-style/index.html)|
| Day 5 | Catch-Up / Bring Your Own Data / [Coding Challenges](https://grp-bio-it-workshops.embl-community.io/intermediate-python/06-challenges/index.html)|

# System set up instructions

See [this page](https://grp-bio-it-workshops.embl-community.io/intermediate-python/setup/index.html)

# Course Material

**Your lesson material is [here](https://grp-bio-it-workshops.embl-community.io/intermediate-python/index.html).**

## Other resources:

[We'll populate this list throughout the week.]

- 
- 
- 

# Learner guildelines

## How do we communicate?

We have three ways to communicate in this course:
1. **Zoom chat** & screen sharing: this is how you will communicate with the others in your breakout room (your "teammates" or "roommates")
Note: Your zoom chat will not be saved.
3. [**Slack** (link)][slack-join] this is a dedicated channel for this course. Here, you can ask instructors to join your breakout room to provide help. Course-wide discussion will also occur here.
4. **HackMD** (this current page): here you get all the course info, relevant links etc.


(There is an 'ask for help' button in Zoom, but this is easy for us to miss, so please use the [**Slack channel**][slack-channel])

## I'm in my breakout room. Now what?

1. Greet your teammates and do the [team establishment tasks](#Team-establishment-task)
2. Open Jupyter Lab/Notebook, or your favourite other interactive development environment (IDE). If you have set-up issues, ask for help in the [Slack][slack-channel].
3. Open the relevant webpages.
4. Start reading the lesson materials.
5. When you see code, type it into your IDE and run it (Try to avoid copy/pasting. By re-typing the code you'll be reinforcing your learning.)
6. When you see a "Challenge" section, try to figure out the answer _before checking the solution_
7. **If you have a question or get an error**
    a. **First, ask your teammates**. Un-mute yourself or type in the chat to ask if anyone has reached the same point in the material you have. 
    - If yes, either explain your problem vocally or share your screen to get help. *This will also help your teammates! Explaing or answering questions is a great way to solidify understanding.* 
    - If you're ahead of your teammates and stuck, post in the [Slack][slack-channel] to get help from an instructor.
    b. **If your team cannot answer the question**, have one teammate post in the [Slack][slack-channel] that you would like help. An instructor will join your room and work out the problem with you all as a team (or individually if appropriate). 

We expect you will all have errors and questions - this is a staple of programming :) Take advantage of this session format and ask for help early and often from your teammates and the instructors.

## Team establishment task

Icebreaker? What's an "icebreaker"? No, no, this is definitely not an "icebreaker" ;)

Take turns in your team, beginning alphabetically by first name, to each do the following:
1. Turn on your microphone and say hello 
2. Turn on your camera and wave hello (optional)
3. Share your screen (not optional - making sure this works is necessary for later)
4. Tell your teammates
    - Your name
    - Your lab, group or other affiliation
    - Where you are right now
6. Answer one of the following:
    - Approximately how many tabs do you have open in your internet browser? How does this make you feel?
    - What’s a recent great TV show or movie you watched?
    - What’s your favourite sandwich and why?
7. Pick the next person to introduce themselves

[slack][slack]
[link text][reference]

