Skip to content
This repository has been archived by the owner on Jan 26, 2021. It is now read-only.

Curriculum for beginner, intermediate & advanced tracks? #99

Closed
kmpaul opened this issue Jan 6, 2020 · 4 comments
Closed

Curriculum for beginner, intermediate & advanced tracks? #99

kmpaul opened this issue Jan 6, 2020 · 4 comments

Comments

@kmpaul
Copy link
Contributor

kmpaul commented Jan 6, 2020

We've talked about this a lot in the past, but I think we need to come to a conclusion about how to proceed on this. The issue here is that having a 2-3 day tutorial is not enough time to cover both beginner and intermediate topics. One thought for discussion:

Thought: Beginner-level participation looks very different than intermediate- or advanced-level participation. At the intermediate and advanced levels, participants can be expected to participate in a hackathon-like environment. At the beginner level, participants do not have the tools (yet) to do anything like a hackathon. This suggests the following:

  • Perhaps the goal of the beginner-level tutorial should be to get participants to the minimal level where they could contribute to and develop a hackathon project. This would cover git, GitHub, beginner Python, Jupyter Notebooks. This might be 1-2 days.
  • Perhaps the intermediate-level tutorial should focus on giving participants additional tools upon which they can find solutions via a hackathon project. This might be tools like intake, xarray, dask, etc. This might be 1-2 days.
  • Perhaps the advanced-level tutorial is just a hackathon. This should be 2-3 days.

All told, this is a curriculum spanning 4-7 days.

Thought: Experience trying to accommodate all levels of experience in a single tutorial does not seem to work as effectively as we would like. Namely, participants who start as beginners rarely are able to participate at the intermediate or advanced level in the same tutorial. So, it seems to me that people need time to develop their knowledge and let the concepts "sink in." This might suggest the following:

  • Perhaps the beginner-level tutorial precedes the intermediate-level tutorial by at least 1 week but possibly 2-4 weeks.
  • Perhaps the intermediate and advanced tutorials can be adjacent, such that 2-3 days are spend on technical topics followed by 2-3 days of hackathon.
  • Advanced-level participants would not need to show up for the intermediate topics section.
  • Advanced-level participants can be tapped as instructors.

This would allow for a 2-day beginner tutorial that might be followed by a week-long tutorial + hackathon about 2 weeks later.

Questions to Answer:

  • What do people think about this approach?
  • What would need to change with the material we have to make this possible?
@kmpaul kmpaul closed this as completed Jan 6, 2020
@kmpaul kmpaul reopened this Jan 6, 2020
@xdev-bot xdev-bot closed this as completed Jan 6, 2020
@kmpaul kmpaul reopened this Jan 6, 2020
@andersy005
Copy link
Contributor

I recently came across a great curriculum for an introduction to Python course and I thought I would share it here. My hope is that we can use the list below in conjunction with the official Python tutorial to come up with our own curriculum.

  • Data structures
    • Interactive Python
    • Variables — dynamic and strict typing
    • Blocks and indentation
    • Writing and executing programs in files
    • Conditionals
    • Basic types: None, boolean, numeric, string, list, tuple, dictionary, set
    • Loops
    • Sequences
    • Reading from and writing to files
    • Creating and working with complex data structures
  • Functions and functional programming
    • What is a function? Functions as objects
    • Writing functions
    • Return values, returning sequences
    • Function parameters
    • Variable function parameters with *args and **kwargs
    • Variable scopes in Python
    • Functional programming introduction (map, filter, etc...)
    • List comprehensions
    • Customizing sort by passing function arguments
    • Modules and packages
  • Objects
    • What is an object?
    • Classes and instances
    • Constructors and destructors
    • Instance attributes
    • Getters and setters
    • Class attributes
    • Attribute scoping rules
    • Inheritance
    • Exceptions

@andersy005
Copy link
Contributor

andersy005 commented Feb 19, 2020

A few days ago, someone put in a FOIA request to the NSA for their Python training materials and they got back a 400-page PDF of their training course. The PDF resides here: https://nsa.sfo2.digitaloceanspaces.com/comp3321.pdf

The very first line of the pdf:

So, you're teaching the Python class. What have you gotten yourself into? You should probably take a few moments (or possibly a few days) to reconsider the life choices that have put you into this position.
😅

Since nbgallery is mentioned a lot in this printout, I presume that this is likely the same training material we heard about during the nbgallery talk a few weeks ago.

Having skimmed it.. This is a quality guide. It appears to be comprehensive - it's clearly meant for someone self-studying or who's very self-motivated.

Hopefully, this is going to be a useful reference for our curriculum.

Cc @jukent

@kmpaul
Copy link
Contributor Author

kmpaul commented Feb 19, 2020

Nice!

@jukent
Copy link
Contributor

jukent commented Feb 19, 2020

Thanks @andersy005 I will take a closer look at this. I am currently creating a draft of a notebook that covers python topics without using any packages.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants