---
# System prepended metadata

title: 'Planning: Gentle Hands-On Introduction to Python Programming'
tags: [python-course]

---

---
tags: python-course
---

# Planning: Gentle Hands-On Introduction to Python Programming

## Video recording Planning

### 1. Introduction

- [ ] Script
- [ ] Recording

### 2. Video topic breakdown

1. Introduction
   1. Overview of the course
   1. What is programming?
   2. Program text / code
   3. Running a program
   4. Python and terminology
   
1. Hedy
   1. Joining the class
   1. How to use Hedy
   1. Chapters and exercises

1. Types and Values
   1. What are values?
   1. What are types?
   1. Why think about types
   1. How to write type annotations 
        > Maybe is obvious, but explain what is type annotations and why it is useful

        > This is covered in points 2, and 3 above. [name=James]
   1. Find out the type of a value
   1. Type conversion functions

1. Functions and Programs
   1. Computation and programming
   1. What are functions?
   1. Constructing programs
   1. Some functions you already know
   1. Applying functions
   1. Defining functions
   1. Arguments
   1. Help!
   1. Indentation

1. Testing
   1. Correctness
   1. What is testing?
   1. Writing simple tests
   1. Why test?

   > I believe from this part would better to do all in person instead of video, becaus it gets some level of complexity.
> I strongly disagree. _All_ theory should be covered in videos that students can watch (and re-watch, slow down, skip, etc) in their own time. This _does not_ preclude referencing additional material (which we do) and going over theory again and answering questions synchronously (Jitsi; in person) where necessary -- which is the whole point of the corresponding synchronous sessions. For the specific case of "testing": I don't believe it is more complex/difficult than the other material. In fact I don't think it has ever been brought up as a difficult point either in class or in the ananymous feedback. [name=James]

1. Decision making
   1. FizzBuzz
   1. `if`
   1. `else` and `elif`

1. Collections
   1. Lists of things
   1. `len()`
   1. Indexing and slicing
   1. Other operations on lists
   
1. Repeating work
   1. Humans are bad at repetative work
   1. `for`
   1. `range()`

1. Dictionaries
   1. Look up! Associating data
   1. A new project
   1. Looping over dictionaries

1. Input / Output: Fetching and storing data
   1. Climate data
   1. The danger of I/O
   1. The context manager pattern
   1. Exploring the global climate data
   1. Saving data for later
   1. Exploring the country climate data

1. A taste of plotting
   1. Third-party packages
   1. Load cleaned climate data
   1. `bar` plots
   1. Axis labels and title
   1. Line plots
   1. Data smoothing
   1. The final plots
   
> Doing this changes, I believe we should think of dedicating sometime for the projects in class, that people give more attention to it nad we can help more.

> I'm not really sure what you're saying here. [name=James]

----------------------
2024 idea (2nd semester)

- 2 sessions in parallel
    - In person
        - on site 1/2 day
        - few meeting
        - They can join for doubts in the afternoon
    - Self-paced
        - online
        - Q&A under request and 1/2 day in person (same day as the in person sessioon)