Open dvalters opened 5 years ago
Thanks for the detailed feedback!! This is extremely helpful, and thoughts from others who have taught the lesson would be much appreciated.
We would welcome PRs for any of these issues..
For #5, I'm not a huge fan of the matplotlib API & imperative style personally and #405 has been a place to discuss a switch to plotnine / ggplot2's grammar of graphics style of plotting. I would like to move #405 forward but haven't had the bandwidth to deal with it lately due to the start of the semester and numerous other projects tugging away my free time..
Hello. I'd just thought I'd share a couple of comments/feedback from students after delivering this lesson while it is still fresh in my mind.
General feedback
The lesson was generally well received, with students liking the balance of teaching:exercises (And I like delivering this lesson as there is less talking for me to do, and more interaction.)
Feedback from one of the students was: (I taught the SC git novice course afterwards):
Understandable, as the git one has been around longer. But some concepts and syntax are introduced without explanation before they are covered in detail (Lists, Conditionals), and a reordering of certain lessons may help?
I like this lesson personally from an instructor point of view, and prefer it to the Numpy heavy, "Programming with Python" for our particular audience, who often deal with tabular data.
Comments on specific episodes or issues.
e.g. Episode Variables, Ex 1 (Also comments are introduced here without explanation.)
As a general comment, students did not seem to like 'thought' exercises as much as ones where they could type some code (particularly if the exercise would have easily lent itself to a working example.
Lists introduced in Episode 9, Plotting, but without explanation (as sample data for a matplotlib plot.). Previously students have only used square-bracket notation as indexing or slicing notation (
[...,...]
)Plotting. Matplotlib within Jupyter notebook. Some students were puzzled here with the behaviour of the Jupyter notebook and whether the calls to
plt.something
would remember the previous state of the plot. I had to digress here to explain a bit about the way the figure object in matplotlib will remember it's previous state in certain circumstances (If calls are run within the same cell for example.), and later on how it 'remembered' the previousplt
calls when looping throught datasets.Episode 11, Lists. Lists are finally introduced, but the Python 'gotcha' regarding the way lists point to objects, rather than copies, (Covered in #370) came up and surprised students. It required a bit of digression and some on the fly demoing of how lists exhibit this behaviour, beyond the brief exercise "Copying (or not)" in this episode.
Episode 12. Loops. Students were confused particularly by exercise "Identifying Variable Name Errors". Conditional/control statements are introduced without much explanation here, and before the episode that covers them. Some students also (reasonably) tried to solve this by defining the undefined variable
a
.Episode 18 Style. Students were a bit baffled by the "String Machine" exercise, the code being (intentionally) difficult to read, but also a few remarked it seemed to be a bit 'abstract' (It didn't really appear to do much other than move some characters around... I think is what they were getting at.)
I'm happy to work on some of these issues and submit specific issues or PRs for things not already covered in existing issues, just thought I would write down this feedback for reference.