swcarpentry / python-novice-inflammation

Programming with Python
http://swcarpentry.github.io/python-novice-inflammation/
Other
300 stars 780 forks source link

Reordering this lesson #983

Open dsheehanMIT opened 2 years ago

dsheehanMIT commented 2 years ago

While I am only now trying to complete my Carpentries teaching certification, I have been involved in teaching the Plotting and Programming in Python workshop since late 2019, both as an instructor and as a helper. One issue that I have seen is the ordering of the contents, which us teaching Plotting and DataFrames before some of the fundamentals of Python. I have seen many students confounded by lists and more complex DataFrames, which are built on lists, when they confront them in the above sections, before they have been exposed to them in the later sections of the workshop. I recommend reordering this lesson plan, moving sections 7-9 (Reading Tabular Data into DataFrames, Panda DataFrames. and Plotting) to follow what is now section 15, Afternoon Coffee and before section 16, Writing Functions. At MIT, we are excited to introduce students to DataFrames and Plotting, but most students seem to struggle with the complexity of the above sections. Having more experience with Python and Lists before getting to DataFrames and Plotting would make learning the latter easier.

mwhamgenomics commented 2 years ago

I just taught this course yesterday and agree that it needs some re-ordering. I can understand wanting to hold off from loops and conditionals and give learners a useful library to work with early on, but it was a bit jarring to go from basic functionality in chapter 1 straight to numpy in chapter 2. Lists can definitely be moved to come before numpy. Couple of things I noticed:

Re. data frames, I don't know if it was a conscious decision to build this course around numpy rather than Pandas. Personally I'd be happy if it were overhauled to use Pandas (columns and rows are a bit more intuitive than axis=0), but that should probably be a separate discussion